1、图片读、写和显示操作
cv2.imread(path,cv2.IMREAD_ANYCOLOR) 读入图片
第一个参数为要读入的图片文件名,第二个参数为如何读取图片
IMREAD_UNCHANGED =-1 // 8bit, color or not
IMREAD_GRAYSCALE = 0 // 8bit, gray
IMREAD_COLOR = 1 // color
IMREAD_ANYDEPTH = 2 // any depth,
IMREAD_ANYCOLOR = 4 // any color
cv2.imshow() 创建一个窗口显示图片
第一个参数表示窗口名字,可以创建多个窗口中,但是每个窗口不能重名;第二个参数是读入的图片。
cv2.waitKey() 键盘绑定函数
一个参数,表示等待毫秒数,将等待特定的几毫秒,看键盘是否有输入,返回值为ASCII值。
如果其参数为0,则表示无限期的等待键盘输入。
cv2.destroyAllWindows():删除建立的全部窗口。
cv2.destroyWindows():删除指定的窗口。
cv2.imwrite():保存图片
共两个参数,第一个为保存文件名,第二个为读入图片。
python xxx.py 'xx.jpg'
import cv2
import sys
if len(sys.argv) != 2:
print('usage: display_image ImageToLoadAndDisplay !')
else:
# Read the file
image = cv2.imread(sys.argv[1], cv2.IMREAD_COLOR)
# check for invalid input
print(image)
if not image.data:
print('Could not open or find the image !')
else:
cv2.namedWindow('Display window', cv2.WINDOW_AUTOSIZE)
cv2.imshow('Display window', image)
key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
cv2.destroyAllWindows()
elif key& 0xFF == ord('s') :
cv2.imwrite('love.png', image)
cv2.destroyAllWindows()
调用opencv,就算图像的路径是错的,OpenCV 也不会提醒你的,但是当你使用命令print img时得到的结果是None。
2、主要模块
一)core——定义了基本数据结构
1.最基础的结构体
Basic Structures
Basic C Structures and Operations
2.动态结构
Dynamic Structures
3.数组操作
包括了abs,absdiff,add,addWeighted,bitwise_and….等等一些列的数组操作运算
Operations on Arrays
4.绘画的功能,画点,线,圆,椭圆,方框等等……
Drawing Functions
5.XML/YAML文件进行存储或调用Opencv的各种数据结构
XML/YAML Persistence
XML/YAML Persistence (C API)
6.聚类:K-Mean聚类以及分割的API
Clustering
7.辅助功能与系统函数和宏
Utility and System Functions and Macros
8.OpenGL交互相关
OpenGL interoperability
二)imgproc——图片的处理
1.图像滤波Image Filtering:线性和非线性,Sobel,Smooth等等一些列实用的功能函数
2.图像的几何变换Geometric Image Transformations:
这一部分提供2D图像的很多几何变换操作,例如非常实用的Resize等等。
3.各种图片形式的转换Miscellaneous Image Transformations:
提供threshold,cvtColor等等12个功能函数
4.直方图Histograms
提供便于计算的一些接口
5.结构分析和形状描述Structural Analysis and Shape Descriptors:
计算所有多边形或者栅格化形状的特证矩moment,例如可以提取下图的手的凸陷部分
6.动作分析以及物体追踪Motion Analysis and Object Tracking:
7.特征检测Feature Detection
(找边界)canny
(找角)
cornerEigenValsAndVecs,cornerHarris,cornerMinEigenVal,cornerSubPix, (预处理)preCornerDetectgoodFeaturesToTrack
(找圆)HoughCircles
(找线)HoughLines,HoughLinesP
8.物体检测Object Detection
就是模板匹配
三)video——视频分析
Video Analysis视频分析,包括以下两块内容:
1.动作分析Motion Analysis
2.物体追踪Object Tracking
VIDEOIO
OpenCV3特有的仅用来读写视频的模块
四)calib3d——3D信息相关
全称是Camera Calibration and 3D Reconstruction,也就是所谓的摄像机标定与三维重建。
包括:
1.基本多视角几何算法
2.单立体摄像机标定
3.物体位姿估计
4.三维重建要素
五)features2d——2D信息相关
显著的特征描述符,描述符匹配器和探测器,包括以下几块内容:
1.特征的检测以及描述:包括Fast算法,MSER,ORB,BRISK,FREAK
Feature Detection and Description
2.特征检测器的接口
Common Interfaces of Feature Detectors
3.描述符提取器的接口
Common Interfaces of Descriptor Extractors
4.描述符匹配器的接口
Common Interfaces of Descriptor Matchers
5.通用描述符匹配器的接口
Common Interfaces of Generic Descriptor Matchers
6.关键点以及匹配的绘制函数
Drawing Function of Keypoints and Matches
7.物体分类:这是基于local 2D features的物体分类,有BOW训练器以及BOW分类器两个模块
Object Categorization
六)objdetect——物体检测和预定义好的分类器实例
Opencv2.4包含Cascade Classification(级联分类)和Latent SVM这两个部分
Opencv3.2所采用的方法为
Haar Feature-based Cascade Classifier for Object Detection
七)highgui——视频捕捉、图像和视频的编码解码、图形交互界面的接口
High-level GUI and Media I/O 高层级的用户交互以及媒体的IO接口,主要包括以下几个方面:
1.用户交互:包括显示图片,窗口的操作,鼠标的操作等等。
2.读写图片或者视频:顾名思义就是对于图片或者视频的一些列操作。
3.Qt新功能
结合Qt可以弄成类似于MFC的有按钮等等功能的界面
八)gpu——利用GPU对OpenCV模块进行加速算法
九)SHAPE——形状的匹配以及距离计算
Shape Distance and Matching,形状的距离以及匹配
Opencv3特有的部分,Opencv2.4并没有…
1. AffineTransformer仿射变换算法的包装类
2. HistogramCostExtractor
3. HausdorffDistanceExtractor
4. ShapeContextDistanceExtractor
5. ThinPlateSplineShapeTransformer
十)ml——机器学习模块(SVM,决策树,Boosting等等)
Machine Learning机器学习模块,基本就是统计学上回归,分类以及聚类的,大致分为以下几个部分:
1.统计模型Statistical Models
2.一般贝叶斯分类器Normal Bayes Classifier
3.K-近邻K-Nearest Neighbors
4.支持向量机SVM Support Vector Machines:之前尝试过的案例:SVM案例
5.决策树Decision Trees
6.级联分类器Boosting
7.梯度树Gradient Boosted Trees
8.随机树Random Trees
9.超随机树Extremely randomized trees
10.期望最大化Expectation Maximization
11.神经网络Neural Networks
12.机器学习数据的形式相关MLData
13.Logistic Regression:类似于SVM也是一种多分类器
十一)flann——近邻搜索
FLANN库全称是Fast Library for Approximate Nearest Neighbors,它是目前最完整的(近似)最近邻开源库。不但实现了一系列查找算法,还包含了一种自动选取最快算法的机制。
主要分为:
1.快速近似最近邻搜索FLANN
2.聚类Clustering
十二)
OPENCV_CONTRIB:也就是Contributed/Experimental Stuf的缩写, 该模块包含了一些最近添加的不太稳定的可选功能,不用去多管。2.4.8里的这个模块有新型人脸识别,立体匹配,人工视网膜模型等技术。
OPENCV_GPU:运用GPU加速的计算机视觉模块
OPENCV_LEGACY:一些已经废弃的代码库,保留下来作为向下兼容,3里以及全部删除。
OPENCV_NONFREE: 也就是一些具有专利的算法模块 ,包含特征检测和GPU相关的内容,在3里删去了。
OPENCV_OCL :即OpenCL-accelerated Computer Vision,运用OpenCL加速的计算机视觉组件模块,在3里整个并入了Core.
OPENCV_TS:测试用。
参考备注:
http://www.cnblogs.com/xiaowuyi/p/4214271.html
https://segmentfault.com/a/1190000003742422
http://blog.csdn.net/eddy_zheng/article/details/48286735
http://www.cnblogs.com/oftenlin/p/7094194.html
http://blog.csdn.net/zmdsjtu/article/details/54924727