Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 几何图形的分割_Opencv_Rectangles_Image Segmentation - Fatal编程技术网

Opencv 几何图形的分割

Opencv 几何图形的分割,opencv,rectangles,image-segmentation,Opencv,Rectangles,Image Segmentation,我试图在PCB的x射线图像上分割QFN封装。QNF封装的一般描述是,它的中心是正方形或矩形,边缘是矩形引脚。此图像上的示例如下: 我可以很好地分割x射线图像上的矩形,但我不知道如何编写只分割QFN包的条件。封装可以是方形或矩形,并且边缘上可以有不同数量的引脚。我的想法是检查每个矩形的近邻,过滤掉太大的矩形,然后检查其余的矩形是否都在周围。有更好的方法吗?或者如何检查大矩形是否被小矩形包围 我正在使用Python3.5和OpenCV 3.1,这将有点长,我会给你一些基本的技术和指导,以及一些提高Q

我试图在PCB的x射线图像上分割QFN封装。QNF封装的一般描述是,它的中心是正方形或矩形,边缘是矩形引脚。此图像上的示例如下:

我可以很好地分割x射线图像上的矩形,但我不知道如何编写只分割QFN包的条件。封装可以是方形或矩形,并且边缘上可以有不同数量的引脚。我的想法是检查每个矩形的近邻,过滤掉太大的矩形,然后检查其余的矩形是否都在周围。有更好的方法吗?或者如何检查大矩形是否被小矩形包围


我正在使用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)