当前位置:  开发笔记 > 编程语言 > 正文

Python:如何使用OpenCV在点击时从网络摄像头捕获图像

如何解决《Python:如何使用OpenCV在点击时从网络摄像头捕获图像》经验,为你挑选了1个好方法。

我想使用OpenCV从我的网络摄像头捕获并保存大量图像.这是我目前的代码:

import cv2

camera = cv2.VideoCapture(0)
for i in range(10):
    return_value, image = camera.read()
    cv2.imwrite('opencv'+str(i)+'.png', image)
del(camera)

这个问题是我不知道什么时候拍摄这些照片,所以很多照片都会模糊不清.我的问题是:有没有办法在点击键盘键上拍摄图像?

还有更好的方法来拍摄多个图像,而不是范围?



1> derricw..:

这是一个简单的程序,可以显示摄像机输入,cv2.namedWindow并在您点击时拍摄快照SPACE.如果你击中它也会退出ESC.

import cv2

cam = cv2.VideoCapture(0)

cv2.namedWindow("test")

img_counter = 0

while True:
    ret, frame = cam.read()
    cv2.imshow("test", frame)
    if not ret:
        break
    k = cv2.waitKey(1)

    if k%256 == 27:
        # ESC pressed
        print("Escape hit, closing...")
        break
    elif k%256 == 32:
        # SPACE pressed
        img_name = "opencv_frame_{}.png".format(img_counter)
        cv2.imwrite(img_name, frame)
        print("{} written!".format(img_name))
        img_counter += 1

cam.release()

cv2.destroyAllWindows()

我认为这应该在很大程度上回答你的问题.如果有任何你不明白的行让我知道,我会添加评论.

如果每按一次SPACE键需要抓取多个图像,则需要一个内循环或者只需要创建一个抓取一定数量图像的函数.

请注意,关键事件来自于cv2.namedWindow它必须具有焦点.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有