0
저는 RGB 대형 이미지와 RGB 소형 이미지를 가지고 있습니다. 큰 이미지의 영역을 가장 작은 이미지로 대체하는 가장 빠른 방법은 무엇입니까? 다중 채널 ROI를 정의한 다음 copyTo를 사용할 수 있습니까? 또는 각 이미지를 채널로 분할하고 ROI를 대체 한 다음 다시 ROI로 재결합해야합니까?openCV에서 이미지의 RGB ROI를 바꾸는 방법
저는 RGB 대형 이미지와 RGB 소형 이미지를 가지고 있습니다. 큰 이미지의 영역을 가장 작은 이미지로 대체하는 가장 빠른 방법은 무엇입니까? 다중 채널 ROI를 정의한 다음 copyTo를 사용할 수 있습니까? 또는 각 이미지를 채널로 분할하고 ROI를 대체 한 다음 다시 ROI로 재결합해야합니까?openCV에서 이미지의 RGB ROI를 바꾸는 방법
예. 다중 채널 ROI 및 copyTo가 작동합니다. 다음과 같음 :
int main(int argc,char** argv[])
{
cv::Mat src = cv::imread("c:/src.jpg");
//create a canvas with 10 pixels extra in each dim. Set all pixels to yellow.
cv::Mat canvas(src.rows + 20, src.cols + 20, CV_8UC3, cv::Scalar(0, 255, 255));
//create an ROI that will map to the location we want to copy the image into
cv::Rect roi(10, 10, src.cols, src.rows);
//initialize the ROI in the canvas. canvasROI now points to the location we want to copy to.
cv::Mat canvasROI(canvas(roi));
//perform the copy.
src.copyTo(canvasROI);
cv::namedWindow("original", 256);
cv::namedWindow("canvas", 256);
cv::imshow("original", src);
cv::imshow("canvas", canvas);
cv::waitKey();
}