Ubuntu_OpenCV_C++_录制摄像机视频
CV_FOURCC改为VideoWriter::fourcc,即可#include <stdio.h>#include <opencv2/opencv.hpp>#include "DVPCamera.h"using namespace cv;int main(int argc, char **argv){dvpUint32 i=0,count=0;//相机数量dvpCame
·
但是x86Ubuntu下用OpenCV4.5编译报错:
解决:
CV_FOURCC改为VideoWriter::fourcc
完整代码:
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include "DVPCamera.h"
using namespace cv;
int main(int argc, char **argv)
{
dvpUint32 i=0,count=0;//相机数量
dvpCameraInfo info[8];//相机信息
dvpStatus status;//相机状态
dvpHandle h;//相机句柄
dvpFrame frame;//帧数据
void *p;//?
cv::Mat img;//OpenCV图像
VideoWriter writer;
writer.open("test.avi", VideoWriter::fourcc('M', 'J', 'P', 'G'),
75, //录制时的帧率,最好和相机采集帧率一致
Size(640, 480),
true);//彩色格式为true,灰度为false
int num=0;
/*刷新枚举相机*/
dvpRefresh(&count);
if (count > 8)count = 8;
for (i = 0; i < count; i++)
{
if(dvpEnum(i, &info[i]) == DVP_STATUS_OK)
{
printf("已连接相机: %s\r\n", info[i].FriendlyName);
}
}
/*相机初始化*/
status = dvpOpen(0, OPEN_NORMAL, &h);//以索引号打开相机
dvpSetTriggerState(h, false);//设置为连续出图模式
status = dvpStart(h);//启动视频流
cv::namedWindow("Camera",0);//可以拖动窗口大小
cv::resizeWindow("Camera", 640, 480);//设置窗口大小
cv::moveWindow("Camera",1200,500);//设置窗口位置
while(num<=1000)
{
dvpGetFrame(h, &frame, &p, 1000);//采集一帧图像
/*转换为OpenCV格式并显示*/
img = cv::Mat(frame.iHeight, frame.iWidth, CV_8UC1, (uchar*)p);
cv::imshow("Camera",img);//显示图像到窗口
writer<<img;
cv::waitKey(1);
num++;
}
writer.release();
dvpClose(h);
return 1;
}
运行:
如果是彩色格式,修改两处:
- 色彩参数设置为true
writer.open("test.avi",VideoWriter::fourcc('M', 'J', 'P', 'G'),
30, //帧率
Size(640,480),
true);
- CV_8UC1改为CV_8UC3三通道格式数据类型
/*转换为OpenCV格式并显示*/
img = cv::Mat(frame.iHeight, frame.iWidth, CV_8UC3, (uchar*)p);
更多推荐
已为社区贡献4条内容
所有评论(0)