最近开始了新的折腾之路,参加了学校智能机器人的竞赛0.0,现在开始前期的准备工作,因为要做购物机器人,老师先让我们吧图像识别做出来,年前做不出来就回家种田吧QAQ为了方便整理资料,将工作中的步骤都记录下来,希望自己能够坚持下去。同时也建议同学们在学习时使用新版本的opencv,虽然新的版本资料很少,但时代在发展,不是么?

//最近更新日期:2017/12/06

我们先介绍下OpenCV:

OpenCV (Open Source Computer Vision) is a library of programming functions mainly aimed at real-time computer vision. Originally developed by Intel’s research center in Nizhny Novgorod (Russia), it was later supported by Willow Garage and is now maintained by Itseez. The library is cross-platform and free for use under the open-source BSD license.

多系统版本选择

Windows

先前准备

操作系统:Windows 10
开发工具:Visual Studio 2017
开发语言:C++
OpenCV版本:3.0.0 (安裝位置為D:\opencv)


首先你需要的是从官网http://opencv.org/
下载到你所需要的OpenCV版本

在首页给出的是2.4.13,而我们需要的是3.0 的版本,在首页点进下载的选择页面

此次用到的Visual Studio版本为2017,当然其他版本也是可以的,但我没用过,在此仅供参考。

环境变量的配置

此电脑 → 右键属性 → 高级系统设置 → 环境变量 → path → 编辑
新增以下内容

1
D:\opencv\build\x64\vc12\bin; D:\opencv\build\x86\vc12\bin;

建立Visual Studio 2017项目

新建项目 → 左侧「Visual C++」 → Win32 控制台应用程式→ 输入项目名称 → 确定 → 下一步 → 只勾选「空项目」就好 → 完成

对Visual Studio 2017进行相关设置

点击项目→属性→将平台设置为X64

设定VC++目录 →在「Include目录」增加

1
D:\opencv\build\include

设定VC++目录 →在「库目录」增加

1
D:\opencv\build\x64\vc12\lib

设定连接器 →「输入」 →在「其他相依性」增加

1
2
opencv_ts300d.lib
opencv_world300d.lib

新建源文件

在解决方案资源管理器中项目的源文件处右键→添加→新建项
选择CPP文件,将下面的测试代码粘贴至文件中,编译运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
argv[1] = "lena.jpg";
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR);
if (!image.data)
{
cout << "No" << std::endl;
return -1;
}
namedWindow("Display", CV_WINDOW_NORMAL);
imshow("Display", image);
waitKey(0);
return 0;
}

至此OpenCV的配置工作就完成了

有人会遇到缺少DLL文件的情况,在此提供64位的DLL文件下载:点我下载
将其放置在

1
D:\opencv\build\x64\vc12\bin

Linux

先前准备

操作系统:Ububtu 17.10 (或者其他linux操作)
开发工具:CLion
开发语言:C++&Python
OpenCV版本:3.3


opencv的安装

此处请参考我的另一篇文章

关于一次opencv3.3+Linux(Ubuntu17.04)的编译记录

CLion新建项目

在新建完Clion的C++项目后需要修改项目自带的CMAKE文件,下面提供了一份文件范例(其中VisionTest为项目的名称,请根据实际情况自行修改):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cmake_minimum_required(VERSION 3.6)
project(VisionTest)


find_package(OpenCV REQUIRED)
message(STATUS "OpenCV library status:")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
include_directories(${OpenCV_INCLUDE_DIRS})


set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)

add_executable(vision_test main.cpp)
target_link_libraries(vision_test ${OpenCV_LIBS})

然后可以使用下面的测试程序进行测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
#include "opencv2/core/core.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace std;
int main() {
cout << "Hello, this is opencv tutorial." << std::endl;
cv::Mat img = cv::imread("/home/jfg/Pictures/cat.jpeg");
cv::namedWindow("Window", CV_WINDOW_AUTOSIZE);
cv::imshow("Cat", img);
cv::waitKey(0);
return 0;
}

Python

如果只需要Python环境的话只需要使用pip install opencv-python的命令(在Ubuntu中调用Python3时应使用pip3 install opencv-python命令)

需要注意的是pip中的opencv模块的版本相对最新版本来说会略低一些,如果需要opencv中新版本的特性则需要自行编译opencv,请参考另外一篇文章:

关于一次opencv3.3+Linux(Ubuntu17.04)的编译记录

一些仅供参考的代码

https://github.com/HDsky/opencv_test

参考资料

[1]將OpenCV完美建置於Visual Studio上