【calib3d】-----校准跟3D这两个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容,包括基本的多视角几何算法、单位立体摄像头标定、物体姿态估计、立体相似性算法、3D信息的重建等。
【core】------核心功能模块,包含内容:OpenCV基本数据结构;动态数据结构;绘图函数;数组操作相关函数;辅助函数与系统函数和宏;与OpenGL的互操作
【gpu】-------运用GPU加速的计算机视觉模块
【highgui】-------高层GUI图形用户界面,包含媒体的输入、视频捕捉、图像和视频的编码解码、图形交互界面的借口等内容。
【ml】------机器学习模块,基本上是统计模型和分类算法:统计模型;一般贝叶斯分类器;k-邻近;支持向量机;决策树;提升;梯度提高树;随机树;超随机树;期望最大化;神经网络;MLData
【ocl】-------运用OpenCV加速的计算机视觉组件模块
【photo】------包含图像修复和图像去噪两部分
【stitching】-----图像拼接技术:拼接流水线;特点寻找和匹配图像;估计旋转;自动校正;图片歪斜;接缝估测;曝光补偿;图片混合
【video】-----视频分析组件,该模块包括运动估计、背景分离、对象跟踪等视频处理相关内容。
①vector包含在using namespace std;中
②#include --------->#include
#include ------->#include
③format格式化输出时:format(r,"python");------->format(r,Formatter::FMT_PYTHON);
④定义尺寸cvSize(-1,-1);-------->Size(-1,-1);
⑤表示颜色cv_RGB----->Scalar
操作系统32位配x86;操作系统64位配x64。无论怎没配只要运行环境跟配置的一直就不会有啥大问题。
vc15表示visual stdio2017
vc12表示visual stdio2010
vc13表示visual stdio2013
vc14表示visual stdio2015........以此类推
配置的时候选跟自己所安装的软件版本一直的就行。
配置步骤一:
计算机-----属性---高级系统设置----高级-----环境变量----系统变量----找到path----编辑----添加自己的安装路径如D:\OpenCV\opencv\build\x64\vc15\bin;D:\opencv-2.4.11\opencv\build\x64\vc12\lib配置多个用分号隔开。
配置步骤二:
项目属性:VC++目录:
①包含目录: D:\OpenCV\opencv\build\include
D:\OpenCV\opencv\build\include\opencv
D:\OpenCV\opencv\build\include\opencv2
②库目录:D:\OpenCV\opencv\build\x64\vc15\lib
链接器: ①常规:附加库目录D:\OpenCV\opencv\build\x64\vc15\lib
②输入:opencv_world341.lib;opencv_world341d.lib(Debug:带d。Release:不带d)
若报错找不到dll文件,将其赋值----粘贴到c://windows/SysWOW64下:xxxx.dll
(32位的粘贴到c://windows/system下:xxxx.dll)
LNK2005:xxxx:不包含静态库
无法正常启动0xc00007b:Lib包含问题
sorbs...... :载入路径错误(指针越界、未处理异常)
无法打开文件“opencv_ml341(版本号)d.lib”系列错误:LNK1104:库目录与附加依赖不相互对
argc与argv参数 int main(int argc,char**argv,char**env(可无)){ ....}
①arg指的是“参数”;
②argc为整数,用来统计运行程序时送给main函数的命令行参数的个数,visual stdio中默认为1;
③*argv[]为字符串数组,用来存放指向字符串参数的指针数组,每一个元素指向一个参数。
argv[0] 指向程序运行的全部路径名
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串:项目属性----配置属性-----调试---命令参数 , 中的值。(带双引号,多个参数分别“1.jpg”“2.jpg”中间用空格隔开)
argv[2] 指向执行程序名后的第二个字符串
argv[3] 指向执行程序名后的第三个字符串
argv[argc] 为NULL
这两个参数一般在用命令行编译程序的时候有用。
//---------第一个程序:显示图像----------
#include
using namespace cv;//包含cv命名空间
int main() {
Mat srcImage=imread("1.jpg");//载入图像
imshow("原图",srcImage); //显示图像
waitKey(0); //等待任意按键按下
}
//---------第二个程序:图像腐蚀(形态学运算)----------
//用图像中的暗色部分腐蚀掉图像中的高量部分
#include //opencv highgui模块头文件
#include //opencv图像处理头文件
using namespace cv;
int main() {
//显示图像
Mat srcImage = imread("1.jpg");
imshow("【原图】",srcImage);
//进行腐蚀操作
Mat element = getStructuringElement(MORPH_RECT,Size(3,3));
//getStructuringElement函数的返回值为指针形状和尺寸的结构元素(内核矩阵)
Mat dstImage;
erode(srcImage,dstImage,element);
//erode为腐蚀函数
//显示效果图
imshow("【腐蚀图】",dstImage);
waitKey(0);
return 0;
}
//---------第三个程序:图像模糊--用于降噪(均值滤波操作blur)----------
#include //opencv highgui模块头文件
#include //opencv图像处理头文件
using namespace cv;
int main() {
//载入原图
Mat srcImage = imread("1.jpg");
imshow("【原图】", srcImage);
//进行均值滤波操作
Mat dstImage;
blur(srcImage, dstImage,Size(7,7));
//显示效果图
imshow("【均值滤波】", dstImage);
waitKey(0);
return 0;
}
//---------第四个程序:canny边缘检测----------
#include //opencv highgui模块头文件
#include //opencv图像处理头文件
using namespace cv;
int main() {
//载入原图
Mat srcImage = imread("1.jpg");
imshow("【原图】", srcImage);
Mat dstImage, edge, grayImage;
//创建一个与src同类型和大小的矩阵(dst)
dstImage.create(srcImage.size(),srcImage.type());
//将原图像转换为灰度图像
//cvtColor(srcImage,GrayImage,CV_BGR2GRAY);//opencv2版本
cvtColor(srcImage, grayImage,COLOR_BGR2GRAY);//opencv3版本
//使用3*3内核降噪
blur(grayImage,edge,Size(3,3));
//运行canny算子
Canny(edge,edge,3,9,3);
//显示效果图
imshow("【Canny边缘检测】", edge);
waitKey(0);
return 0;
}
//---------第六个程序:读取视频----------
#include
using namespace cv;
//用videoCapture类对视频进行读取显示,以及调用摄像头
int main() {
//初始化
VideoCapture capture("1.wmv");
//循环显示每一帧:
while(1){
Mat frame;//定义一个Mat变量,用于存储每一帧的图像
capture >> frame;//读取当前帧
imshow("读取视频",frame);//显示当前帧
waitKey(30);//延时30ms
}
return 0;
}
//---------第七个程序:调用摄像头采集图像+canny边缘检测----------
#include
using namespace cv;
//用videoCapture类对视频进行读取显示,以及调用摄像头
int main() {
//初始化
VideoCapture capture(0);//参数0表示读取摄像头
Mat edges;
//循环显示每一帧:
while (1) {
Mat frame;//定义一个Mat变量,用于存储每一帧的图像
capture >> frame;//读取当前帧
//将原图像转换为灰度图像
cvtColor(frame, edges, COLOR_BGR2GRAY);//opencv3版本
//使用3*3内核降噪(2*3+1=7)
blur(edges, edges, Size(7, 7));//进行模糊
//运行canny算子
Canny(edges, edges, 0, 30, 3);
imshow("读取视频canny后", edges);//显示当前帧
if (waitKey(30)>= 0)break;//延时30ms
}
return 0;
}