python - Python OPenCV Hough Circle需要很长时间才能从网络摄像头加载图像

标签 python opencv image-processing hough-transform

我正在尝试从网络摄像头获取视频流,并使用HoughCircles()检测其中的圈子。但是,无论何时我尝试运行代码,视频都会花费一些时间来加载图像,或者根本不会加载图像。我们将非常感谢您提供有关如何获取代码进行圆圈检测的任何帮助。

注意:我不是要实时执行任何操作。我只想获取一些基本的圆圈检测功能,以处理来自网络摄像头的视频流。

这是代码:

import cv2
import numpy as np
import sys

cap = cv2.VideoCapture(0)
width = 320
height = 240
dim = (width, height)
while(True):
    gray = cv2.medianBlur(cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY),5)
    resized = cv2.resize(gray,dim,interpolation = cv2.INTER_AREA)
    edges = cv2.Canny(gray,100,200)
    circ = cv2.HoughCircles(resized,cv2.HOUGH_GRADIENT,1,30,param1=50,param2=75,
                              minRadius=0,maxRadius=0)
    cv2.imshow('video',resized)
    if circ is not None:
        circ = np.uint16(np.around(circ))[0,:]
        print(circ)
        for j in circ:
            cv2.circle(resized, (j[0], j[1]), j[2], (0, 255, 0), 2)
        cv2.imshow('video',resized)
        if cv2.waitKey(1)==27:# esc Key
            break
cap.release()
cv2.destroyAllWindows()

再次感谢您的帮助。

最佳答案

好,我想通了。我不得不减少HoughCircles中的参数的混乱。我已将circ = cv2.HoughCircles(resized,cv2.HOUGH_GRADIENT,1,30,param1=50,param2=75, minRadius=0,maxRadius=0)更改为cv2.HoughCircles(resized,cv2.HOUGH_GRADIENT,1,50,param1=50,param2=35, minRadius=0,maxRadius=0),这使该代码可以显示视频流,同时以合理的帧频检测圆圈。也感谢@ZdaR的帮助。

Here's the code that works


import cv2
import numpy as np
import serial

cap = cv2.VideoCapture(1)
width = 320
height = 240
dim = (width, height)
while(True):
    gray = cv2.medianBlur(cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY),5)
    resized = cv2.resize(gray,dim,interpolation = cv2.INTER_AREA)
    circ = cv2.HoughCircles(resized,cv2.HOUGH_GRADIENT,1,50,param1=50,param2=35,
                              minRadius=0,maxRadius=0)
    cv2.imshow('video',resized)
    if circ is not None:
        circ = np.uint16(np.around(circ))[0,:]
        print(circ)
        for j in circ:
            cv2.circle(resized, (j[0], j[1]), j[2], (0, 255, 0), 2)  
        cv2.imshow('video',resized)
        if cv2.waitKey(1)==27:# esc Key
            break
cap.release()
cv2.destroyAllWindows()

关于python - Python OPenCV Hough Circle需要很长时间才能从网络摄像头加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53755187/

相关文章:

c# - 无锁线程安全

Python Tkinter - 关闭对话框而不关闭主窗口

opencv - 使用 opencv 函数在 C++ 中计算梯度方向

algorithm - 在 C++ 中使用 opencv 跟踪 AVI 视频中对象的最佳算法

c# - 上传前 MVC 转换图像

python - 使用 SIFT OpenCV 处理大图像时出错

python - 比较慢的python numpy 3D傅立叶变换

python - return 语句应该有括号吗?

python - 如何在Python中对列表中的词频进行排序(但不是全部打印出来)

c++ - 如何从视频中选择两帧? opencv C++