在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中提取特定颜色的形状的主要内容,如果未能解决你的问题,请参考以下文章