我是 OpenCV 的新手,我什至不確定如何解決這個問題。我有這張 500x500 像素的影像,里面有紅點和白線。

以每個紅點為中心,我可以在紅點周圍繪制一個 25X25 大小的固定邊界框嗎?我需要識別影像中的每個紅點。

注意:條件是我需要找到一個固定大小(25x25)的邊界框,并且紅點必須在邊界框的中心。
任何幫助,將不勝感激。先感謝您。
uj5u.com熱心網友回復:
以下是如何使用 HSV 蒙版來屏蔽影像中除紅色像素外的所有內容:
import cv2
import numpy as np
def draw_box(img, cnt):
x, y, w, h = cv2.boundingRect(cnt)
half_w = w // 2
half_h = h // 2
x1 = x half_h - 12
x2 = x half_h 13
y1 = y half_w - 12
y2 = y half_w 13
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0))
img = cv2.imread("red_dots.png")
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
ranges = np.array([[100, 0, 0], [179, 255, 255]])
mask = cv2.inRange(img_hsv, *ranges)
img_masked = cv2.bitwise_and(img, img, mask=mask)
img_gray = cv2.cvtColor(img_masked, cv2.COLOR_BGR2GRAY)
contours, _ = cv2.findContours(img_gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for cnt in contours:
draw_box(img, cnt)
cv2.imshow("Image", img)
cv2.waitKey(0)
輸出:

在draw_box()函式的這部分注意:
x1 = x half_h - 12
x2 = x half_h 13
y1 = y half_w - 12
y2 = y half_w 13
理想的情況下,而不是- 12和 13,它應該是- 12.5和 12.5,但不能有一半的像素在OpenCV中,或錯誤將被拋出。
uj5u.com熱心網友回復:
另一種解決方案,使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/403759.html
標籤:
下一篇:從元組串列到資料框
