目录
一、OpenCV是什么?
二、OpenCV部署方法
三、OpenCV模块简介
四、OpenCV基本操作
五、在图像上绘制图形
一、OpenCV是什么?
1.OpenCV是一个计算机视觉处理开源软件库,支持与计算机视觉和机器学习相关的众多算法
2.优势:基于C++实现,同时提供Py的thon、Ruby、Matlab等语言接口.OpenCV-Python是OpenCV的Python API,结合了OpenCV C++ API和Python语言的最佳特性,并且可以跨平台使用
二、OpenCV部署方法
1.安装OpenCV-Python
pip install opencv-python
检测代码
import cv2
img=cv2.imread('color.jpg')
cv2.imshow("image", img)
cv2.waitKey(0)
2.在利用SIFT和SURF进行特征提取时,需安装
pip install opencv-contrib-python
三、OpenCV模块简介
最基础模块:
1.core模块:实现了 最核心的数据结构及其基本运算,如绘图函数、数组操作相关函数等
2.highgui模块:实现了视频与图像的读取、显示、存储等接口
3.imgproc模块:实现了图像处理的基础方法,包括图像滤波、图像的几何变换、平滑、阈值分割、形态学处理、边缘检测、目标检测、运动分析和对象跟踪等
对于图像处理其他更高层次的方向及应用,OpenCV也有相关的模块实现更高层次模块:
1.features2d模块:用于提取图像特征以及特征匹配,其中nonfree模块:实现了一些专利算法,如sift特征。
2.objdetect模块:实现了一些目标检测的功能,经典的基于Haar、LBP特征的人脸检测,基于HOG的行人、汽车等目标检测,分类器使用Cascade Classification (级联分类)和Latent SVM
3.stitching模块:实现了图像拼接功能。4.Flaan模块:快速近似最近邻搜索Flann和聚类Clustering算法
5.ml模块:机器学习模块
6.photo模块:图像修复和图像去噪
7.vedio模块:针对视频处理,如背景分离、前景检测、对象跟踪
8.calib3d模块:包含基本多视角几何算法
四、OpenCV基本操作
1.图像的读取:
cv.imread()
参数:
1>要读取的图像
2>读取方式:1以彩色模式加载图像,0以灰度模式加载图像,-1包括alpha通道的模式加载图像
2.图像的显示:
cv.imshow()
参数:
1>显示图像的窗口名称,字符串形式
2>要加载的图像(((((
3.注意:调用显示图像的API之后,要调用cv.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况
4.保存图像:
cv.imwirte()
参数:
1>保存到的文件名
2>要保存的图像
import cv2 as cv
img=cv.imread("color.jpg",0)
cv.imshow('image',img)
cv.waitKey(0)
cv.destroyAllWindows()
cv.imwrite('image/color.jpg',img)
5.获取并修改图像中像素点:通过行列坐标获取像素点像素值,进行像素值修改
import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
img=cv.imread('snow.jpg')
#获取某个点像素值
px=img[100,100]
#仅获取蓝色通道的强度值
blue=img[100,100,0]
#修改某个位置像素值
img[100,100]=[0,0,0]
plt.imshow(img)
plt.show()
cv.waitKey(0)
cv.destroyAllWindows()
五、在图像上绘制图形
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#创建图像
img=np.zeros((512,512,3),np.uint8)
#绘制直线
cv.line(img,(0,0),(511,511),(255,0,0),5)
#绘制圆形
cv.circle(img,(256,256),60,(0,255,0),-1)
#绘制方形
cv.rectangle(img,(100,100),(400,400),(0,0,255),5)
#图像上写字
cv.putText(img,'Hello!', (100,150),cv.FONT_HERSHEY_COMPLEX,5,(200,200,200))
#显示结果
plt.imshow(img[:,:,::-1])
plt.show()