python cv2 imwrite_python – 为什么cv2.imwrite滞后1步?

我的代码:

import cv2

cap = cv2.VideoCapture(0)

cv2.namedWindow('frame', cv2.WINDOW_NORMAL)

while True:

key = cv2.waitKey(0) & 0xFF

ret, frame = cap.read()

cv2.imshow('frame', frame)

if key == ord('q'):

cap.release()

cv2.destroyAllWindows()

break

if key == ord('c'):

cv2.imwrite('capture.jpg', frame)

cap.release()

cv2.destroyAllWindows()

>我运行此代码.

>显示灰色显示.

>我将相机对准一个物体,然后按“c”键.

>它不显示对象图像,而是显示运行代码时相机指向的图像并保存.

>我将相机对准其他地方并按’c’键.

>它显示了它在3处看到的物体的图像并保存.

相机滞后一步.为什么?

最佳答案 这可能与缺少cv :: waitKey(0)有关,并且窗口没有得到更新,尽管这很奇怪.

尝试在imshow之后添加一个cv :: waitKey命令

import cv2

cap = cv2.VideoCapture(0)

cv2.namedWindow('frame', cv2.WINDOW_NORMAL)

while True:

key = cv2.waitKey(0) & 0xFF

ret, frame = cap.read()

cv2.imshow('frame', frame)

cv2.waitKey(0)

if key == ord('q'):

cap.release()

cv2.destroyAllWindows()

break

if key == ord('c'):

cv2.imwrite('capture.jpg', frame)

cap.release()

cv2.destroyAllWindows()

我认为这可能是因为当你执行imwrite时,你有效地打破了while循环(尽管稍微)用opencv做其他事情.

你可能感兴趣的:(python,cv2,imwrite)