注:VC15 -Visual Studio 2017
VC14 -Visual Studio 2015
Windows下VS中配置OpenCV C++开发环境:
头文件 + dll动态库
0.github上下载opencv的 VC14-15.exe(其实是个压缩包)
1.新建VC++空项目,把项目改成x64的 //选择'空项目'
2.配置环境变量, 添加 D:\Study\OpenCV\OpenCV3.4.3-vc\opencv\build\x64\vc15\bin
3.配置头文件包含目录: "配置属性->VC++目录->包含目录" 下添加 xxx/opencv/build/include
4.配置库目录: "配置属性->VC++目->库目录" 下添加: xxx/opencv/build/x64/vc15/lib
5.配置链接器: 用于指定到底是哪个dll; "配置属性->链接器->输入->附加依赖项" 下添加 "opencv_world340d.lib" (只要一个名字够了//340d表示3.4版本的debug版; 目录在opencv\build\x64\vc15\lib下
6.有个别系统在System32目录下,OpenCV所依赖的库可能不匹配,需要手动添加放到System32目录下:
有6个,哪个没有就拷贝过去: concrt140d.dll、msvcp140d.dll、opencv_ffmpeg310_64.dll、opencv_world340.dll、opencv_world340d.dll、ucrtbased.dll
Android下的OpenCV开发:
有三种运行起来的方式
1.Manager APK运行 + Eclipse的Android项目 //进程调用,实际应用中不可行
2.OpenCV封装好的Java Package + so //直接使用封装好的java类
3.jni + include + so库 //以这种方式最可取
Android Studio下的Android Native(C++)工程下配置OpenCV
也是配置 头文件 + so动态库
0.下载opencv-3.4.13-android-sdk.zip,解压出来;
1.拷贝头文件: 从xxxx\OpenCV-android-sdk\sdk\native\jni\include下的opencv和opencv2目录, 拷到项目
xxxx\app\src\main\cpp目录下;
//注:#include中导入opencv头文件时, CMakeLists.txt中默认的是到app目录,会找不到include目录,要不
2.添加so库:
先在xxx/app/libs下新建目录,以ABI命名,如: arm64-v8a ;
现把xxx/OpenCV-android-sdk\sdk\native\libs\arm64-v8a下的libopencv_java3.so, 拷到上面创建的目录下
3.CMakeLists.txt中添加一个链接
OpenCV API :
nameWindow(,) : 创建窗囗(OpenCV自动创建和释放)
cv::imread(,) : //IMREAD_UNCHANGED(<0) | IMREAD_CRAYSCALE(0) | IMREAD_COLOR(>0)
加载图像文件成为一个Mat对象,第二个参数缺省时默认是IMREAD_COLOR,即RGB
cv::cvtColor(,,) //转换色彩空间,有HLS,HSV等
cv::imwrite //保存图像
真彩色,是在RGB色彩空间里
在其他的色彩空间中(如Ycbr中),亮度、饱和度、色泽度分别在单独一个通道里的,方便操作
CV_Asset(myImage.depth()==CV_8U);
获取图像像素指针: mat.ptr<uchar>(row);
const uchar * current = myImage.ptr<uchar>(row); //当前行指针
p(row,col) = current[col] //当前像素点P(row,col)的像素值p(row,col);
像素范围处理:saturate_cast<uchar>() :确保获取的像素范围在0-255,
矩阵的掩膜操作:实现图像对比度提高,重新计算每个像素的像素值,掩膜mask,称为kernel
Mat对象与IplImage:
Mat是OpenCV2.0引进的图像数据结构,自动分配内存,不存在内存泄漏,是OOP的数据结构,分为头部的数据部分
IplImage是2001年OpenCV发布后一直存在,是C语言风格的数据结构,需要开发者自己分配和管理内存,容易导致内存泄漏问题。
Haar特征介绍(Haar-like features)
高类间变异性
低类内变异性
局部强度差
不同尺度 : 2x2,4x4,8x8,16x16,24x24等
计算效率高