一、OpenCv简介
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCv官网https://opencv.org/
二、OpenCv在python中使用
1、引入:import cv2
2、读取图片:cv2.imread
参数1:图片的文件名
如果图片放在当前文件夹下,直接写文件名就行了,如’lena.jpg’
否则需要给出绝对路径,如’D:\OpenCVSamples\lena.jpg’
参数2:读入方式,省略即采用默认值
cv2.IMREAD_COLOR:彩色图,默认值(1)
cv2.IMREAD_GRAYSCALE:灰度图(0)
cv2.IMREAD_UNCHANGED:包含透明通道的彩色图(-1)
3、展示图片:cv2.imshow('title', img)
4、保存图片:cv2.imwrite(path,img) #将图片保存在path路径下
5、阈值分割:例子如下
def do_threshold(self,img):
#◦参数1:要处理的原图(一般为灰度图)
#◦参数2:最大阈值,一般为255
#◦参数3:小区域阈值的计算方式◦ADAPTIVE_THRESH_MEAN_C:小区域内取均值
# ◦ADAPTIVE_THRESH_GAUSSIAN_C:小区域内加权求和,权重是个高斯核
#◦参数4:阈值方式(跟前面讲的那5种相同)cv2.THRESH_BINARY(常用)、
# cv2.THRESH_BINARY_INV、
# cv2.THRESH_TRUNC、
# cv2.THRESH_TOZERO、
# cv2.THRESH_TOZERO_INV
#◦参数5:小区域的面积,如11就是11*11的小块
#◦参数6:最终阈值等于小区域计算出的阈值再减去此值
#image_mean=cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 35, 4)
#cv2.imshow("image_mean", image_mean) #展示图片
#cv2.waitKey(0)
#blur = cv2.GaussianBlur(img, (5, 5), 0)
image_gaussian=cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 35, 4)
cv2.imshow("image_gaussian", image_gaussian) #展示图片
cv2.waitKey(0)
cv2.imshow("image_gaussian", ~image_gaussian) #展示图片
cv2.waitKey(0)
# 先进行高斯滤波,再使用Otsu阈值法
#blur = cv2.GaussianBlur(img, (5, 5), 0)
ret3, otsu = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cv2.imshow("image_otsu", otsu) #展示图片
cv2.waitKey(0)
return image_gaussian
6、图片缩放:例子如下
def img_resize(self,img):
# 按照比例缩放,如x,y轴均放大一倍
res = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR)
cv2.imshow("image_resize", res) #展示图片
cv2.waitKey(0)
return res
7、图片旋转:例子如下
#选转图片
#参数一:img灰度图片
#参数二:du选转度数(正:逆时针,负:顺时针)
#参数三:缩放比例
def xuanZHuan_img(self,img,du,resize):
#获取行、列
rows, cols = img.shape
#定义变换矩阵
#◦参数1:图片的旋转中心
#◦参数2:旋转角度(正:逆时针,负:顺时针)
#◦参数3:缩放比例,0.5表示缩小一半
M = cv2.getRotationMatrix2D((cols / 2, rows / 2), du, resize)
#进行旋转
dst = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow('rotation', dst)
cv2.waitKey(0)
三、希望如上的一些图片处理方法,可以给和我一样的初学者一些参考。