QT 中使用copyTo(ROI,mask)添加水印时ROI出现像素丢失

问题记录:在QT中使用opencv中copyTo来添加水印,最终结果ROI区域像素丢失,同代码运行在visualstudio中无误
image为传入水印图像,img为准备添加水印的图像
    cv::Mat mask;
    //取反
    cv::bitwise_not(image, mask);
    //ROI区域
    cv::Mat ROI = img(cv::Rect(img.cols - mask.cols, img.rows - mask.rows, mask.cols, mask.rows));
    //贴图
    image.copyTo(ROI, mask);

运行结果及报错内容
    image
    

img


mask

img

    处理前的ROI

img

    处理后的ROI

img


visualstudio中处理后的ROI

img

学艺不精,按照所查的copyTo方法,应当是mask中像素不为0的像素点对应去叠加ROI,不应该是这种结果,而且为啥相同的代码visualstudio和qt里结果不一样??

然后发现有个vs和qt有一点不同的地方,图片imread之后的type不同
qt:

img


vs:

img

统一类型后仍然无效。。

希望有大能帮我解决一下问题。。

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。