我正在尝试通过 C++ 在 OpenCV 2.4 中使用蒙版,将较小的图像粘贴到较大的图像中。
在没有 mask 的情况下,我使用以下代码将小图像复制到大图像:
smallImage.copyTo(largeImage(cv::Rect(pt, smallImage.size()));
其中 pt
的类型为 cv::Point2f
。它工作得很好。但是,如果我戴上面具:
smallImage.copyTo(largeImage(cv::Rect(pt, smallImage.size()), mask);
我从 Mat::create
得到一个错误(参见 documentation ):
CV_Assert(!fixedType() || (CV_MAT_CN(type) ==
m.channels() && ((1 << CV_MAT_TYPE(flags)) & fixedDepthMask) != 0));
如果我从我的代码中删除 cv::Rect
,将其简化为:
smallImage.copyTo(largeImage, mask);
它可以工作,尽管它没有复制到正确的位置。我该如何解决这个问题?
下面的代码没有任何错误。
Mat large_img = imread("C:\\Koala.jpg");
Mat small_img;
resize(large_img,small_img,Size(100,100),1);
small_img.copyTo(large_img (Rect(100,100,100,100)));
imshow("Rsult",large_img);
waitKey(0);
小图像是大图像的重新调整大小的版本,它在大图像中的 b/w (100,100) 位置复制到 (200,200)。您可以根据需要采用这些线路。
我是一名优秀的程序员,十分优秀!