我正在尝试使用以下代码来区分两个图像:
Mat getWithoutBackground(Mat img, Mat back)
{
_backgroundSubVal = 50;
cv::Mat diff;
cv::absdiff(img, back, diff);
cv::Mat diff1Channel;
cv::cvtColor(diff, diff1Channel, CV_BGRA2GRAY);
cv::Mat mask = diff1Channel > _backgroundSubVal;
cv::Mat data(img.size(), CV_8UC4, Scalar(255,255,255,0));
// copy masked area
img.copyTo(data, mask);
cv::imwrite(""1.png", data);
return similarRegions;
}
我几乎得到了正确的解决方案,但我希望有一个透明的背景而不是黑色。 (我不想删除所有图片的黑色) 我认为Scalar中的第4个参数应该已经完成了具有透明背景的技巧,但我想我错过了一些东西......
cv::Mat data(img.size(), CV_8UC4, Scalar(255,255,255,0));
任何想法我做错了什么?