霍夫圈总是不返回

时间:2019-02-13 11:21:24

标签: python opencv hough-transform

我正在检测当前项目中的学生。我计划使用霍夫圆检测。它可以很好地处理图像,但是在实时视频帧中却很棘手。

我在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()

0 个答案:

没有答案