如何使用键盘对视频流进行灰度处理?

时间:2019-07-19 11:10:47

标签: python opencv

我需要一个实时流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()     

我需要使用键盘对其进行更改

1 个答案:

答案 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确保记住您的选择