Python 获取图像中矩形的计数
我有一个像下面这样的图像,我想确定图像中矩形的数量。如果他们被填满了,我知道怎么做Python 获取图像中矩形的计数,python,c++,opencv,image-processing,Python,C++,Opencv,Image Processing,我有一个像下面这样的图像,我想确定图像中矩形的数量。如果他们被填满了,我知道怎么做 contours = cv2.findContours(image.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) contours = contours[0] if imutils.is_cv2() else contours[1] print len(contours) 但如果矩形为空,则此操作无效 我也不知道如何填充图像中的矩形。如果使用OpenCV
contours = cv2.findContours(image.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = contours[0] if imutils.is_cv2() else contours[1]
print len(contours)
但如果矩形为空,则此操作无效
我也不知道如何填充图像中的矩形。如果使用OpenCV绘制轮廓,我知道如何填充轮廓,但我不知道如何填充图像中已经存在的空矩形
假设您尝试过形状检测器、线条检测等,但没有成功,这是解决此问题的另一种方法 如果这是灰度PNG图像,可以使用颜色分割来实现这一点。 我会这样处理:
count = 0
For each pixel in the image:
if color(pixel) == white /*255*/
count++
floodfill using this pixel as a seed pixel and target color as count
no_of_rectangles = count - 1 /* subtract 1 since the background will be colored too*/
这假设矩形有连续的线条,否则泛洪填充将泄漏到其他矩形。假设您尝试了形状检测器、线条检测等,但未成功,这里是解决此问题的另一种方法 如果这是灰度PNG图像,可以使用颜色分割来实现这一点。 我会这样处理:
count = 0
For each pixel in the image:
if color(pixel) == white /*255*/
count++
floodfill using this pixel as a seed pixel and target color as count
no_of_rectangles = count - 1 /* subtract 1 since the background will be colored too*/
这假设矩形具有连续的线条,否则泛光填充将泄漏到其他矩形中。如果您发现外部轮廓(RETR_EXTERNAL),填充与否不应产生差异。下面的代码将为您提供数字3。 请注意,如果使用RETR_TREE作为findContours()中的第二个参数,将获得所有6个轮廓,包括内部轮廓。
显然,这假设图像只包含矩形,而不区分不同的形状。如果您找到外部轮廓(外部轮廓),填充与否不应产生差异。下面的代码将为您提供数字3。 请注意,如果使用RETR_TREE作为findContours()中的第二个参数,将获得所有6个轮廓,包括内部轮廓。
显然,这假设图像只包含矩形,而不区分不同的形状。您找到问题的解决方案了吗?您找到问题的解决方案了吗?