이미지를 뒤틀기 opencv를 사용하여 수행하고 싶습니다. 이미지 (예 : 4000x4000)의 네 모서리를 감지했으며 opencv에서 을 사용하여 변환 행렬을 얻었습니다. 이제 이미지 센터에서 이미지를 왜곡하고 싶습니다. 그래서 warpPerspective
을 사용했습니다. 입력 한 원본 이미지의 크기가 450x450이고 전체 이미지에 대해 계산 한 변환 행렬을 사용합니다.이미지 opencv를 사용하여 뒤틀림
하지만 아무 것도 화면에 표시되지 않습니다. 도움을 주시면 감사하겠습니다.
다음은 샘플 코드 및 샘플 이미지입니다.
이 이미지는 I 이미지에서 원하는 휨 영역. (코드 src_crop)
를 검출한다.
source[0] = Point2f(lt.x, lt.y);
source[1] = Point2f(rt.x, rt.y);
source[2] = Point2f(rb.x, rb.y);
source[3] = Point2f(lb.x, lb.y);
dst[0] = Point2f(6, 10);
dst[1] = Point2f(3899, 7);
dst[2] = Point2f(3901, 3899);
dst[3] = Point2f(9, 3902);
Mat transformMatrix ;
transformMatrix = getPerspectiveTransform(source, dst);
Mat dstFrame ;
warpPerspective(src_crop, dstFrame, transformMatrix, Size(450, 450));
답변 해 주셔서 감사합니다. 나는 전체 이미지 (4000 x 4000)를 계산하는 변환 행렬을 안다. 하지만 원본 이미지로 warpPerspective에 src_crop (450 by 450) 이미지를 입력했습니다. 그래서 src_crop 이미지가 변환 행렬을 사용하여 왜곡되어 있다고 생각합니다. 불가능하다? src_crop 이미지의 구석 점을 모르면 src_crop 이미지의 이미지를 왜곡하고 싶습니다 – eonjeo
자르기 대신'sourceImage' (4000x4000)를 사용해야합니다. 자르기는 'originalCorners' 배열이 존재하지 않는 모퉁이를 가리키게합니다. 뒤틀림을하기 전에 부패한 적이 없지만 출력이 완전히 검은 색이 될 수 있습니다. – Jurjen
실제로 프로그램의 실행 시간을 줄이기 위해 자르기 이미지를 사용합니다. 자르기 이미지의 중심점을 찾기 위해 matchTemplate 함수를 사용합니다. 그래서 전체 이미지 뒤틀림 대신에 자른 이미지 뒤틀림이 뒤틀림을위한 짧은 시간이라고 생각합니다. – eonjeo