gpt4 book ai didi

python - 如何组轮廓和绘制一个矩形边框

转载 作者:行者123 更新时间:2023-12-02 16:15:01 26 4
gpt4 key购买 nike

我需要将contours分组并绘制一个包含所有轮廓的bounding rectangle,像这样

enter image description here

from matplotlib import pyplot as plt
import cv2 as cv

img = cv.imread('shapes1.png', 0)
imgRGB = cv.cvtColor(img.copy(), cv.COLOR_GRAY2RGB)

_, ctrs, _ = cv.findContours(img, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)

boxes = []
for ctr in ctrs:
x, y, w, h = cv.boundingRect(ctr)
boxes.append([x, y, w, h])

for box in boxes:
top_left = (box[0], box[1])
bottom_right = (box[0] + box[2], box[1] + box[3])
cv.rectangle(imgRGB, top_left, bottom_right, (0,255,0), 2)

fig = plt.figure(figsize = (10, 10))
ax = fig.add_subplot(111)
ax.imshow(imgRGB, cmap='gray')

enter image description here

有什么简单的方法可以做到这一点,而不是以编程方式合并所有边界矩形

最佳答案

如果您不介意使用numpy,则可以从那里简单地使用 concatenate 函数,请参见以下代码。注意:我使用OpenCV 4.0.0,其中 findContours 返回值的顺序不同。

import cv2
import numpy as np

# Input image
input = cv2.imread('images/kchZb.png', cv2.IMREAD_GRAYSCALE)

# Modify input image to extract "original" image
_, input = cv2.threshold(input[10:400, 40:580], 224, 255, cv2.THRESH_BINARY)

# Find contours
cnts, _ = cv2.findContours(input, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# Concatenate all contours
cnts = np.concatenate(cnts)

# Determine and draw bounding rectangle
x, y, w, h = cv2.boundingRect(cnts)
cv2.rectangle(input, (x, y), (x + w - 1, y + h - 1), 255, 2)

# Output image
cv2.imwrite('images/output.png', input)
cv2.imshow('Input', input)
cv2.waitKey(0)

Output

免责声明:我是Python的新手,尤其是OpenCV(胜出的C++)的Python API。非常欢迎提出评论,改进和强调Python的执行!

关于python - 如何组轮廓和绘制一个矩形边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55530787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com