我正在检测当前项目中的学生。我计划使用霍夫圆检测。它可以很好地处理图像,但是在实时视频帧中却很棘手。
我在stackoverflow here中找到了一个答案,但这不是视频的,也没有解释。
c#
public delegate void SubmitClickedHandler();
[Category("Action")]
[Description("Fires when the Submit button is clicked.")]
public event SubmitClickedHandler SubmitClicked;
C++
delegate void SubmitClickedHandler();
[Category("Action"), Description("Event raised when clicking on an item")]
event SubmitClickedHandler ^ SubmitClicked;
c#
protected virtual void OnSubmitClicked()
{
if (SubmitClicked != null)
{
SubmitClicked(); // Notify Subscribers
}
}
C++
private: virtual void OnSubmitClicked()
{
if (SubmitClicked != nullptr) // <---ERROR
{
SubmitClicked();
}
}
C#
private void btnSubmit_Click(object sender, System.EventArgs e)
{
OnSubmitClicked();
}
C++
private: System::Void BN_LOAD_CFG_Click(System::Object^ sender, System::EventArgs^ e) {
OnSubmitClicked();
}
我的程序的输出是:
import cv2
import cv2 as cv
from matplotlib import pyplot as plt
from scipy.ndimage import imread
import numpy as np
fgbg = cv2.bgsegm.createBackgroundSubtractorMOG()
cam_capture = cv2.VideoCapture(0)
cv2.destroyAllWindows()
upper_left = (50, 50)
bottom_right = (300, 300)
def sketch_transform(image)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = 255-gray
ret, thresh = cv2.threshold(gray, 225, 255, cv2.THRESH_BINARY_INV)
image, contours, hierarchy = cv2.findContours(thresh,
cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
image = cv2.drawContours(image, contours, -1,(0,0,255),3)
circle_detect(image)
return image
def circle_detect(image):
circles = cv2.HoughCircles(image,cv2.HOUGH_GRADIENT,1,20,
param1=90,param2=30,minRadius=0,maxRadius=100)
print(circles)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# draw the outer circle
cv2.circle(image,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(image,(i[0],i[1]),2,(0,0,255),3)
return image
while True:
_, image_frame = cam_capture.read()
r = cv2.rectangle(image_frame, upper_left, bottom_right, (100, 50,
200), 5)
rect_img = image_frame[upper_left[1] : bottom_right[1], upper_left[0]
: bottom_right[0]]
sketcher_rect = rect_img
sketcher_rect = sketch_transform(sketcher_rect)
sketcher_rect_rgb = cv2.cvtColor(sketcher_rect, cv2.COLOR_GRAY2RGB)
image_frame[upper_left[1] : bottom_right[1], upper_left[0]
bottom_right[0]] = sketcher_rect_rgb
cv2.imshow("Sketcher ROI", image_frame)
if cv2.waitKey(1) == 13:
break
cam_capture.release()
cv2.destroyAllWindows()