基于python的opencv安装及其简单函数方法使用解析。

python+opencv初学一(基于python的opencv安装及其简单函数方法使用解析。2021 3 7)

目录

    • python+opencv初学一(基于python的opencv安装及其简单函数方法使用解析。2021 3 7)
      • 一、python中的opencv安装
        • 1.前提
        • 2.安装
      • 二、简单函数方法解析
        • 1.图像读取函数imread()
        • 2.图像保存函数imwrite()
        • 3.图像显示函数 imshow()
        • 4.翻转图像函数 flip()
        • 5.颜色空间转换函数 cvtColor()
        • 6.给图片加文本函数putText()
        • 7.图像二值化函数threshold(),也可用来黑白反色
        • 8.边缘提取函数Laplacian()
        • 9.边缘提取函数常用的还有Sobel(),Canny(),这里不做介绍。
      • 三、简单实例
      • 四、附加相关功能函数解析
        • 1.高斯处理
        • 2.灰度转换
        • 3.边缘识别提取

一、python中的opencv安装

1.前提

1.你的电脑里已经有了pip、numpy(或者你的电脑上有python包管理器anoconda,并且里面有numpy)
2.没有的话先去安装。(有些时候也可能是你的pip版本太低,最好也去更新一下)

2.安装

方法一:进入cmd命令行,直接输入pip install opencv-python 然后回车就可以了。
如果出现以下情况可能是因为国外网站下载太慢导致超时了,可以改用其他下载路径(使用镜像)
基于python的opencv安装及其简单函数方法使用解析。_第1张图片
指令如下:
①:pip install opencv-contrib-python
或者
②:pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
推荐②
(这个是清华的镜像,有很多库或者插件都可以用这个下载,会快很多)
ps:这里再附一下国内的镜像源,下载成功概率会高很多吧应该。。

清华:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云:http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:http://pypi.hustunique.com/

山东理工大学:http://pypi.sdutlinux.org/

豆瓣:http://pypi.douban.com/simple/
————————————————
版权声明:本文为CSDN博主「curiousNinen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41627235/article/details/87692748

如果碰到其他安装问题请上网搜索。

二、简单函数方法解析

1.图像读取函数imread()

图像读取函数 cv2.imread(filename, flags)
filename:要读取图片的路径
flags:读取方式的标志,共以下 3 种

cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读入灰度图片
cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道

代码例子:
import cv2
img = cv2.imread(‘1.jpg’,cv2.IMREAD_GRAYSCALE)

2.图像保存函数imwrite()

图像保存函数 cv2.imwrite(filename, img, params)
filename:保存的文件名
img:要保存的图像对象
params:可选参数,针对特定的格式。

对JPEG,表示的是图像的质量,用 0 - 100 的整数表示。
对 PNG,表示的是压缩级别,用 0 - 9的整数表示。

代码例子:
cv2.imwrite(‘1.jpg’,img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite(‘1.png’,img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

3.图像显示函数 imshow()

图像显示函数 cv2.imshow(winname, mat)
winname:显示图像的窗口的名字
mat:要显示的图像(即由 imread 读入的图像),窗口大小自动调整为图片大小

代码例子:
import cv2
img1 = cv2.imread(‘29.jpg’,cv2.IMREAD_GRAYSCALE) # 图像读取
cv2.imshow(‘image’,img1) # 图像显示
cv2.waitKey(0) # 等待键入,参数为 0 表示无限等待。这里是为了方便查看效果,不使用的话,窗口会一闪而逝。
cv2.destroyAllWindows() # 销毁所有显示窗口
#cv2.destroyWindow(wname) # 销毁指定名字的显示窗口

4.翻转图像函数 flip()

翻转图像函数 cv2.flip(src, flipCode)
src:要转换的图像。
flipcode:控制翻转效果。

flipcode = 0:沿x轴翻转
flipcode > 0:沿y轴翻转
flipcode < 0:x, y轴同时翻转

代码例子:
imgflip = cv2.flip(img,1)

5.颜色空间转换函数 cvtColor()

颜色空间转换函数 cvtColor(src, code)
src:要转换的图像。
code:转换的方式代码,形如 cv2.COLOR_X2Y
其中 X,Y 的取值为 RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS

代码例子:
#彩色图像转为灰度图像
img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#灰度图像转为彩色图像
img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)

6.给图片加文本函数putText()

给图片加文本函数putText(图片对象、文本、像素、字体、字体大小、颜色、字体粗细)

代码例子:
img = cv2.imread(“source/bug.png”, cv2.IMREAD_COLOR)
#图片对象、文本、像素、什么字体、字体大小、颜色、字体粗细
new_img = cv2.putText(
img=img,
text=“OOXX”,
org=(60, 50),
fontFace=cv2.FONT_HERSHEY_SIMPLEX,
fontScale=1,
color=(255, 0, 0),
thickness=2
)
cv2.imwrite(“source/bug-text.png”, new_img)

注意:opencv自带的putText函数无法输出中文字符,需要借助pillow

7.图像二值化函数threshold(),也可用来黑白反色

图像二值化函数threshold(img,150,255,参数)
色彩最高值为255
ps:其中img为图像,150,255为阈值可改动,
函数threshold()的参数说明:
cv.THRESH_BINARY | cv.THRESH_OTSU
#大律法,全局自适应阈值 参数0可改为任意数字但不起作用
cv.THRESH_BINARY | cv.THRESH_TRIANGLE
#TRIANGLE法,,全局自适应阈值, 参数0可改为任意数字但不起作用,适用于单个波峰
cv.THRESH_BINARY
# 自定义阈值为150,大于150的是白色 小于的是黑色
cv.THRESH_BINARY_INV(可用于黑白反色)
# 自定义阈值为150,大于150的是黑色 小于的是白色
cv.THRESH_TRUNC
# 截断 大于150的是改为150 小于150的保留
cv.THRESH_TOZERO
# 截断 小于150的是改为150 大于150的保留

代码例子:
import cv2 as cv
image = cv.imread(“C://1.jpg”)
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
ret, binary= cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)#大律法,全局自适应阈值 参数0可改为任意数字但不起作用
binary = cv2.dilate(dst, None, iterations=1)#腐蚀和膨胀是对白色部分而言的,膨胀,白区域变大,最后的参数为迭代次数
binary = cv2.erode(dst, None, iterations=4)#腐蚀,白区域变小

注意:上述代码中ret可改为retval,image,gray,binary指图片名。

8.边缘提取函数Laplacian()

边缘提取函数Laplacian(Gray,cv2.CV_64F)
代码示例:
import cv2
image=cv2.imread("/home/abhinav/PycharmProjects/untitled1/b.jpg")
Gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
Lappy=cv2.Laplacian(Gray,cv2.CV_64F)
cv2.imshow(“Laplacian”,Lappy)
cv2.imshow(“Original”,Gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

9.边缘提取函数常用的还有Sobel(),Canny(),这里不做介绍。

三、简单实例

完整源代码如下:
基于python的opencv安装及其简单函数方法使用解析。_第2张图片
运行结果如下:(运行后产生一个窗口,关闭一个窗口后会出现下一个窗口,知道全部窗口产生过)
基于python的opencv安装及其简单函数方法使用解析。_第3张图片
基于python的opencv安装及其简单函数方法使用解析。_第4张图片
基于python的opencv安装及其简单函数方法使用解析。_第5张图片
基于python的opencv安装及其简单函数方法使用解析。_第6张图片
基于python的opencv安装及其简单函数方法使用解析。_第7张图片
基于python的opencv安装及其简单函数方法使用解析。_第8张图片

四、附加相关功能函数解析

这里是转载的相关知识

1.高斯处理

图像处理中,常用的滤波算法有均值滤波、中值滤波以及高斯滤波等。

三种滤波器的对比:
  滤波器种类 基本原理 特点
  1.均值滤波 使用模板内所有像素的平均值代替模板中心像素灰度值 易收到噪声的干扰,不能完全消除噪声,只能相对减弱噪声
  2.中值滤波 计算模板内所有像素中的中值,并用所计算出来的中值体改模板中心像素的灰度值 对噪声不是那么敏感,能够较好的消除椒盐噪声,但是容易导致图像的不连续性
  3.高斯滤波 对图像邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值 对图像进行平滑的同时,同时能够更多的保留图像的总体灰度分布特征
  
  意思就是使你的图像灰度分布更均匀,每个点的像素均为周围按33的矩阵在周围取样求平均值,,标准差取0来处理
blurred = cv2.GaussianBlur(image, (3, 3), 0)
#GaussianBlur图像高斯平滑处理
#(3, 3)表示高斯矩阵的长与宽都是3,意思就是每个像素点按3
3的矩阵在周围取样求平均值,,标准差取0

2.灰度转换

也叫做二值化处理
  故名思意就是转换成黑白图像,后面的参数中 cv2.COLOR_BGR2GRAY 其实就是色彩模式,所以函数名为 cvtColor(色彩模式转换)

cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  #颜色模式转换成cv2.COLOR_BGR2GRAY模式下的灰度图像

3.边缘识别提取

这一步是将二值化后的图像提取边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体

简明而言就是,小的用于细小的地方处理,大的宏观处理----》大阈值用于分离背景与轮廓,晓得用于拼接细小的轮廓,即可形成一个整体

edge_output = cv2.Canny(gray, 50, 150)
  #提取上一步中处理好的图像边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体
  
输出即可,小面的函数只是对比学习而已,可以不用。

你可能感兴趣的:(python学习笔记,python,opencv,计算机视觉,图像识别)