opencv入门指南和实 ***

opencv入门指南和实 *** ,第1张

opencv入门指南和实 ***

一、安装

  • 在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)

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5522162.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-13
下一篇2022-12-13

发表评论

登录后才能评论

评论列表(0条)

    保存