image.Point 구조체가 있었으면 좋았을 텐데 그 대신 픽셀 기반이었습니다.이미지에서 특정 픽셀의 형상을 얻는 방법 .RGBA 또는 다른 유형?
나는 30032300 크기 (경계)로 을로드하고 디코딩한다고합니다. image.Point
또는 fixed.Point26_6
에 이미지 중간의 정확한 좌표를 얻으려면 어떻게해야합니까?
image.Point 구조체가 있었으면 좋았을 텐데 그 대신 픽셀 기반이었습니다.이미지에서 특정 픽셀의 형상을 얻는 방법 .RGBA 또는 다른 유형?
나는 30032300 크기 (경계)로 을로드하고 디코딩한다고합니다. image.Point
또는 fixed.Point26_6
에 이미지 중간의 정확한 좌표를 얻으려면 어떻게해야합니까?
image.RGBA
은 일반적인 image.Image
인터페이스의 구체적인 구현입니다. (일반적으로는하지만)
// Bounds returns the domain for which At can return non-zero color.
// The bounds do not necessarily contain the point (0, 0).
Bounds() Rectangle
이미지의 왼쪽 상단 모서리가 영점 (0, 0)
에하지 않을 수도 있음을 유의해야 할 :
는 그것은 Image.Bounds()
방법이있다.
그래서 이미지의 형상이 image.Rectangle
의 값으로 당신에게 손입니다 :
type Rectangle struct {
Min, Max Point
}
이 ((0, 0)
을하지 않을 수 있습니다 상단 왼쪽) 일반적인 경우를 처리하려면, 당신은 모두 Min
계정 필요 및 Max
포인트는 중심점을 계산합니다 :
cx := (r.Min.X + r.Max.X)/2
cy := (r.Min.Y + r.Max.Y)/2
또 다른 해결책은 Rectangle.Dx()
및 Rectangle.Dy()
을 사용하는 것입니다
cx := r.Min.X + r.Dx()/2
cy := r.Min.Y + r.Dy()/2
그리고 struct 유형은 image.Point
입니다.
cp := image.Point{(r.Min.X + r.Max.X)/2, (r.Min.Y + r.Max.Y)/2}
또는 : image.Point
의 값으로 중심점을 얻으려면
r := image.Rect(0, 0, 300, 100)
fmt.Println(r)
cp := image.Point{(r.Min.X + r.Max.X)/2, (r.Min.Y + r.Max.Y)/2}
fmt.Println(cp)
cp = image.Point{r.Min.X + r.Dx()/2, r.Min.Y + r.Dy()/2}
fmt.Println(cp)
출력합니다 (Go Playground에 그것을 시도) :
cp := image.Point{r.Min.X + r.Dx()/2, r.Min.Y + r.Dy()/2}
이 예제를 참조하십시오
(0,0)-(300,100)
(150,50)
(150,50)
감사합니다. 내 혼란은 내 코드 내의 함수가 내 int 'x','y'를'fixed.Int26_6'으로 변환했기 때문입니다. 나는 물건을 작동시키기 위해 왼쪽'x << 6'을 이동해야했습니다. – goofle
당신이 무엇인지 분명하지 않습니다. 스케이팅. 이미지의 중심점의 좌표 (x, y)를 원하십니까? 또는 센터의 색상? – icza
@icza 좌표를 원합니다. – goofle