OpenCV copyTo() 掩码错误

OpenCV copyTo() mask error

本文关键字:掩码 错误 copyTo OpenCV      更新时间:2023-10-16

我正在尝试通过C++使用OpenCV 2.4中的蒙版将较小的图像粘贴到较大的图像中。
在没有遮罩的情况下,我使用以下代码将小图像复制到大图像:

smallImage.copyTo(largeImage(cv::Rect(pt, smallImage.size()));

其中pt具有cv::Point2f的类型。它工作得很好。但是,如果我敷面膜:

smallImage.copyTo(largeImage(cv::Rect(pt, smallImage.size()), mask);

我收到来自Mat::create的错误(请参阅文档):

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);

小图像是大图像的重新调整大小版本,并在黑白 (100,100) 位置复制到大图像中的 (200,200)。您可以根据需要采用这些生产线。

要将图像缩放图像粘贴到 resultMat:

 scaledImage.copyTo(resultMat);

但我不认为你可以选择Java中的roi在特定区域复制。