0

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

我需要使用键盘更改它

4

1 回答 1

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

于 2019-07-19T11:22:29.340 回答