如何将多个边界框合并到Python OpenCV中
我有python代码正在检测颜色。一旦检测到颜色,我就会找到轮廓并绘制它们。以下是原始图像:
和以下是带有轮廓&的图像。它上面的边界框:
如您所见,有很多轮廓检测到,因此有多个边界框。有没有办法将这些边界框合并为一个。以下是代码
import cv2
import imutils
import numpy as np
image = cv2.imread("L00001.png")
image = imutils.resize(image, width=800)
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_bound = np.array([45, 150, 20])
upper_bound = np.array([75, 305, 255])
origMask = cv2.inRange(hsv, lower_bound, upper_bound)
contours, h = cv2.findContours(origMask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
new = np.vstack(contours)
area = cv2.contourArea(c)
if area > 10:
x, y, w, h = cv2.boundingRect(c)
cv2.rectangle(image, (int(x), int(y)), (int(x + w), int(y + h)), (0, 0, 255), 2)
cv2.imshow("FRAME", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
I have python code which is detecting a color. Once the color is detected, I am finding the contours and drawing them. Below is the original image:
and below is the image with contours & bounding box on it:
As you can see there are lot of contours detected and thus there are multiple bounding box. Is there a way to merge these bounding box into one. Below is the code
import cv2
import imutils
import numpy as np
image = cv2.imread("L00001.png")
image = imutils.resize(image, width=800)
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_bound = np.array([45, 150, 20])
upper_bound = np.array([75, 305, 255])
origMask = cv2.inRange(hsv, lower_bound, upper_bound)
contours, h = cv2.findContours(origMask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
new = np.vstack(contours)
area = cv2.contourArea(c)
if area > 10:
x, y, w, h = cv2.boundingRect(c)
cv2.rectangle(image, (int(x), int(y)), (int(x + w), int(y + h)), (0, 0, 255), 2)
cv2.imshow("FRAME", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我已经能够使用连接的组件分析来执行此操作。在此之前,我还应用了扩张,输出看起来令人满意
I have been able to do this using connected component analysis. I also applied dilation before that and the output looks satisfactory