如何在Python的Opencv Cam窗口中提供开始、停止、捕获和关闭按钮
如何在视频捕获窗口中提供开始、停止、捕获和关闭按钮,以启动、停止、拍摄快照和关闭窗口 我正在使用以下代码打开摄像头进行视频流:如何在Python的Opencv Cam窗口中提供开始、停止、捕获和关闭按钮,python,python-2.7,opencv,button,pythoncard,Python,Python 2.7,Opencv,Button,Pythoncard,如何在视频捕获窗口中提供开始、停止、捕获和关闭按钮,以启动、停止、拍摄快照和关闭窗口 我正在使用以下代码打开摄像头进行视频流: import cv2.cv as cv cv.NamedWindow("camera", 1) capture = cv.CaptureFromCAM(0) while True: img = cv.QueryFrame(capture) cv.ShowImage("camera", img) if
import cv2.cv as cv
cv.NamedWindow("camera", 1)
capture = cv.CaptureFromCAM(0)
while True:
img = cv.QueryFrame(capture)
cv.ShowImage("camera", img)
if cv.WaitKey(10) == 27:
break
我以前在使用OpenCV时遇到过这个问题。据我所知,OpenCV中没有按钮的功能 然而,我使用Tkinter并创建了一个画布和一些按钮(在您的情况下,这些按钮将是开始、停止、捕获和关闭)。我使用OpenCV在Tkinter画布上绘制的每个帧 我使用它进行逐帧程序,所以我不确定该方法的实时性能如何 一个非常快速的示例代码:
from Tkinter import *
import cv2.cv as cv
root = Tk()
w = Canvas(root, width=500, height=300, bd = 10, bg = 'white')
w.grid(row = 0, column = 0, columnspan = 2)
b = Button(width = 10, height = 2, text = 'Button1')
b.grid(row = 1, column = 0)
b2 = Button(width = 10, height = 2, text = 'Button2')
b2.grid(row = 1,column = 1)
cv.NamedWindow("camera",1)
capture = cv.CaptureFromCAM(0)
while True:
img = cv.QueryFrame(capture)
canvas.create_image(0,0, image=img)
if cv.WaitKey(10) == 27:
break
root.mainloop()
这可能会也可能不会马上起作用,因为我现在无法测试这一点。我能看到的一个潜在变化是OpenCV使用的图像格式。您可能需要使用其中一个转换功能来更改格式。按钮是不可能的,但您可以使用鼠标单击和按键来控制视频。例如,使用左键单击切换播放/暂停,并通过按键笔划执行录制:
import cv2
run=False
frame=0
path=#some video path
def foo(event, x, y, flags, param):
global run
global frame
#check which mouse button was pressed
#e.g. play video on left mouse click
if event == cv2.EVENT_LBUTTONDOWN:
run= not run
while run:
frame+=1
frame=cap.read()[1]
cv2.imshow(window_name, frame)
key = cv2.waitKey(5) & 0xFF
if key == ord("v"):
pass
#do some stuff on key press
elif event == cv2.EVENT_RBUTTONDOWN:
pass
#do some other stuff on right click
window_name='videoPlayer'
cv2.namedWindow(window_name)
cv2.setMouseCallback(window_name, foo)
cap=cv2.VideoCapture(path)
嗨,SimonPJ,你能分享一下你用python创建(开始、停止、捕获、关闭)按钮和功能的示例代码吗?如果我能找到代码,我很乐意分享。我在前一段时间做过这件事,我更喜欢玩游戏,所以我不能保证任何事情Hi SimonPJ你能分享一下示例代码吗如果你找到了,我无法得到任何解决方案我不在保存它的计算机上,但我可以做一些快速示例代码Hi它对我不起作用请给我一个测试过的,如果可能的话,谢谢,坚持使用cv2 api,旧的cv api不会出现在longsee中