2012-02-19 4 views
1

OpenCV 매트를 지정된 각도만큼 회전시키는 코드를 작성했습니다. 다음 코드를 사용하여 매트 중심을 성공적으로 회전 시켰지만 이미지가 사각형이 아니기 때문에 회전 된 이미지의 중심이 새 이미지의 중심이 아니며 이미지의 일부가 새로운 매트.회전 된 OpenCV 매트를 변환하는 방법

Point2f src_center(source.cols/2.0F, source.rows/2.0F); 
Mat rot_mat = getRotationMatrix2D(src_center, angle, 1.0); 

Mat final; 

final.create(calculateHeight(source.cols, source.rows, angle), calculateWidth(source.cols, source.rows, angle), CV_32FC1); 
warpAffine(source, final, rot_mat, final.size()); 

참고 calculateHeight 및 calculateWidth 단순히 원래 매트의 치수와 그 회전되는 각도에 기초하여 새로운 매트의 크기를 결정하는 방법이다.

예 : rotated image

가 어떻게이 회전 매트가 경계 내에 중앙 결과적되는 방식으로 매트를 회전 않습니다 Original image가 회전?

+0

@ rold2007이 질문은 링크 된 질문 2 년 전에 질문되었습니다. 위의 질문에는 내가 당시에 찾고 있던 것이 있지만 복제본입니다. – KSletmoe

+0

예, 이전에 알아 차 렸지만 질문에 대답이 없으므로 다른 방법으로 해결할 수 없습니다. 나는 이것이 중재자가 알 ​​수있을 것 같은, 그래서 중복 된 깃발을 생각할 정도로 어떻게 처리되어야하는지 모른다. – rold2007

답변

0

회전하려는 이미지를 충분히 큰 새 이미지의 가운데로 복사하고 새 이미지를 회전하기 만하면됩니다.

+0

복사 한 이미지를 새 이미지의 중앙에 가져 오려면 어떻게해야합니까? – KSletmoe