windows 10 环境下 openCV如何编译源码生成32位库文件

一 概述

我需要将视频第一帧的图片保存下来当做视频的缩略图。但是我需要32位的环境,因为我朋友的电脑有可能不支持64位。官网下的windows版的环境只有64位。

二 实操

(一).下载openCV源文件

下载地址:https://opencv.org/releases/ 【注】不用下最新的,比新的旧一个版本最好。新的坑让烈士去踩吧,我们需要稳定就好。

windows 10 环境下 openCV如何编译源码生成32位库文件_第1张图片

如果想直接使用64位的库,直接下载2就可以了。2包括1中的源代码。我们下2就好了,下面是解压之后的目录,下过来是exe,其实不是安装,直接解压就好。

windows 10 环境下 openCV如何编译源码生成32位库文件_第2张图片

(二).下载CMake工具

下载地址:https://cmake.org/download/

windows 10 环境下 openCV如何编译源码生成32位库文件_第3张图片

(三). 通过CMake工具生成vs2019的openCV工程解决方案

windows 10 环境下 openCV如何编译源码生成32位库文件_第4张图片

windows 10 环境下 openCV如何编译源码生成32位库文件_第5张图片中间会弹出一次选择编译工具和生成位数选择的界面

【注】1.如果要想生成opencv_world 需要在红色框哪里找到它,勾选上,随着版本不同,会有不同的版本号后缀名。

          2.把java 和 python的都去掉,我们又用不着,编译还花时间。

配置好之后,会需要一点时间等待生成,生成成功之后,就可以打开工程文件了。耗时的工作才刚开始。

(四).操作vs2019

windows 10 环境下 openCV如何编译源码生成32位库文件_第6张图片

windows 10 环境下 openCV如何编译源码生成32位库文件_第7张图片

只需要生成INSTALL就可以了,点击生成,接下来就是慢长的等待,一般不不会出错。

windows 10 环境下 openCV如何编译源码生成32位库文件_第8张图片

上面就是我们需要的32位的库文件。和官方64位的目录结构不是一样啊,就是少了java和python

唯一不同的是,我们的32位的lib和dll为什么这么多啊。而且也没有官方的opencv_world xxx 库。这是因为opencv_world需要在cmake编译时,勾选上。

opencv_world是把所有的库文件都打包在一起了,我们自己编译的是散装的,用到哪个可以选哪个。可以减少项目大小。

(五) 用一下

1.创建一个C++空项目

2.配置一下

windows 10 环境下 openCV如何编译源码生成32位库文件_第9张图片

2.1.配置头文件

windows 10 环境下 openCV如何编译源码生成32位库文件_第10张图片

2.2配置lib目录

windows 10 环境下 openCV如何编译源码生成32位库文件_第11张图片

2.3配置用到的lib

opencv_core451d.lib
opencv_video451d.lib
opencv_videoio451d.lib
opencv_imgcodecs451d.lib

2.4 将dll拷贝到运行目录

windows 10 环境下 openCV如何编译源码生成32位库文件_第12张图片

【注】d结尾表示debug版本,至于用到哪个库,根据报错提示去寻找,然后添加即可

3.3创建一个main.cpp文件

#include 
#include  
#include   
#include   
#include   
#include  
//#include
//#include
//#include

using namespace std;
using namespace cv;


void main()
{
	//类VideoCapture实例化再初始化
	//VideoCapture capture;
	//capture.open("Megamind.avi");
	//类VideoCapture实例化的同时初始化

	VideoCapture capture("G:/ResourcePool/视频/001.mp4");
	if (!capture.isOpened())
	{
		return;
	}

	int imgIndex = 0;
	/*for (;;)
	{*/
	Mat frame;
	capture >> frame;
	if (frame.empty())
	{
		/*break*/;
		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;
}

【注】如果使用release版本,选择对应的lib和dll即可。不要直接复制debug版本,改名称,即去掉后缀d,这样有问题,会提示无法找到程序入口,最好的办法,就是清空生成目录,重新生成,然后运行,会提示缺少dll,这样少什么,就拷贝什么。2021-04-25

 

你可能感兴趣的:(C++,windows,10,opencv)