我正在尝试使用带有Alpha通道的PNG来“屏蔽”视频流中的当前帧。
我的PNG在我不想处理的区域中有黑色像素而在其他区域中有alpha - 目前它保存了4个颜色的图像,包含4个通道,但它也可能是二进制图像。
我正在对图像进行背景减法和轮廓查找,所以我想如果我将“蒙版”图像中的黑色像素复制到当前,那么在黑色区域中就不会找到轮廓。这是一个好方法吗?如果是这样,我如何从一个cv::Mat
上复制黑/非透明像素?
答案 0 :(得分:2)
您所描述的内容对我来说就像使用图像蒙版一样。当您在OpenCV库中提供的许多方法支持屏蔽时,您在alpha通道中执行此操作很奇怪。为什么不在任何想要找到轮廓的地方创建一个非零值的单独二进制图像,而不是使用alpha通道?
根据您使用的算法,您认为在黑色像素区域中找不到轮廓是正确的。不幸的是,我不知道有选择地将像素从一个图像复制到另一个图像的有效方法,而没有深入到Mat结构的细节,并且从一个字节到另一个像素到像素迭代。将上面提到的掩码思想与预处理函数一起使用,然后将生成的二进制映像发送到findContours等,这将使您既可以利用已经编写良好的OpenCV库代码,又可以保留更多代码。你头发上的头发,它属于哪里;)。