官网下载 | https://opencv.org/releases/ |
有针对windows编译好的安装包 说是安装包,其实就是没有安装,就是解压出来下面一些内容。
| |
Vs2019搭建 | 1.配置环境变量 |
https://www.cnblogs.com/liming19680104/p/13598456.html | |
32位 | 官网只编译了64位,没有32位的编译资源,需要自己动手。 |
https://blog.csdn.net/weixin_45741779/article/details/115082491 | |
Opencv为什么编译后没有opencv_world.lib | |
在编译Opencv源码时,会发现一个问题,有的人编译出来的是opencv_world.lib就一个。自己编译出来的lib有很多个,这是为什么? 在用cmake编译时,注意configure之后,是否生成opencv_world.lib是要自己勾选的,默认是不勾选的,如果希望只生成一个lib,就勾选上。 opencv_world.lib只是所有lib的一个打包,在使用的时候,直接在附加依赖项添加这一个就可以,主要是为了方便。 没有打包的话,把其它所有的lib文件全添加是一样效果。 注意:一般不需要生成opencv_world,不然在实际工程项目里会造成比较大量的冗余。 https://zouzhongliang.com/index.php/2019/08/20/opencvweishenmetongyihoumeiyouopencv_world-lib/ |
读取视频指定的帧
//读取指定的帧
const string videoIn = "rain.mp4";
VideoCapture captRefrnc(videoIn);//读取视频
//把rain.map读取到 captRefrnc 后 ,captRefrnc.get(CAP_PROP_FRAME_COUNT) 查看总帧数。
Mat frame1,frame2;//声明两帧
captRefrnc.set(CAP_PROP_POS_FRAMES ,1);//设置偏移量
captRefrnc >> frame1;//读取帧
imshow("a frame ",frame1); //显示
captRefrnc.set(CAP_PROP_POS_FRAMES ,100);
captRefrnc >> frame2;
imshow("anoter frame ",frame2);
waitKey();
截取视频第一帧
//截取视频的第一帧
VideoCapture capture("G:/ResourcePool/视频/C罗.mp4");
if (!capture.isOpened())
{
return;
}
int imgIndex = 0;
Mat frame;
capture >> frame;//读取帧 按游标来读
if (frame.empty())
{
return;
}
char* imageSaveName = new char[200];//声明一个保存名称
//将图片的路径及名称输入到imageSaveName中
sprintf_s(imageSaveName, 200, "G:/ResourcePool/视频/%d.jpg", imgIndex);
//将每一帧图像frame保存到imageSaveName指定的文件中
imwrite(imageSaveName, frame);//写入到图片中
delete[] imageSaveName;
imgIndex++;
cout << "total frames1: " << imgIndex << endl;
capture.release(); //释放