Opencv 几何图形的分割
我试图在PCB的x射线图像上分割QFN封装。QNF封装的一般描述是,它的中心是正方形或矩形,边缘是矩形引脚。此图像上的示例如下: 我可以很好地分割x射线图像上的矩形,但我不知道如何编写只分割QFN包的条件。封装可以是方形或矩形,并且边缘上可以有不同数量的引脚。我的想法是检查每个矩形的近邻,过滤掉太大的矩形,然后检查其余的矩形是否都在周围。有更好的方法吗?或者如何检查大矩形是否被小矩形包围Opencv 几何图形的分割,opencv,rectangles,image-segmentation,Opencv,Rectangles,Image Segmentation,我试图在PCB的x射线图像上分割QFN封装。QNF封装的一般描述是,它的中心是正方形或矩形,边缘是矩形引脚。此图像上的示例如下: 我可以很好地分割x射线图像上的矩形,但我不知道如何编写只分割QFN包的条件。封装可以是方形或矩形,并且边缘上可以有不同数量的引脚。我的想法是检查每个矩形的近邻,过滤掉太大的矩形,然后检查其余的矩形是否都在周围。有更好的方法吗?或者如何检查大矩形是否被小矩形包围 我正在使用Python3.5和OpenCV 3.1,这将有点长,我会给你一些基本的技术和指导,以及一些提高Q
我正在使用Python3.5和OpenCV 3.1,这将有点长,我会给你一些基本的技术和指导,以及一些提高QNF包检测准确性的高级建议 假设您已经将红色标记的轮廓存储在变量
轮廓中
首先定义要过滤的轮廓区域的上限和下限。根据给定的图像,中心区域的面积范围为:
CHIP_CENTER_AREA_LOWER, CHIP_CENTER_AREA_UPPER = 20*1000, 25*1000
因此,我们迭代所有轮廓并过滤面积在上述范围内的轮廓,它将消除较小的轮廓,我们将只检查较大的轮廓
probable_chip_center_contour_idx = []
for i in xrange(len(contours)):
cnt = contours[i]
area = cv2.contourArea(cnt)
if CHIP_CENTER_AREA_LOWER < area < CHIP_CENTER_AREA_UPPER:
probable_chip_center_contour_idx.append(i)
这将是一个有点长,我会给你一些基本的技术和指导方针,以及一些先进的建议,以提高QNF包检测的准确性 假设您已经将红色标记的轮廓存储在变量
轮廓中
首先定义要过滤的轮廓区域的上限和下限。根据给定的图像,中心区域的面积范围为:
CHIP_CENTER_AREA_LOWER, CHIP_CENTER_AREA_UPPER = 20*1000, 25*1000
因此,我们迭代所有轮廓并过滤面积在上述范围内的轮廓,它将消除较小的轮廓,我们将只检查较大的轮廓
probable_chip_center_contour_idx = []
for i in xrange(len(contours)):
cnt = contours[i]
area = cv2.contourArea(cnt)
if CHIP_CENTER_AREA_LOWER < area < CHIP_CENTER_AREA_UPPER:
probable_chip_center_contour_idx.append(i)