转载自:https://blog.csdn.net/hujiameihuxu/article/details/71518945
我的程序需要在原博主上面加个#pragma comment (lib, "MVC_API.lib")才能正常,在博主的基础上增加了视频保存功能
#include<Windows.h>//是的,这个相机就是这么依赖平台
#include"MVCAPI.h"
#include<opencv2\core\core.hpp>//opencv要先配置好了哦
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
#include<iostream>
using namespace cv;
#pragma comment (lib, "MVC_API.lib")
int main()
{
string video_name = "E:/video/video.avi";//保存视频位置
VideoWriter writer;
DWORD ulDeviceNumber= MVC_GetDeviceNumber();
MVCGE_DEVLISTEX device0Info;
MVC_GetDeviceInfoEx(0,&device0Info);
int m_iImgWidth = 1600;
int m_iImgHeight =1200;
MVCFRAMEINFO cam0frameInfo;
memset(&cam0frameInfo,0,sizeof(MVCFRAMEINFO));//清空cam0frameInfo里面的内容,好存放数据
MVC_SetNetPacketSize(0,1440);//不开启巨帧;在opendevice之前调用.重要!!!
if(MVC_OpenDevice(0)==CY_RESULT_OK)
std::cout<<"打开cam0成功";
MVC_SetParameter(0,MVCADJ_SHUTTERTYPE,1); //设置采集模式为连续采集模式(面阵相机)
MVC_SetParameter(0,MVCADJ_BITMODE, 2); //设置为8bit 采集
MVC_SetParameter(0,MVCADJ_WIDTH,m_iImgWidth); //采集的宽度为1600
MVC_SetParameter(0,MVCADJ_HEIGHT, m_iImgHeight); //采集的高度为1200
MVC_SetParameter(0,MVCADJ_FPSMAXENABLE, 40); //采集的帧率为40
std::cout<<"try to get a image data:"<<std::endl;
writer = VideoWriter ( video_name, CV_FOURCC ( 'X', 'V', 'I', 'D' ), 50, Size ( m_iImgWidth, m_iImgHeight ), true );
while ( 1){
MVC_EnableCapture(0);//打开采集
MVC_GetRgbData3(0,&cam0frameInfo);//获取相机数据
cv::Mat img(m_iImgHeight,m_iImgWidth,CV_8UC3, cam0frameInfo.lBufPtr);
writer.write ( img );//往视频中写数据
cv::imshow("1",img);
cv::waitKey(1);
}
}