python_OpenCV_按键截取图片——按键
最近在pycharm上读取视频遇到一些问题,总结如下:1)OpenCV无法读取视频;2)无法使用按键截取视频中的图像帧;针对第一个问题:code如下#!/usr/bin/env python# -*- coding: utf_8 -*-import cv2import numpy as npcap = cv2.VideoCapture("144022.h264")...
最近在pycharm上读取视频遇到一些问题,总结如下:
1)OpenCV无法读取视频;
2)无法使用按键截取视频中的图像帧;
针对第一个问题:code如下
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import cv2
import numpy as np
cap = cv2.VideoCapture("144022.h264")
# imh =cv2.imread('/home/fuxueping/Pictures/蒙古省西里尔文.png')
while(1):
# get a frame
ret, frame = cap.read()
size = frame.shape
h = size[0]
w = size[1]
sp = frame.shape
# print sp
# sz1 = sp[0]
# sz2 = sp[1]
sz3 = sp[2]
print 'width: %d \nheight: %d \nnumber: %d' % (w, h, sz3)
# show a frame
cv2.imshow("capture", frame)
if cv2.waitKey(100) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
第一个问题解决方法:在网上查阅之后知道视频播放是与ffmpeg有关系,需要重新编译OpenCV,本人使用的是OpenCV3,在编译OpenCV3之前,首先要编译FFmpeg,操作流程如下:
OpenCV文件夹是本人自己建立的,进入这个文件夹的路径下候进行库的编译
1.ffmpge
执行如下命令进行ffmpeg3.0的编译安装
cd ~/OpenCV
wget -c http://ffmpeg.org/releases/ffmpeg-3.0.tar.bz2
tar xvf ffmpeg-3.0.tar.bz2
cd ffmpeg-3.0
sudo apt-get install yasm
./configure --host-cppflags=-fPIC --host-cflags=-fPIC --enable-shared
make
sudo make install
2.OpenCV
执行如下命令进行OpenCV3.1.0的编译安装:
cd ~/OpenCV
wget -c http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.1.0/opencv-3.1.0.zip
unzip opencv-3.1.0.zip
cd opencv-3.1.0
cmake .
make
sudo make install
注意:在使用Cmake进行编译时,文中所说是“cmake .“,不要缺省了”.“。
在编译OpenCV时,自己在编译的时候与上面的命名行语句略有不同,使用了cmake GUI,不能使用CUDA,所以把with CUDA的勾选去掉了,这是别人要求的,具体原因不知道;
参考:http://jingyan.baidu.com/article/63acb44a3b326561fcc17e13.html
第二个问题描述:
本人想实现按”q“按键的时候退出视频播放,而按”s“按键的时候可以保存相应的视频帧,但是实际无响应,代码如下:
#coding=utf-8
import cv2
#设置视频捕获
cap=cv2.VideoCapture("144022.h264")
#循环
while True:
ret,im=cap.read()
#显示在窗口上
cv2.imshow('video test', im)
key=cv2.waitKey(10)
print key
if key == 'q': #'q' waitfor 'q' keytoexit
cv2.destroyAllWindows()
elif key == 's': #key == 's': # wait for 's' key to save and exit
cv2.imwrite('messigray.png', im)
第二个问题的解决方法:
通过打印输出,在按键时,会输出按键输出值,将代码改变为如下:
#coding=utf-8
import cv2
#设置视频捕获
cap=cv2.VideoCapture("144022.h264")
#循环
while True:
ret,im=cap.read()
#显示在窗口上
cv2.imshow('video test', im)
key=cv2.waitKey(10)
print key
if key == 1048689: #'q' waitfor 'q' keytoexit
cv2.destroyAllWindows()
elif key == 1048691: #key == 's': # wait for 's' key to save and exit
cv2.imwrite('messigray.png', im)
更多推荐
所有评论(0)