c++ - 提取opencv中特定颜色的形状

标签 c++ c opencv image-segmentation opencv3.0

拍摄下面这张图片

source image

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

最佳答案

由于红色边框是你自己画的,所以根本不需要分析红色分量。通过这样做,您就像打印 txt 文件屏幕并尝试对其进行 OCR 的人一样!

解决方案:

  1. cv::BoundingBox 围绕第一个红色轮廓点。
  2. 获取矩形的 ROI 并将其存储在单独的 cv::Mat 中。
  3. 创建一个新的 black(0) cv::Mat,其 header 与之前的 cv::Mat 相同。
  4. 使用 cv::fillPoly 用白色 (255) 绘制轮廓。
  5. cv::bitwise_and 位于两个 cv::Mats 之间。

关于c++ - 提取opencv中特定颜色的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34512002/

相关文章:

c - 如何使用C计算二维数组中的行数

c - GtkSpinner 具有持久的功能与 C

opencv - 图像处理中的 anchor

c++ - 如何避免临界区和 SendMessage 之间的这种死锁?

c++ - 如何迭代函数 vector 并在 C++ 中调用每个函数?

c - 使用 for 循环的结构位域数据操作

python - 我期待来自 python-openCV 的蓝色(红色?)图像,但变黑了

c++ - 在 OpenCV 图像上打印数字

c++ - 如何随着时间的推移在OpenGL中平移和旋转三角形?

c++ - 类定义文件中的 Win32 程序编译器错误