【问题标题】:How to capture a picture in opencv如何在opencv中捕获图片
【发布时间】:2018-03-16 22:13:32
【问题描述】:

python 新手在这里我有以下代码,我用它来使用 opencv 捕获图片。当我按下键盘上的 q 键时,它会捕获图片。 到目前为止工作正常。

import cv2


cap = cv2.VideoCapture(0)

while(True):
    ret, frame = cap.read()
    rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)

    cv2.imshow('frame', rgb)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        out = cv2.imwrite('capture.jpg', frame)
        break

cap.release()
cv2.destroyAllWindows()

当我发出命令(例如“立即捕获”)时,我需要它来捕获图片。当用户给出书面命令而不是按键时,任何人都可以帮助我如何捕获帧。谢谢

【问题讨论】:

  • 用户如何在不触键的情况下编写命令?
  • 你想从终端给Capture now命令吗?
  • @Akhilesh 是的!例如我写了代码command= input('Enter command') 当我输入“捕获图片”并按回车时,它应该捕获图片。
  • @MarkSetchell 我的问题是“使用命令而不是按键来捕获图像”。 :)

标签: python opencv camera


【解决方案1】:

你可以这样写

reqCommand = 'Capture_pic'
command = input('Enter command')
if command == reqCommand:
    out = cv2.imwrite('capture.jpg', frame)

更新:

这个更新是为了让它不阻塞程序的执行

import cv2
import threading

command = None

def process():
    while True:
        command = input('Enter command')

thread = threading.Thread(target=process)
thread.start()

cap = cv2.VideoCapture(0)
reqCommand = 'Capture_pic'
while(True):
    ret, frame = cap.read()
    rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)

    cv2.imshow('frame', rgb)
    if command == reqCommand:
        out = cv2.imwrite('capture.jpg', frame)
        thread.terminate()
        break

cap.release()
cv2.destroyAllWindows()

【讨论】:

  • 这是一个阻塞调用,它将停止读取和显示新帧,直到用户输入命令。
  • @Zindarod...感谢通知,我已经相应地更改了代码。
猜你喜欢
  • 2017-04-15
  • 2011-05-09
  • 2017-12-25
  • 2015-04-29
  • 1970-01-01
  • 2012-02-11
  • 2015-07-18
  • 1970-01-01
  • 2021-04-09
相关资源
最近更新 更多