python-openCv图像处理

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

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

喜欢我的文章希望和我一起成长的宝宝们,可以搜索并添加公众号TryTestwonderful ,或者扫描下方二维码添加公众号

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半夏映浮光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值