python 네 개의 좌표 점 은 그림 영역 최소 외 접 사각형 을 재단 합 니 다.
구체 적 으로 이 문 제 를 처리 하 는 사고방식 은 다음 과 같다.
1 이 구역 의 최소 외 접 사각형 을 구하 고 외 접 사각형 의 네 개의 점 의 좌표 와 회전 각 도 를 얻는다.
rect = cv2.minAreaRect(self.contours[0])#rect [( x , y ),( , ), ]
box_origin = cv2.boxPoints(rect)#box_origin [(x0,y0),(x1,y1),(x2,y2),(x3,y3)]
2.원 이미 지 를 회전 시 키 고 회전 각 도 는 최소 외 접 사각형 의 각도 입 니 다.회전 후 목표 구역 이 이미지 밖 에 있 는 것 을 방지 하기 때문에 저 는 이미지 크기 를 원래 의 2 배로 확대 합 니 다.
M = cv2.getRotationMatrix2D(rect[0],rect[2],1)
dst = cv2.warpAffine(rotateimg,M,(2*rotateimg.shape[0],2*rotateimg.shape[1]))
3 원래 네 개의 점 의 좌 표를 비 추어 회전 후의 구역 에 비 추어 새로운 네 개의 점 의 좌 표를 얻는다.
#
def Nrotate(angle,valuex,valuey,pointx,pointy):
angle = (angle/180)*math.pi
valuex = np.array(valuex)
valuey = np.array(valuey)
nRotatex = (valuex-pointx)*math.cos(angle) - (valuey-pointy)*math.sin(angle) + pointx
nRotatey = (valuex-pointx)*math.sin(angle) + (valuey-pointy)*math.cos(angle) + pointy
return (nRotatex, nRotatey)
#
def Srotate(angle,valuex,valuey,pointx,pointy):
angle = (angle/180)*math.pi
valuex = np.array(valuex)
valuey = np.array(valuey)
sRotatex = (valuex-pointx)*math.cos(angle) + (valuey-pointy)*math.sin(angle) + pointx
sRotatey = (valuey-pointy)*math.cos(angle) - (valuex-pointx)*math.sin(angle) + pointy
return (sRotatex,sRotatey)
#
def rotatecordiate(angle,rectboxs,pointx,pointy):
output = []
for rectbox in rectboxs:
if angle>0:
output.append(Srotate(angle,rectbox[0],rectbox[1],pointx,pointy))
else:
output.append(Nrotate(-angle,rectbox[0],rectbox[1],pointx,pointy))
return output
box = rotatecordiate(rect[2],box_origin,rect[0][0],rect[0][1])
4.네 개의 점 좌 표를 이용 하여 재단 한다.예 를 들 어 2 중의 그림 에서 보 듯 이 그림 은 회전 을 거 친 후에 이미 그림 과 회전 각 이 없 는 이미지 로 변 했다.실험 을 통 해 회전 한 좌 표를 관찰 한 후에 작은 차이 가 있 지만 오 차 는 이미 1000 점,심지어 만 점 정도 에 있 기 때문에 우리 가 재단 하여 만 든 영향 은 무시 할 수 있다.
def imagecrop(image,box):
xs = [x[1] for x in box]
ys = [x[0] for x in box]
print(xs)
print(min(xs),max(xs),min(ys),max(ys))
cropimage = image[min(xs):max(xs),min(ys):max(ys)]
print(cropimage.shape)
cv2.imwrite('cropimage.png',cropimage)
return cropimage
imagecrop(dst,np.int0(box))
여기에 4 개의 좌표 점 을 이용 하여 그림 을 재단 하 는 작업 이 완료 되 었 습 니 다.
여기 서 python 네 개의 좌표 점 이 그림 구역 의 최소 외 접 사각형 을 재단 하 는 것 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 그림 좌표 재단 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 저 를 많이 응원 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.