두 이미지가 있는데 첫 번째 이미지는 다른 이미지보다 작습니다. 첫 번째 이미지에 두 번째 이미지를 복사해야합니다. 이렇게하려면 먼저 ROI를 설정하고 두 번째 이미지를 첫 번째 이미지로 복사 한 다음 ROI를 다시 설정해야합니다.OpenCV에서 ROI를 설정하는 방법은 무엇입니까?
그러나 C++ 인터페이스를 사용하고 있으므로이 방법을 모릅니다. C에서 나는 cvSetImageROI를 사용할 수 있었지만 C++ 인터페이스에서는 작동하지 않습니다.
그래서 기본적으로 cvSetImageROI에 대한 C++ 대안은 무엇입니까?
//output is a pointer to the mat whom I want the second image (colourMiniBinMask) copied upon
Rect ROI (478, 359, 160, 120);
Mat imageROI (*output, ROI);
colourMiniBinMask.copyTo (imageROI);
imshow ("Gravity", *output);
참조 http://stackoverflow.com/questions/7041181/equivalent-to-cvsetimageroi-in-the-opencv-c-interface –
이미 시도해 보았습니다. 오류는 없지만 ROI를 설정 한 이미지는 영향을받지 않습니다. 이는 그대로 유지됩니다. 나는 그 이미지에 접근하지 않고 그 부분의 복사본을 얻는 중이다. (나는 생각한다). – fdh
src와 dst 행렬의 형식이 일치하지 않으면 (src = BGR, dst = BGRA) copyTo 함수가 콘텐츠를 재생성합니다. 이 경우 "imageROI.data"가 다시 할당되고 포인터 주소가 변경됩니다. 반면에 imageROI의 헤더는 그대로 유지됩니다. 그러한 경우에는, mixChannels, merge 또는 cvtColor 함수를 사용한다. – vahapt