在opencv中提取特定颜色的形状

Posted

技术标签:

【中文标题】在opencv中提取特定颜色的形状【英文标题】:extract the shapes made a particular colour in opencv 【发布时间】:2015-12-29 13:22:05 【问题描述】:

拍下这张照片

我想将红色轮廓的形状提取到单独的图像中。我想这样做是因为我想为我的工作检查这些形状的凸度。有什么建议吗?我尝试了拆分通道,但这只是从图像中删除了红色。

【问题讨论】:

你是怎么得到这些红色的?这张图片是您的输入吗? nope..我做了轮廓图..我的蚂蚁基本上是得到图像内部黑暗区域的轮廓。所以我做了这个。 【参考方案1】:

由于红色边框是你自己画的,所以完全不用分析红色组件。这样一来,您就像是在打印 txt 文件的屏幕并尝试对其进行 OCR 处理一样!

解决办法:

    cv::BoundingBox 在第一个红色轮廓的点周围。 获取矩形的ROI并将其存储在单独的cv::Mat中。 创建一个新的黑色(0)cv::Mat,其标题与之前的 cv::Mat 相同。 使用 cv::fillPoly 用 White(255) 绘制轮廓。 cv::bitwise_and 介于两者之间cv::Mats

【讨论】:

【参考方案2】:

您可以尝试制作包含以红色为主色的像素的图像,例如,您将检查每个像素并制作这样的黑白图像

#define MIN_RED     192
#define MAX_OTHER   64

// each pixel
if (r >= MIN_RED && g <= MAX_OTHER && b <= MAX_OTHER)
    c = 1;
else
    c = 0;

这将过滤掉蓝色、绿色和灰色,并保留明亮的红色。

【讨论】:

你能说得更具体一点吗?什么是变量“c”? 就是新建一个镜像。在答案中,我说“黑白图像”,它只有 2 个颜色值,因此是 1 和 0。如果您愿意,可以使用像素颜色值与 r=255; g=255; b=255;r=0; g=0; b=0;

以上是关于在opencv中提取特定颜色的形状的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中几何形状识别与测量

如何使用Opencv对图像进行颜色特征提取

OpenCV中几何形状识别与测量

OpenCV-几何形状颜色识别 #导入MD文档图片#

OpenCV中BLOB特征提取与几何形状分类

opencv 如何检测特定形状的物体