Python 如何修改此代码以改进它';s检测眼睛注视/瞳孔的稳定性?。在光线很暗的情况下,此代码的性能非常差
我正在使用hough圆变换来检测瞳孔。如果有任何阴影或微弱的光线,它会发现眼睛周围有不寻常的圆圈。我试过几种过滤器,但效果不太好 我尝试过高斯模糊、中值模糊和模糊来减少噪声,但没有得到太多的效果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:
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:看起来您仅在不需要注释时才使用注释。