0
我在高速公路上拍摄了带有汽车的视频,所以我想用鼠标逐一剪辑。但我需要更自动地执行此操作,例如,一种方法是按下空格键并用鼠标切割并将图像自动保存到文件夹中。如何使用鼠标从视频中拍摄图片
你有没有见过类似Linux的东西?我正在尝试在OpenCV中做,虽然它不是必需的。
在此先感谢。
我在高速公路上拍摄了带有汽车的视频,所以我想用鼠标逐一剪辑。但我需要更自动地执行此操作,例如,一种方法是按下空格键并用鼠标切割并将图像自动保存到文件夹中。如何使用鼠标从视频中拍摄图片
你有没有见过类似Linux的东西?我正在尝试在OpenCV中做,虽然它不是必需的。
在此先感谢。
我在下面添加了一个代码。这对我来说可以。围绕您想要单独保存的对象绘制矩形。按'空间'去下一帧(有时你需要按更长的时间前进,我不知道为什么)。同样的'Esc'退出。
用法:蟒蛇car.py录像档案
# car.py
import cv,sys
print "usage: python car.py <videofile>"
box=[0,0,0,0]
i = 0
global image
# creating mouse callback function
def my_mouse_callback(event,x,y,flags,param):
global drawing_box,i
if event==cv.CV_EVENT_LBUTTONDOWN:
events = event
#print event
drawing_box=True
[box[0],box[1],box[2],box[3]]=[x,y,0,0]
print x,y
if event==cv.CV_EVENT_LBUTTONUP:
events = event
drawing_box=False
events= event
if box[2]<0:
box[0]+=box[2]
box[2]*=-1
if box[3]<0:
box[1]+=box[3]
box[3]*=-1
rect = (box[0],box[1],box[2],box[3])
#print rect
roi = cv.GetSubRect(image,rect)
filename = str(i)+'.jpg'
#save(image,rect,filename)
cv.SaveImage(filename,roi)
i = i+1
if event==cv.CV_EVENT_MOUSEMOVE:
if (drawing_box==True):
box[2]=x-box[0]
box[3]=y-box[1]
# function to draw the rectangle, added flag -1 to fill rectangle. If you don't want to fill, just delete it.
def draw_box(img,box):
cv.Rectangle(img,(box[0],box[1]),(box[0]+box[2],box[1]+box[3]),(255,0,0),2)
# main program
capture = cv.CaptureFromFile(sys.argv[1])
image2 = cv.QueryFrame(capture)
drawing_box=False
# make a clone of image
temp=cv.CloneImage(image2)
cv.NamedWindow("Box Example")
cv.SetMouseCallback("Box Example",my_mouse_callback,temp)
while(1):
# global image
image = cv.QueryFrame(capture)
while(1):
roi = 0
save = False
events = 0
boxsaver = 0
cv.Copy(image,temp)
if drawing_box==True:
draw_box(temp,box)
i = i+1
cv.ShowImage("Box Example",temp)
if cv.WaitKey(20)==27:
sys.exit()
elif cv.WaitKey(20)==32:
break
你所说的 “切” 是什么意思?在中,拖动一个矩形并将图像保存在里面? – mwcz 2012-01-31 15:58:27
你能确认你想要达到的目标吗?你的意思是说,当车辆通过电影中的某个静态地标时,你想要拍摄并保存电影的屏幕截图/静止? – thefragileomen 2012-01-31 19:41:23
@mwcz是的,拖动一个矩形并将图像保存在里面 – Mauro 2012-01-31 23:36:34