我需要一个实时流cam的python脚本,我想使用键盘对流进行灰度处理,但是我不能,每次我将打击代码流更改为灰度时,但是一秒钟后它恢复正常,请帮我解决这个问题
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
c = cv2.waitKey(1)
if c & 0xFF == ord('q'):
break
elif c & 0xFF == ord('3'):
frame=gray
cv2.imshow('a',frame)
cap.release()
cv2.destroyAllWindows()
我需要使用键盘对其进行更改
答案 0 :(得分:0)
您的问题在于键盘捕获。该代码在循环的每次迭代中都等待键盘输入,如果没有输入,则会将none
传递给代码,即它不记得您上次键入的内容,因此下次不会输入elif
周围。
尝试以下操作以查看正在发生的事情...
import cv2
cap = cv2.VideoCapture(0)
gray_flag = False
while True:
ret, frame = cap.read()
gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
c = cv2.waitKey(1) # only waits for 1 millisecond!!!
if c & 0xFF == ord('q'):
break
elif c & 0xFF == ord('3'):
gray_flag = True
elif c & 0xFF == ord('4'):
gray_flag = False
if gray_flag:
cv2.imshow('a', gray)
else:
cv2.imshow('a', frame)
cap.release()
cv2.destroyAllWindows()
gray_flag
确保记住您的选择