本程序旨在使用电脑默认摄像头作为捕捉设备,来抓取帧,并进行图像处理。将处理后的视频帧作为一个新的文件保存。
同时创建两个窗口同时显示原始帧和处理过的帧。代码如下:
之前一直报错,看网上教程,尝试了很多解决办法,包括加载Microsoft符号库、修改写入的方式MP42 MJPG等,都是不行,最后发现是对读取的视频帧进行灰度化的时候,参数选择错误,注意是COLOR_BGR2GRAY而不是Bayer2GRAY. Opencv默认的通道是BGR。
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int,char **)
{
Mat in_frame, out_frame;
const char win1[] = "Grabbing...", win2[] = "Recording...";
double fps = 30;
char file_out[] = "recorded.avi";
VideoCapture cap(0); //打开默认摄像机,videocapture函数还可以用来打开视频文件:VideoCapture(const string &filename)