微视相机调用相机

转载自: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);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_38877910/article/details/81111284