opencv函数及知识点小结
图片
cv2.imread(‘图片位置’,读取的方式)-------------读入图像
cv2.imshow(‘名字’,‘图像’)-------------------------显示图像
cv2.waitKey()-------------------------------------键盘绑定函数
cv2.destroyAllWindows()-------------------可以轻易的删除任何我们建立的窗口
cv2.namedWindow(窗口名字,初始函数标签)----------创建窗口
标签为cv2.WINDOW_AUTOSIZE时不可调整大小,标签为cv2.WINDOW_NORMAL时可以调整窗口大小
cv2.imwrite(‘文件名’,图像)-----------------保存图像
视频
cv2.VideoCapture(‘参数’)-----------------获取视频
参数为0—笔记本电脑的内置摄像头
xx.release()--------------停止捕获视频
xx.read()------------------返回一个布尔值和视频帧
cv2.flip(frame,参数)--------------------翻转
‘0‘-----垂直翻转 ,’1‘-------------水平翻转
画图
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)----矩形
图像,左上角顶点,右下角顶点的坐标,颜色,厚度
cv2.putText(img,‘OpenCV’,(10,500), font, 4,(255,255,255),2)--------------在图片上添加文字
图像的基本操作
img.shape-----------------------获取图像的形状
返回值是一个包含行数,列数,
通道数的元组
img.dtype------------------- 返回图像的数据类型.
b,g,r=cv2.split(img)-----------分割BGR通道
cv2.split() 是一个比较耗时的操作,能用Numpy 索引索引就尽量用
img=cv2.merge(b,g,r)----------融合BGR
cv2.copyMakeBorder(src,top, bottom, left, right,borderType)---------------为图像扩边(填充)
OpenCV 中是按 BGR,matplotlib 中是按 RGB 排列
图像上的算术运算
cv2.add()-------------------两幅图像进行加法运算
两幅图像的大小,类型必须一致
cv2.addWeighted(第一幅图,权重,第二幅图,权重)------图像混合
AND,OR,NOT,XOR-----------按位操作
当我们提取图像的
一部分,选择非矩形 ROI (感兴趣区域)时这些操作会很有用
mask图像中黑色会被遮住,白色会显示出来
cv2.getTickCount-----------返回从参考点到这个函数被执行的时钟数
图像处理
cv2.cvtColor(input_image,flag)----------颜色空间转换
flag是转换类型,BGR↔Gray—cv2.COLOR_BGR2GRAY
BGR↔HSV—cv2.COLOR_BGR2HSV
OpenCV 的 HSV 格式中,H(色彩/色度)的取值范围是 [0,179],
S(饱和度)的取值范围 [0,255],V(亮度)的取值范围 [0,255]。要记得归一化.
找到要跟踪对象的 HSV 值
现在就可以分别用 [H-100,100,100] 和 [H+100,255,255] 做上下阈值。
图像阈值
cv2.threshold()-------------------------全局阈值
的第一个参数就是原图像,原图
像应该是灰度图。第二个参数就是用来对像素值进行分类的阈值。第三个参数就是当像素值高于(有时是小于)阈值时应该被赋予的新的像素值。第四个参数决定多种不同的阈值方法
返回值:第一个为 retVal,第二个就是阈值化之后的结果图像
cv2.adaptiveThreshold(灰度图,分类的阈值,方法,cv2.THRESH_BINARY,Block Size,常数)----------自适应阈值
阈值就等于的平均值或者加权平均值减去这个常
数。
图像平滑
低通滤波(LPF)帮助我们去除噪音,模糊图像。高通滤波
(HPF) 帮助我们找到图像的边缘
cv.filter2D()------------------------------对图像卷积操作
cv2.blur(img,卷积框的宽和高) ----------平均模糊
cv2.GaussianBlur(img,高斯核的宽和高,标准差)------高斯模糊
去除高斯噪音
cv2.medianBlur((img,卷积核大小(奇数))---------中值模糊
去除椒盐噪声
cv2.bilateralFilter()--------------------------双边滤波
形态学转换
cv2.erode()-----------------腐蚀(去除白噪声)
cv2.dilate()-------------------膨胀(增加图像中的白色区域)
cv2.morphologyEx((img, 方法, kernel))
方法:cv2.MORPH_OPEN--------开运算(先进性腐蚀再进行膨胀)-----------去除噪声
MORPH_CLOSE----------闭运算(先膨胀再腐蚀)-------填充前景物体中的小洞
MORPH_GRADIENT------------形态学梯度(前景物体的轮廓)
MORPH_TOPHAT----------礼帽(原始图像与进行开运算之后得到的图像的差)
.MORPH_BLACKHAT------黑帽(进行闭运算之后得到的图像与原始图像的差)
cv2.getStructuringElement(核形状,核大小)------------结构化元素
图像梯度
cv2.Sobel(img,图像的深度,参数,参数,核大小)------Sobel 滤波器
cv2.Schar()--------------------------------------Schar滤波器
cv2.Laplacian(img,图像的深度)-----------拉普拉斯滤波器
Canny边缘检测
cv2.Canny(img,minVal,maxVal)-----------------边缘检测
cv2.pyrUp()-------------从一个低分辨率小尺寸的图像向下构建一个金子塔(尺寸变大,但分辨率不会增加)
cv2.pyrDown()-------------从一个高分辨率大尺寸的图像向上构建一个金子塔(尺寸变小,分辨率降低)
轮廓
cv2.findContours()
cv2.drawContours()
-----------------分割线--------------------------(晚点更)
本文地址:https://blog.csdn.net/qq_45666248/article/details/107568096
上一篇: 生活中常见的素菜都有啥