一、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)

三、希望如上的一些图片处理方法,可以给和我一样的初学者一些参考。