为什么cv2.imwrite滞后1步?

时间:2018-03-22 08:41:50

标签: python opencv

我的代码:

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()
  1. 我运行此代码。
  2. 显示灰色显示。
  3. 我将相机对准一个物体,然后按“c”键。
  4. 它不显示对象图像,而是显示运行代码时相机指向的图像并保存。
  5. 我将相机对准其他地方并按'c'键agein。
  6. 显示在3处看到的对象的图像并保存。
  7. 相机滞后一步。为什么呢?

1 个答案:

答案 0 :(得分:1)

这可能与缺少values = [5, 6, 9, 11, 13, 14, 17, 18, 20, 21, 23, 24, 25, 26, 27, 31, 32, 34, 41, 42, 44, 45, 46, 47, 49] s = pd.Series(values) s1 = s.groupby(s.diff().gt(1).cumsum() + 1).apply(lambda x: ','.join(x.astype(str))) print (s1) 1 5,6 2 9 3 11 4 13,14 5 17,18 6 20,21 7 23,24,25,26,27 8 31,32 9 34 10 41,42 11 44,45,46,47 12 49 dtype: object 有关,窗口没有更新,虽然这很奇怪。

尝试在imshow之后添加cv::waitKey(0)命令

cv::waitKey

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