
一、安装
- 在pycharm里只需执行一句命令。
pip install opencv-python
二、OpenCV函数:cv2.imread(), cv2.imshow(), cv2.imwrite()
1、读取图片
cv2.imread(filepath,flags)
他有两个参数:一个是要读入图片的完整路径,一个是读入方式(默认值为1)。
读入方式有三种:
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道(1)
cv2.IMREAD_GRAYSCALE:读入灰度图片(0)
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道(-1)
import cv2
img = cv2.imread(‘dot.jpg’,cv2.IMREAD_COLOR)
2、显示图片
cv2.imshow(wname,img)
第一个参数是显示图像的窗口的名字,第二个参数是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小。
cv2.imshow(‘显示图’,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#dv2.destroyWindow(wname)
cv2.waitKey顾名思义等待键盘输入,单位为毫秒,即等待指定的毫秒数看键则返回按键的ASCII码,程序继续运行。若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
cv2.destroyAllWindow()销毁所有窗口
cv2.destroyWindow(wname)销毁指定窗口
3、保存图片
cv2.imwrite(file,img,num)
第一个参数是要保存的文件路径,第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3.
cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。
cv2.imwrite(‘1.png’,img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite(‘1.png’,img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
三、二值化(阈值分割)
cv2.threshold(src, thresh, maxval, type[, dst])
- 参数1:要处理的原图,一般是灰度图
- 参数2:设定的阈值
- 参数3:对于THRESH_BINARY、THRESH_BINARY_INV阈值方法所选用的最大阈值,一般为255
- 参数4:阈值的方式,表示的是这里划分的时候使用的是什么类型的算法**,常用值为0(cv2.THRESH_BINARY)
ret, th1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
效果如下:
cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)
自适应阈值会每次取图片的一小部分计算阈值,这样图片不同区域的阈值就不尽相同。
- 参数1:要处理的原图
- 参数2:最大阈值,一般为255
- 参数3:小区域阈值的计算方式
- ADAPTIVE_THRESH_MEAN_C:小区域内取均值
- ADAPTIVE_THRESH_GAUSSIAN_C:小区域内加权求和,权重是个高斯核
- 参数4:阈值方法,只能使用THRESH_BINARY、THRESH_BINARY_INV,具体见前面所讲的阈值方法
- 参数5:小区域的面积,如11就是11*11的小块
- 参数6:最终阈值等于小区域计算出的阈值再减去此值
- 参数7: 输出图像,可以忽略
th2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 7)
效果如下:
四、滤波
- 模糊/平滑图片来消除图片噪声
- OpenCV函数:cv2.blur(), cv2.medianBlur()
- cv2.blur()
均值滤波是一种最简单的滤波处理,它取的是卷积核区域内元素的均值,用cv2.blur()实现
cv2.medianBlur(img,3)
中值是所有数排序后取中间的值。中值滤波就是用区域内的中值来代替本像素值,所以那种孤立的斑点,如0或255很容易消除掉,适用于去除椒盐噪声和斑点噪声。
五、融合图片
cv2.addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None)
src1, src2:需要融合相加的两副大小和通道数相等的图像
alpha:src1的权重
beta:src2的权重
gamma:gamma修正系数,不需要修正设置为0
dst:可选参数,输出结果保存的变量,默认值为None
dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(如RGB用三个字节表示,则为24位),选默认值None表示与源图像保持一致。
cv2.addWeighted(img1, 0.9, img2, 0.4, 0)
六、图像处理
窗口大小保持比例:
cv2.namedWindow(‘test’,cv2.WINDOW_KEEPRATIO)
显示色彩变成暗色
cv2.namedWindow(‘test’, cv2.WINDOW_GUI_EXPANDED)
窗口大小不可以改变:
cv2.namedWindow(“test”, cv2.WINDOW_AUTOSIZE)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)