在Windows10上,要在C++项目中使用OpenCV有2种方法:
- 在官网下载Win pack,然后运行解压,得到已经编译好的OpenCV链接文件,在VS的项目属性中,添加相应的OpenCV目录与依赖项;
- 在官网下载OpenCV源码,利用CMake与VS编译生成链接文件,然后用CMake配置并生成项目属性。
这篇博客介绍第一种方法,并展示一个OpenCV图像拼接Stitcher类的使用demo。下一篇博客介绍通过源码编译的方式搭建OpenCV环境。
1. Win pack方式与VS项目属性设置
1.1 下载安装
在OpenCV官网下载某个版本的OpenCV的Win pack:

下载后双击进行解压,得到build与sources文件夹(我的解压路径是C:\Program Files\opencv3.4.0):

1.2 VS项目配置
按照常规方法新建一个VS项目,然后打开项目属性,进行如下配置:
(1) VC++目录->包含目录

(2) VC++目录->库目录

(3) 链接器->输入->附加依赖项

其中,opencv_world340.lib是Release版本的,opencv_world340d.lib是Debug版本的。
1.3 API调用(示例为图像拼接Stitcher类的使用)
#include "pch.h"
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/stitching.hpp>
using namespace std;
using namespace cv;
vector<Mat> imgs;
int main()
{
string folder = "./example/";
int img_index_start = 1;
int img_index_end = 2;
for (int i = img_index_start; i <= img_index_end; i++)
{
string file = folder + to_string(i) + ".JPG";
Mat img = imread(file);
if (img.empty())
{
cout << "Can't read image" << file << endl;
return -1;
}
Mat dst;
resize(img, dst, Size(1800, 1200));
imgs.push_back(img);
}
/*Mat img1 = imread("1.jpg");
Mat img2 = imread("2.jpg");
namedWindow("picture 1", CV_WINDOW_NORMAL);
namedWindow("picture 2", CV_WINDOW_NORMAL);
imshow("picture 1", img1);
imshow("picture 2", img2);
imgs.push_back(img1);
imgs.push_back(img2);*/
//create stitcher
Stitcher stitcher = Stitcher::createDefault(true);
//stitching
Mat panorama;
Stitcher::Status status = stitcher.stitch(imgs, panorama);
if (status != Stitcher::OK)
{
cout << "can not stitch images, error code = " << int(status) << endl;
return -1;
}
//save and show
imwrite("result.jpg", panorama);
namedWindow("result image", CV_WINDOW_NORMAL);
imshow("result image", panorama);
waitKey(0);
return 0;
}
这种方法使用较为简单,但是每次都需要进行项目配置,且无法对源码进行修改,也无法跨平台使用。下一篇博客介绍通过源码编译的方式搭建OpenCV环境。
本文介绍了在Windows10上通过OpenCV的Win pack在Visual Studio 2017中设置环境,详细讲述了下载安装、VS项目属性配置的步骤,并给出了使用Stitcher类进行图像拼接的API调用示例。

2万+

被折叠的 条评论
为什么被折叠?



