Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修改此代码以改进它';s检测眼睛注视/瞳孔的稳定性?。在光线很暗的情况下,此代码的性能非常差_Python_Python 3.x_Opencv_Hough Transform - Fatal编程技术网

Python 如何修改此代码以改进它';s检测眼睛注视/瞳孔的稳定性?。在光线很暗的情况下,此代码的性能非常差

Python 如何修改此代码以改进它';s检测眼睛注视/瞳孔的稳定性?。在光线很暗的情况下,此代码的性能非常差,python,python-3.x,opencv,hough-transform,Python,Python 3.x,Opencv,Hough Transform,我正在使用hough圆变换来检测瞳孔。如果有任何阴影或微弱的光线,它会发现眼睛周围有不寻常的圆圈。我试过几种过滤器,但效果不太好 我尝试过高斯模糊、中值模糊和模糊来减少噪声,但没有得到太多的效果 import numpy as np import cv2 cap = cv2.VideoCapture(1) count=0 while True: # Capture frame-by-frame _, frame = cap.read() roi = frame[0:

我正在使用hough圆变换来检测瞳孔。如果有任何阴影或微弱的光线,它会发现眼睛周围有不寻常的圆圈。我试过几种过滤器,但效果不太好

我尝试过高斯模糊、中值模糊和模糊来减少噪声,但没有得到太多的效果

import numpy as np
import cv2
cap = cv2.VideoCapture(1)

count=0

while True:
    # Capture frame-by-frame
    _, frame = cap.read()
    roi = frame[0: 480, 0: 840]
    cv2.imshow("roi",roi)
    cimg = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)
    lower_black = np.array([0, 0, 0])
    upper_black = np.array([180, 255, 50])
    mask = cv2.inRange(cimg, lower_black, upper_black)
    mask = cv2.blur(mask,(9,9),0)
    # mask = cv2.medianBlur(mask,)



#circles = cv2.HoughCircles(cimg,cv2.HOUGH_GRADIENT,1,300,param1=300,param2=20,minRadius=10,maxRadius=40)
# circles = cv2.HoughCircles(grey,cv2.HOUGH_GRADIENT,minDist=30,minRadius=0,maxRadius=0)
#circles = cv2.HoughCircles(cimg,cv2.HOUGH_GRADIENT,100,200)
circles = cv2.HoughCircles(mask,cv2.HOUGH_GRADIENT,1,300,param1=300,param2=20,minRadius=10,maxRadius=40) 


if circles is None:
    cv2.imshow("roi",mask)
    print ("Not Found")
    continue     

a =circles.tolist()

lst1=[item[0] for item in a[0]]
lst2=[item[1] for item in a[0]]

i=0
left_x=0
right_x=0

while i < len(lst1):
    if (i==0):
        left_x=lst1[i]
    if (i==1):
        right_x=lst1[i]
    i=i+1

i=0
left_y=0
right_y=0

while i < len(lst2):
    if (i==0):
        left_y=lst2[i]
    if (i==1):
        right_y=lst2[i]
    i=i+1

print("whole List")
print(a)
print("Left_X",left_x)
print("Right_X",right_x)
print("Left_y",left_y)
print("Right_y",right_y)




for i in circles[0,:]:
    cv2.circle(mask,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
    cv2.circle(mask,(i[0],i[1]),2,(0,0,255),3)


# Display the resulting frame
cv2.imshow('hsv',mask)
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
将numpy导入为np
进口cv2
cap=cv2.视频捕获(1)
计数=0
尽管如此:
#逐帧捕获
_,frame=cap.read()
roi=帧[0:480,0:840]
cv2.imshow(“roi”,roi)
cimg=cv2.CVT颜色(roi,cv2.COLOR\u BGR2HSV)
下_black=np.array([0,0,0])
上_black=np.数组([180,255,50])
遮罩=cv2.inRange(cimg,下黑色,上黑色)
蒙版=cv2.模糊(蒙版,(9,9),0)
#掩码=cv2.medianBlur(掩码)
#圆=cv2.霍夫圆(cimg,cv2.霍夫梯度,1300,参数1=300,参数2=20,最小半径=10,最大半径=40)
#圆圈=cv2.霍夫圆圈(灰色,cv2.霍夫梯度,Minist=30,minRadius=0,maxRadius=0)
#圆=cv2.霍夫圆(cimg,cv2.霍夫梯度,100200)
圆=cv2.霍夫圆(遮罩,cv2.霍夫梯度,1300,参数1=300,参数2=20,最小半径=10,最大半径=40)
如果圆为无:
cv2.imshow(“roi”,面具)
打印(“未找到”)
继续
a=圆。tolist()
lst1=[0]中项目的[0]项]
lst2=[0]中项目的[1]项]
i=0
左x=0
右x=0
而i

我想检测学生。圆需要稳定。

您可以使用其他算法吗?例如跟踪和检测方法。您可以使用当前的算法进行检测。如果未检测到圆,则使用KCF跟踪直到下一次hough成功。nit:看起来您仅在不需要注释时才使用注释。您可以使用其他算法吗?例如跟踪和检测方法。您可以使用当前的算法进行检测。如果未检测到圆,则使用KCF跟踪直到下一次hough成功。nit:看起来您仅在不需要注释时才使用注释。