检测图像中的多个矩形
我试图检测这张图片中的管道数。为此,我正在使用OpenCV和基于Python的检测。根据对类似问题的现有答案,我能够提出以下步骤 打开图片 筛选 应用边缘检测 使用轮廓 检查计数 当我们手动给定或取4时,管道的总数约为909。 应用滤镜后 import cv2 import matplotlib.pyplot as plt import numpy as np img = cv2.imread('images/input-rectpipe-1.jpg') blur_hor = cv2.filter2D(img[:, :, 0], cv2.CV_32F, kernel=np.ones((11,1,1), np.float32)/11.0, borderType=cv2.BORDER_CONSTANT) blur_vert = cv2.filter2D(img[:, :, 0], cv2.CV_32F, kernel=np.ones((1,11,1), np.float32)/11.0, borderType=cv2.BORDER_CONSTANT) mask = ((img[:,:,0]>blur_hor*1.2) | (img[:,:,0]>blur_vert*1.2)).astype(np.uint8)*255 我得到了这张蒙面的图像 就显示的可见矩形数量而言,这看起来相当准确。但是,当我尝试进行计数并在图片顶部绘制边框时,它也会选择很多不需要的区域。对于圆,HoughCircles具有定义最大和最小半径的方法。矩形是否有类似的东西可以提高精度。另外,我也乐于接受有关此问题的替代方法的建议。 ret,thresh = cv2.threshold(mask,127,255,0) contours,hierarchy …