我的代码:
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. 看到的物体的图像并保存它。
相机滞后 1 步。为什么?
最佳答案
这可能是因为缺少 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 滞后 1 步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49424010/