1

OpenCV를 사용하여이 이미지를 바로 잡을 수있는 방법이 있습니까? 나는 다른 변형을 사용하여 그것을 알아 내고 있었지만 그것을 얻을 수 없다.OpenCV Python으로 이미지 교정

Image

여기 내 코드입니다 :

rows, cols, h = img.shape 

M = np.float32([[1, 0, 100], [0, 1, 50]]) 

그리고 나는 아핀 변환을 적용합니다.

dst = cv2.warpAffine(roi, M, (cols, rows)) 

여전히 직선화 할 이미지의 원하는 출력을 얻을 수 없습니다. 거의 한 시간 동안 내 머리를 긁적. 누구든지 내가 도와 줄 수 있니?

+0

회전 각도를 알고 있거나 rect의 경계점을 알고있는 경우에만 가능합니다. – ZdaR

+0

경계점은 무엇을 의미합니까? – whaangbuu

+0

도서 경계를 경계하는 분홍색 상자 – ZdaR

답변

2

이전 게시물을 기억하십니까? 이 답변은 그것에 기초합니다.

그래서 책 주위에 테두리 상자의 4 개의 모서리 점을 얻은 다음이를 호모 그래피 함수에 입력했습니다.

코드 :

#---- 4 corner points of the bounding box 
pts_src = np.array([[17.0,0.0], [77.0,5.0], [0.0, 552.0],[53.0, 552.0]]) 

#---- 4 corner points of the black image you want to impose it on 
pts_dst = np.array([[0.0,0.0],[77.0, 0.0],[ 0.0,552.0],[77.0, 552.0]]) 

#---- forming the black image of specific size 
im_dst = np.zeros((552, 77, 3), np.uint8) 

#---- Framing the homography matrix 
h, status = cv2.findHomography(pts_src, pts_dst) 

#---- transforming the image bound in the rectangle to straighten 
im_out = cv2.warpPerspective(im, h, (im_dst.shape[1],im_dst.shape[0])) 
cv2.imwrite("im_out.jpg", im_out) 

enter image description here

이 책의 주위에 경계 상자 윤곽을 가지고 있기 때문에, 그 4 포인트를 pts_src 어레이에 공급해야합니다.

+0

아 ~ 이런 ...이 시나리오에서는 적용 할 수 없다고 생각하지는 않습니다. 고마워 친구. 단 하나의 질문입니다. 어떻게이 가치를 얻었습니까? 'pts_src = np.array ([[17.0,0.0], [77.0,5.0], [77.0,5.0], [0.0, 552.0], [53.0, 552.0]])'pts_dst = np.array [[[0.0.0.0] , [77.0, 0.0], [0.0,552.0], [77.0, 552.0])' 'im_dst = np.zeros ((552, 77, 3), np.uint8)' – whaangbuu

+0

나는 수동으로 경계 상자의 모서리. 가지고있는 윤곽에서이 점을 얻는 것뿐입니다. –

+0

윤곽에서 점을 얻으려면 어떻게해야합니까? 인쇄 할 때 컬렉션을 반환하기 때문에. 그리고 나는 그것을 어디서부터 시작해야할지 모른다. 희망을 제안 할 수 있기를 바랍니다. 매우 감사. – whaangbuu