Python 视频中的Hough圆变换

Python 视频中的Hough圆变换,python,opencv,image-processing,hough-transform,Python,Opencv,Image Processing,Hough Transform,当我运行时,出现一个名为: import cv2 import numpy as np cap = cv2.VideoCapture(0) while(1): # Take each frame _, frame = cap.read() # frame olarak goruntuyu aldık # BGR ' yi HSV ye çevirdik hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # HSV nin içindeki ren

当我运行时,出现一个名为:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(1):

# Take each frame
_, frame = cap.read() # frame olarak goruntuyu aldık

# BGR ' yi HSV ye çevirdik
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

# HSV nin içindeki renk aralıgını belirledik
lower_yellow = np.array([20,0,0])
upper_yellow = np.array([40,255,255])

# Yukarıda belırledıgımız eşik değerlerini gray goruntunun içinde eşleştirdik.
mask = cv2.inRange(hsv, lower_yellow, upper_yellow)

# bitwise and operatörü ile de ana goruntude yukarıda buldugumuz mask'i aldık.
res = cv2.bitwise_and(frame,frame, mask= mask)
img = cv2.medianBlur(res, 5)

cimg = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
cimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 5, 20,
                           param1=50, param2=30, minRadius=0, maxRadius=10)

circles = np.uint16(np.around(circles))
for i in circles[0, :]:
    # draw the outer circle
    cv2.circle(cimg, (i[0], i[1]), i[2], (0, 255, 0), 2)
    # draw the center of the circle
    cv2.circle(cimg, (i[0], i[1]), 2, (0, 0, 255), 3)

cv2.imshow('detected circles', cimg)
#ayarladıgımız 3 görüntüyü gösterdik

cv2.imshow('res',res)
k = cv2.waitKey(5) & 0xFF
if k == 27:
    break

cv2.destroyAllWindows()
cv2.error:/io/opencv/modules/imgproc/src/hough.cpp:1494:error:(-215)_image.empty()

cv2.houghcirles(图像、方法、dp、Minist[、圆圈[、参数1[、参数2[、最小半径[、最大半径]]]→ 圆圈

参数:图像–8位、单通道、灰度输入图像。


选择一个通道或将图像转换为单通道。

是的!Hough Circle Transform仅用于灰度图像。因此,您必须将“cimg”(从代码中)作为输入输入输入到Hough Circles

此外,您不必写这行:

cv2.error: /io/opencv/modules/imgproc/src/hough.cpp:1494: error: (-215) !_image.empty() && _image.type() == (((0) & ((1 << 3) - 1)) + (((1)-1) << 3)) && (_image.isMat() || _image.isUMat()) in function HoughCircles

<代码> IMG<代码> >代码> CV2. HoCurrCules()>代码>必须是单通道映像。在你的情况下,它是一个三通道HSV映像。嗨,Devansh Soni。请考虑添加更多信息。
cimg = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)