我想用opencv圈出所有光点。想法是用网络摄像头找到光点,所以如果我在场景中有3个LED,我会喜欢圈出它们。但我不知道如何圈选/过滤它们。到目前为止,这是我的代码:
import cv2
import numpy as np
import imutils
cap = cv2.VideoCapture(0)
while True:
_, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (11,11), 0)
(minVal, maxVal, minLoc, maxLoc) = cv2.minMaxLoc(blur)
hi, threshold = cv2.threshold(blur, maxVal-20, 230, cv2.THRESH_BINARY)
thr = threshold.copy()
cv2.resize(thr, (300,300))
edged = cv2.Canny(threshold, 50, 150)
_, lightcontours, hierarchy = cv2.findContours(edged, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for (i, c) in enumerate(lightcontours):
points = []
(x, y, w, h) = cv2.boundingRect(c)
((cX, cY), radius) = cv2.minEnclosingCircle(c)
cv2.circle(frame, (int(cX), int(cY)), int(radius),
(0, 0, 255), 3)
points.append([[int(cX), int(cY)]])
print points
cv2.putText(frame, "#{}".format(i + 1), (x, y - 15),
cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2)
cv2.imshow('light', thr)
cv2.imshow('frame', frame)
cv2.imshow('edges', edged)
cv2.waitKey(4)
key = cv2.waitKey(5) & 0xFF
if key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
那么我该怎么做呢?我找到了一些来源,他们在图片中圈出了光点,但没有设法让它们适应流媒体。有什么想法吗?
祝你好运
更新: 我更新了我的代码以显示实际状态。