环境: ubuntu1404, openCV2.4.13
1.从usb camera在线读取显示图片并保存视频和图片:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
Mat frame;
int num=0;
char imagename[100];
int main(int argc, char** argv)
{
VideoCapture capture( argc == 2 ? argv[1][0] - '0' : 0 );
VideoWriter writer("VideoSave.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25.0, Size(640, 480));
while (capture.isOpened())
{
if(num%100==0){
capture >> frame;
sprintf(imagename,"$Path/%d%s",num/100,".jpg");//path就是图片保存路径
writer.write(frame);
imwrite(imagename, frame);
imshow("video", frame);
if(waitKey(30) >=10) break; }
num++;
}
}
------------------------------------------------------------------------------------------------------------------------------------
2.将视频帧转成图片输出
#include <iostream>
#include "cv.h"
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main()
{
VideoCapture cap("VideoSave.avi");
long totalFrameNumber = cap.get(CV_CAP_PROP_FRAME_COUNT);
cout << "total frames: " << totalFrameNumber << endl;
Mat frame;
bool flags = true;
long currentFrame = 0;
while (flags){
cap.read(frame);
stringstream str;
str << "pic" << currentFrame << ".jpg";
if (currentFrame % 30 == 0){
imwrite("data/" + str.str(), frame);
}
if (currentFrame >= totalFrameNumber){
flags = false;}
currentFrame++;
}
}
---------------------------------------------------------------------------------------------------------------------------------------------
3.ros 方式保存视频:
rosrun image_view video_recorder image:=/usb_cam/image_raw _max_depth_range:="0"