opencv學習
参考资料
opencv简介
是什么?
计算机视觉开源软件库
numpy
opencv-python的安装
打开cmd
输入
1 | pip install opencv-python |
开梯子下载更快
测试代码
1 |
|
opencv模块
其中core、highgui、imgproc是最基础的模块,该课程主要是围绕这几个模块展开的,分别介绍如下:
- core模块实现了最核心的数据结构及其基本运算,如绘图函数、数组操作相关函数等
- highgui模块实现了视频与图像的读取、显示、存储等接口。
- imgproc模块实现了图像处理的基础方法,包括图像滤波、图像的几何变换、平滑、闻值分割、形态学处理、边缘检测、目标检测、运动分析和对象跟踪等。
其他
- features2d模块用于提取图像特征以及特征匹配,nonfree模块实现了一些专利算法,如sift特征。obidetect模块实现了一些目标检测的功能,经典的基于Haar、LBP特征的人脸检测,基于HOG的行
人、汽车等目标检测,分类器使用Cascade Classification (级联分类)和Latent SVM等。 - stitching模块实现了图像拼接功能。
- FLANN模块 (Fast Library for Approximate Nearest Neighbors),包含快速近似最近搜索FLANN
和聚类Clustering算法。 - ml模块机器学习模块 (SVM,决策树,Boosting等等)
- photo模块包含图像修复和图像去噪两部分。
- video模块针对视频处理,如背景分离,前景检测、对象跟踪等。
- calib3d模块即Calibration (校准)3D,这个模块主要是相机校准和三维重建相关的内容。包含了基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等等。
G-API模块包含超高效的图像处理pipeline引擎
图像的基础操作
- 掌握图像的读取和保存方法
- 能够使用OpenCV在图像上绘制几何图形
- 能够访问图像的像素
- 能够获取图像的属性,并进行通道的分离和合并0
- 能够实现颜色空间的变换
读取图像
1 | cv.imread("路径") |
- cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的透明度都将被忽略。这是默认参数。
- cv.IMREAD*GRAYSCALE: 以灰度模式加载图像
- Cv.IMREAD UNCHANGED: 包括alpha通道的加载图像模式。
可以使用1、0或者-1来替代上面三个标志1
2
3
4
5
6
7
8import numpy as np
import cv2
#以灰度图的形式读取图像
img = cv2.imread("1.png")
cv2.imshow("image", img)
cv2.waitKey(0)
注意:如果加载的路径有错误,不会报错,会返回一个None值
显示图像
1 | cv.imshow("窗口名", 图片) |
注意:在调用显示图像的API后,要调用cv.waitKey()//等待键盘输入 给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。waitkey(0),永远等待
另外我们也可使用matplotlib对图像进行展示。
保存图像
1 | cv.imwrite("文件名", 图片变量) |
总结:
1 | import numpy as np |
course_1
code
1 | # 学习了基本操作,imread(), imwrite()等 |
详解
1 | cap = cv.VideoCapture(2) |
1 | success, img = cap.read() |
1 |
|
course_2
code
1 | import cv2 as cv |
course_3
学习图像像素查看,图片大小调整,图片裁剪
code
1 | import cv2 as cv |
course_4 绘画
1 | import cv2 as cv |
course_5 透视变换
1 | import cv2 as cv |
解析
cv2.getPerspectiveTransform()是一个OpenCV函数,用于获取透视变换矩阵。它需要两个参数,分别是源图像中待测矩形的四点坐标和目标图像中矩形的四点坐标。它返回一个3x3的变换矩阵,可以用于cv2.warpPerspective()函数进行透视变换。
1 | import cv2 |
输出为
1 | [[ 8.24482681e-01 -1.02318154e-01 -3.33674687e+01] |
warpPerspective()函数
主要作用:对图像进行透视变换,就是变形
cv.warpPerspective是OpenCV中的一个函数,主要用于对图像进行透视变换。它可以将原始图像中的任意四边形区域转换为目标图像中的矩形区域,从而实现图像的透视变换。该函数的语法如下:
1 | dst = cv.warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) |
其中,参数含义如下:
src:输入图像,可以是8位无符号整数、32位浮点数或16位有符号整数。
M:3x3变换矩阵。
dsize:输出图像的大小。
dst:输出图像,与输入图像具有相同的数据类型和通道数。
flags:插值方法的标志,可以是cv2.INTER_NEAREST、cv2.INTER_LINEAR、cv2.INTER_CUBIC、cv2.INTER_AREA、cv2.INTER_LANCZOS4等。
borderMode:边界填充模式,可以是cv2.BORDER_CONSTANT、cv2.BORDER_REPLICATE、cv2.BORDER_REFLECT、cv2.BORDER_WRAP等.
borderValue:边界填充值。