繁体   English   中英

如何使用opencv / javacv识别图像中的U形?

[英]How to identify U shape in a image using opencv/javacv?

目前我正在开发javacv上的图像处理项目。 在那里我必须识别特定多边形内的U形。

这是两种类型的图像,我必须识别图像中的图像是否具有两个U形或单个U形。 我经历了很多教程,但我无法找到适当的指导方针来澄清这一点。 所以请专家可以帮助澄清这个问题。 如果您可以使用opencv或javacv提供一些代码示例,我们非常感谢。

图像有两个U形

单U形图像

如果所有图像都具有相似的图案,则只需使用轮廓边界矩形的纵横比(宽度/高度)将其过滤掉即可。

即,如果找到所有轮廓的边界矩形,则外形的aspect_ratio接近1。

但U形的aspect_ratio超过10。

下面是一个python代码:

import cv2
import numpy as np

img = cv2.imread('sofud.jpg')

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

ret,thresh = cv2.threshold(gray,127,255,1)

contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)

for cnt in contours:
    x,y,w,h = cv2.boundingRect(cnt)
    if 10 < w/float(h) or w/float(h) < 0.1:
        cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)


cv2.imshow('res',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

以下是结果:

在此输入图像描述

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM