c++ - OpenCV 处理图像的一部分

标签 c++ opencv

我正在尝试使用带有 alpha channel 的 PNG 从视频流中“屏蔽”当前帧。

我的 PNG 在我不想处理的区域有黑色像素,在其他区域有 alpha - 目前它保存了一个 4 channel 的 4 色图像,但它也可能是二进制图像。

我正在图像上进行背景减法和轮廓查找,所以我想如果我将黑色像素从“蒙版”图像复制到当前图像中,那么在黑色区域中将找不到轮廓。这是一个好方法吗?如果是这样,我如何将一个 cv::Mat 的黑色/非透明像素复制到另一个之上?

最佳答案

在我看来,您所描述的内容就像图像蒙版的用法。奇怪的是,当 OpenCV 库中有如此多的可用方法支持屏蔽时,您会在 alpha channel 中执行此操作。与其使用 alpha channel ,为什么不创建一个单独的二值图像,在任何您想找到轮廓的地方都有非零值?

根据您使用的算法,您假设您不会在黑色像素区域中找到轮廓是正确的。不幸的是,我不知道有什么有效的方法可以有选择地将像素从一个图像复制到另一个图像,而无需深入了解 Mat 结构的本质,并从字节到字节/像素到像素进行迭代。将上面介绍的掩码想法与您的预处理功能一起使用,然后将生成的二值图像发送到 findContours 或类似的程序中,这将使您既可以利用 OpenCV 库中已经编写良好和优化的代码,又可以保留更多你头上的头发,它所属的地方;)。

关于c++ - OpenCV 处理图像的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11693079/

相关文章:

c++ - 在协程句柄上调用 destroy 会导致段错误

python - 曲面上的Aruco标记姿势估计

opencv - 如何从卡尔曼滤波器估计部分状态的概率?

Opencv 'undefined reference to ` cv::namedWindow....'(链接错误)

python - 在Ubuntu 17.04(libhdf5.so)中安装Caffe时出错

c++ - Windows XP 下 CAtlStringMgr::GetInstance 崩溃

c++ - 索引运算符常量

javascript - 在 C++ 中对扩展 ASCII std::string 进行 URL 编码

c++ - 如何优化获取数组中的最大值?

c++ - 在 C++ 中读取索引调色板图像