参考:Opencv中VideoWriter详解https://blog.csdn.net/qq_30011277/article/details/109219684https://blog.csdn.net/qq_30011277/article/details/109219684
但是x86Ubuntu下用OpenCV4.5编译报错:
解决:
CV_FOURCC改为VideoWriter::fourcc
完整代码:
#include#include #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("已连接相机: %srn", 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);//采集一帧图像 img = cv::Mat(frame.iHeight, frame.iWidth, CV_8UC1, (uchar*)p); cv::imshow("Camera",img);//显示图像到窗口 writer<
运行:
如果是彩色格式,修改两处:
- 色彩参数设置为true
writer.open("test.avi",VideoWriter::fourcc('M', 'J', 'P', 'G'),
30, //帧率
Size(640,480),
true);
- CV_8UC1改为CV_8UC3三通道格式数据类型
img = cv::Mat(frame.iHeight, frame.iWidth, CV_8UC3, (uchar*)p);



