7-2 OpenCV算法解析
目录
- OpenCV
- 最小二乘法
- RANSAC
- 图像相似度比较哈希算法
- 离散余弦变换DCT
1 OpenCV
-
OpenCV是一个开源的计算机视觉库,可以从 http://opencv.org 获取。
-
OpenCV 库用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。
-
OpenCV 设计用于进行高效的计算,十分强调实时应用的开发。它由 C++ 语言编写并进行了深度优化,从而可以享受多线程处理的优势。
-
OpenCV 的一个目标是提供易于使用的计算机视觉接口,从而帮助人们快速建立精巧的视觉应用。
-
OpenCV 库包含从计算机视觉各个领域衍生出来的 500 多个函数,包括
-
工业产品质量检验、
-
医学图像处理、
-
安保领域、
-
交互操作、
-
相机校正、
-
双目视觉
-
以及机器人学。
Just have fun!
-
OpenCV大坑之BGR
- OpenCV 对于读进来的图片的通道排列是BGR,而不是主流的RGB!谨记!
#opencv读入的矩阵是BGR,如果想转为RGB,可以这么转
img4 = cv2.imread('1.jpg')
img4 = cv2.cvtColor(img4,cv2.COLOR_BGR2RGB)
- 除了OpenCV读入的彩色图片以BGR顺序存储外,其他所有图像库读入彩色图片都以RGB存储。
- 除了PIL读入的图片是img类之外,其他库读进来的图片都是以numpy 矩阵。
OpenCV 性能
各大图像库的性能,最好的OpenCV,无论是速度还是图片操作的全面性,都属于碾压的存在,毕竟他是一个巨大的cv专用库。
OpenCV常见算法
- 图像的基本操作读取、显示、存储:
- 通过调用OpenCV中的
cv2.imread()
,cv2.imshow()
,cv2.write()
分别实现。
- 通过调用OpenCV中的
- 在OpenCV中实现将彩色像素转化为灰度像素。
- 图像的几何变换:
- 平移、缩放、旋转、插值(最近邻、双线性)。
- 对比增强:
- 线性变换、伽马变换、直方图均衡化。
- 边缘检测:
- Sobel、Laplace、Canny
- 图像的二维滤波:
cvFilter2D
2 最小二乘法
2.1 线性回归
什么是线性回归?
举个例子
- 某商品的利润在售价为2元、5元、10元时分别为4元、10元、20元,
- 我们很容易得出商品的利润与售价的关系符合直线:y=2x.
在上面这个简单的一元线性回归方程中,我们称“2”为回归系数,即斜率为其回归系数。
- 回归系数表示商品的售价(x)每变动一个单位,其利润(y)与之对应的变动关系。
线性回归表示这些离散的点**总体上“最逼近”**哪条直线。
对!就是用一根直竹签,穿过最多的糖葫芦球