问题记录:在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
mask
处理前的ROI
处理后的ROI
visualstudio中处理后的ROI
学艺不精,按照所查的copyTo方法,应当是mask中像素不为0的像素点对应去叠加ROI,不应该是这种结果,而且为啥相同的代码visualstudio和qt里结果不一样??
然后发现有个vs和qt有一点不同的地方,图片imread之后的type不同
qt:
vs:
统一类型后仍然无效。。