用OpenCV(C ++)提取用红框勾勒出的部分图像

时间:2016-02-27 21:45:08

标签: c++ opencv character detection

我有以下图片example image

我需要识别其中的角色。要做到这一点,我想制作一个遮罩,以除去红色框之外的所有东西。

我可以使用的最佳方法是什么?

目前我使用hsv过滤器生成蒙版,并使用蒙版将图像裁剪为红色正方形。

cvtColor(src, HSV, COLOR_BGR2HSV);
inRange(HSV, Scalar(H_MIN, S_MIN, V_MIN), Scalar(H_MAX, S_MAX, V_MAX), HSVmask);
src.copyTo(src2, HSVmask);

这会产生一个很差的掩模,因为根据我观察图像的方式排除T本身,我需要一种更强大的方法。

- 我想知道是否有办法在重要的白色区域周围制作一个盒子并使用盒子作为我的面具,但是我不确定如何在opencv上实现它。

使用面具我应用canny边缘检测,然后我找到轮廓并填充轮廓。

我的结果 Contour Output and Mask

我得到的结果不够强大,理想情况下我需要能够从航空视频输入检测草地上的大标志,因此需要使用不同大小的红色方块。 / p>

我有什么办法可以改善这个过程吗?

字符识别方法尚未确定。

1 个答案:

答案 0 :(得分:0)

如果您只想识别角色

  1. 将图像转换为灰度。
  2. 由于角色为白色且图像的其余部分为彩色,因此灰色图像中的角色仍为白色。因此,请采用阈值并抑制所有非白色像素。
  3. 运行分类器以识别角色。
  4. 如果您想提取红色框

    1. 找到红色像素,然后裁剪图像。