1.你的电脑里已经有了pip、numpy(或者你的电脑上有python包管理器anoconda,并且里面有numpy)
2.没有的话先去安装。(有些时候也可能是你的pip版本太低,最好也去更新一下)
方法一:进入cmd命令行,直接输入pip install opencv-python 然后回车就可以了。
如果出现以下情况可能是因为国外网站下载太慢导致超时了,可以改用其他下载路径(使用镜像)
指令如下:
①: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
如果碰到其他安装问题请上网搜索。
图像读取函数 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)
图像保存函数 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])
图像显示函数 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) # 销毁指定名字的显示窗口
翻转图像函数 cv2.flip(src, flipCode)
src:要转换的图像。
flipcode:控制翻转效果。
flipcode = 0:沿x轴翻转
flipcode > 0:沿y轴翻转
flipcode < 0:x, y轴同时翻转
代码例子:
imgflip = cv2.flip(img,1)
颜色空间转换函数 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)
给图片加文本函数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
图像二值化函数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指图片名。
边缘提取函数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()
完整源代码如下:
运行结果如下:(运行后产生一个窗口,关闭一个窗口后会出现下一个窗口,知道全部窗口产生过)
这里是转载的相关知识
图像处理中,常用的滤波算法有均值滤波、中值滤波以及高斯滤波等。
三种滤波器的对比:
滤波器种类 基本原理 特点
1.均值滤波 使用模板内所有像素的平均值代替模板中心像素灰度值 易收到噪声的干扰,不能完全消除噪声,只能相对减弱噪声
2.中值滤波 计算模板内所有像素中的中值,并用所计算出来的中值体改模板中心像素的灰度值 对噪声不是那么敏感,能够较好的消除椒盐噪声,但是容易导致图像的不连续性
3.高斯滤波 对图像邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值 对图像进行平滑的同时,同时能够更多的保留图像的总体灰度分布特征
意思就是使你的图像灰度分布更均匀,每个点的像素均为周围按33的矩阵在周围取样求平均值,,标准差取0来处理
blurred = cv2.GaussianBlur(image, (3, 3), 0)
#GaussianBlur图像高斯平滑处理
#(3, 3)表示高斯矩阵的长与宽都是3,意思就是每个像素点按33的矩阵在周围取样求平均值,,标准差取0
也叫做二值化处理
故名思意就是转换成黑白图像,后面的参数中 cv2.COLOR_BGR2GRAY 其实就是色彩模式,所以函数名为 cvtColor(色彩模式转换)
cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#颜色模式转换成cv2.COLOR_BGR2GRAY模式下的灰度图像
这一步是将二值化后的图像提取边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体
简明而言就是,小的用于细小的地方处理,大的宏观处理----》大阈值用于分离背景与轮廓,晓得用于拼接细小的轮廓,即可形成一个整体
edge_output = cv2.Canny(gray, 50, 150)
#提取上一步中处理好的图像边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体
输出即可,小面的函数只是对比学习而已,可以不用。