首页 > 解决方案 > 如何擦除或消失 cv::Mat 矩阵或图像中的黑色边框

问题描述

这是 2 个相似的图像。

我也有他们的 cv::mat 矩阵。

http://img.over-blog-kiwi.com/0/46/98/26/201310/ob_299e3e65acd32f2b11866b54039fc1ad_ag-drone-5.jpg

http://img.over-blog-kiwi.com/0/46/98/26/20140319/ob_b3841d_mosaicing-0-1.png

如何消失/擦除/删除 cv::Mat 矩阵或图像(png)中的黑色边框?

像这样:

http://img.over-blog-kiwi.com/0/46/98/26/20140319/ob_d37014_effi-mosaicing.jpg

标签: c++imageopencvimage-processingmatrix

解决方案


一个简单的解决方案,假设图像的背景颜色是统一的,可能是循环遍历 cv::Mat 中的每个像素,并且如果一个像素与背景颜色匹配(比如说 RGB(0,0,0) 或纯黑色),它用另一种颜色替换这个像素(比如说(RGB(255,255,255)或纯白色)。

当然,这将删除我们想要保留的图像中的任何纯黑色像素。因此,您可以尝试使用不同的像素值阈值来移除,而不仅仅是纯黑色。您可以对 RGB 通道设置阈值,也可以转换为另一种颜色空间(即 HSV)并将阈值应用于仅一个通道(即值通道)。


推荐阅读