4

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

这是两种类型的图像,我必须确定图像中有两个 U 形还是单个 U 形。我已经阅读了许多教程,但我无法找到正确的指导方针来澄清这一点。所以请专家帮忙澄清这个问题。如果您能提供一些使用 opencv 或 javacv 的代码示例,我将不胜感激。

具有两个 U 形的图像

具有单个 U 形的图像

4

1 回答 1

4

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

即,如果您找到所有轮廓的边界矩形,则外部形状的 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()

以下是结果:

在此处输入图像描述

在此处输入图像描述

于 2012-07-06T05:40:06.163 回答