1. opencv是什么?

opencv是一个基于BSD开源协议的图像处理开源库,截止本人编辑时间:2017年6月1日,最新版本为3.2.0。

2.哪里可以得到opencv的源码以及不同平台的动态库?

opencv的官方地址为http://opencv.org/,可以在这里找到opencv的源码以及其他资源。

opencv 文档 中文 java opencv doc_opencv 文档 中文 java

http://opencv.org/releases.html里面列出了所有可用版本。

opencv 文档 中文 java opencv doc_sierra_02

当然,如果觉得英文看起来太累,可以访问opencv中文网

opencv 文档 中文 java opencv doc_opencv_03

3.如何编译和安装opencv?

opencv目前分为两个版本系列:opencv2.4.x和opencv3.x。

简单点说,opencv3.x是一个阉割后的版本(当然,官方的说法是把原来的C变得更加C++化了),大多数你能搜到的API都是opencv2.4.x系列的,这些API在opencv3.x往往是不支持的,而且opencv3.x把重要的nonfree模块去掉了。nonfree是什么?后面会提到。

你会不会在想,我直接下载编译opencv2.4.x就行了?如果你的MacOS已经升级到了Sierra(10.12.x),那么我只能告诉你:不行,你编译不了了。

Mac Sierra把QTKit库更名成了AVKit库。说实话,如果不是被编译opencv2.4.x折磨到,我都没听说过这两个玩意。当然,如果你喜欢折腾自己的系统,非要编译opencv2.4.x,你大可以找一个老系统的QTKit库,复制到你的系统库里面去,但我不建议这么做。

那么选择编译opencv3.x的朋友,继续往下看吧。

这是opencv-3.2.0的源码目录结构

opencv 文档 中文 java opencv doc_mac_04

打开终端,cd到opencv-3.2.0目录,新建一个release目录,并cd到release目录(注意这里的颜色),敲入:cmake -G "Unix Makefiles"..(注意这两个点不要弄丢)

系统找不到cmake?点这里

接着敲:make,开始编译,接下来你可以切出去干点别的,等个半个小时到一个小时后再来看看是否编译完成。

编译成功后,敲:sudo make install(密码别敲错),这样opencv3.2.0就装到了你的/usr/local里面了。

4.nonfree模块被移除了,以后要用到怎么办?

opencv2里面经常被用到的模块:feature2d,简单点说,这个模块是用来处理图片特征模型的,大多数用到这个模块的都需要用到nonfree模块,但是opencv3把nonfree模块去掉了。这个模块现在被opencv_contrib取代了,可以在https://github.com/opencv/opencv_contrib下载到contrib源码,不过要注意的是,contrib版本跟opencv版本是对应的,使用opencv3.2.0就要用opencv_contrib3.2.0,https://github.com/opencv/opencv_contrib/releases列出了contrib的各个版本。

opencv_contrib3.2.0下载完后目录是这样的

opencv 文档 中文 java opencv doc_opencv 文档 中文 java_05

把文件夹覆盖到opencv3.2.0相应的文件夹,然后到opencv3.2.0的release目录敲:cmake -G "Unix Makefiles"  ..

呃...没错,失败了... protobuf-cpp-3.1.0.tar.gz文件哈希比对失败。

这里下载protobuf-cpp-3.1.0.tar.gz吧,按照说明操作。

操作完成后重新敲:cmake -G "Unix Makefiles"  ..

make

sudo make install

这样opencv_contrib也安装到/usr/local里面了。

5.如何测试安装是否成功?

用Xcode新建一个MacOS Command Tools的工程,加入如下配置

opencv 文档 中文 java opencv doc_opencv_06

opencv 文档 中文 java opencv doc_opencv_07


opencv 文档 中文 java opencv doc_opencv_08

这些库哪里找到的?

opencv 文档 中文 java opencv doc_opencv 文档 中文 java_09

点add other,敲一下"/",在弹出的窗口输入

opencv 文档 中文 java opencv doc_opencv 文档 中文 java_10

go,选择所有dylib

opencv 文档 中文 java opencv doc_opencv 文档 中文 java_11

这样,基本的配置就完成了。

新建一个HelloCV.cpp文件

//
//  HelloCV.cpp
//  opencv3.2.0test
//
//  Created by joe chiu on 2017/6/1.
//  Copyright © 2017年 joe chiu. All rights reserved.
//

#include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    
    Mat img = imread( "hello.png", CV_LOAD_IMAGE_UNCHANGED );
    imshow("hello.png", img);
    
    waitKey(0);
    
    return 0;
}



运行

opencv 文档 中文 java opencv doc_sierra_12

报错了?因为你的运行目录里面没有hello.png。

随便找个一个png图片,拷贝到运行目录,改名hello.png

运行目录?

opencv 文档 中文 java opencv doc_opencv 文档 中文 java_13

猜猜看点哪个打开运行目录。

6.如何编译iOS上用的framework?

cd到opencv3.2.0的platforms/ios目录,敲入:python build_framework.py build

报错了?

因为之前把opencv_contrib加入到opencv里了,目前opencv_contrib没有支持iOS的版本,所以还是弄一个纯净的opencv3.2.0编译吧。