• Python图像处理之OpenCV模块




    1、OpenCV模块简介


    OpenCV(Open Source Computer Vision Library)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,主要用于图像和视频处理,可以运行在Linux、Windows、Android和MacOS操作系统上

    OpenCV轻量级且高效:由一系列C函数和少量C++类构成,同时提供了Java、Python、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法

    OpenCV使用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口

    在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常用图像处理函数库,能够快速的实现一些图像处理和识别的任务

    PIL/Pillow库详解、图像简介见文章:传送门

    OpenCV官网:https://opencv.org/

    官方文档参考:https://docs.opencv.org/4.x/

    OpenCV库主要有4个模块:core、imgproc、highgui和videoio

    • core:包含OpenCV库的核心功能,如数据类型、矩阵操作、数组操作、图像处理等
    • imgproc:包含图像处理函数,如阈值处理、滤波、边缘检测、形态学操作、直方图处理等
    • highgui:提供了一些图形界面相关的函数,如图像显示、鼠标和键盘事件处理、视频播放等
    • videoio:提供了一些视频处理相关的函数,如视频的读取和保存、视频的帧率、分辨率等

    OpenCV的应用场景:

    • 物体识别与跟踪:如人脸识别、车牌识别、文本识别、自动驾驶等
    • 图像分割与边缘检测:如医学图像肿瘤分割和边缘检测,以定量诊断和治疗
    • 图像特征提取与描述:如图像拼接和全景重建、深度学习等

    安装:

    pip install opencv-python
    
    • 1

    2、OpenCV图像处理常用操作


    1)读取图像(不支持HTTP读取)

    '''
    cv2.imread(filename, flags)
    - filename:图像文件路径
    - flags:指定图像模式
      - cv2.IMREAD_COLOR:默认,彩色(忽略alpha通道)模式
      - cv2.IMREAD_GRAYSCALE:灰度模式
      - cv2.IMREAD_UNCHANGED:完整图像(包含alpha通道)
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    import cv2
    import numpy as np
    
    img = cv2.imread(r'C:\Users\cc\Desktop\th.jpg')
    # 获取图像宽高
    width, height, mode = img.shape
    print(width, height)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    OpenCV读取HTTP图像见文章:传送门

    2)显示图像

    '''
    cv2.imshow(winname, mat)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    - winname:图像名称
    - mat:读取的图像对象
    - cv2.waitKey(0):等待键盘输入(单位:ms),0表示无限等待,没有该操作图像会一闪而逝
    - cv2.destroyAllWindows():销毁所有窗口
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    cv2.imshow('th', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3

    3)保存图像

    '''
    cv2.imwrite(filename, img, params)
    - filename:保存的图像文件名(带后缀)
    - img:要保存的图像对象
    - params:压缩级别,默认3
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    cv2.imwrite('save.jpg', img)
    
    • 1

    4)图像缩放

    '''
    cv2.resize(src, dsize)
    - src:要缩放的图像
    - dsize:目标大小
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    resized_img = cv2.resize(img, (200, 200))
    cv2.imshow('resized_img', resized_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4

    5)图像裁剪

    cropped_img = img[0: 40, 0: 40]
    cv2.imshow('cropped_img', cropped_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4

    6)图像旋转

    '''
    cv2.getRotationMatrix2D(center, angle, scale):图像旋转
    center:旋转中心  angle:旋转角度(逆时针) scale:比例
    cv2.warpAffine(src, M, dsize):图像平移
    src:要旋转的图像  M:矩阵  dsize:旋转后图像大小
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    M = cv2.getRotationMatrix2D((width / 2, height / 2), 45, 1)
    rotated_img = cv2.warpAffine(img, M, (width, height))
    cv2.imshow('rotated_img', rotated_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7)图像颜色空间转换

    '''
    cv2.COLOR_BGR2GRAY:图像灰度化
    cv2.COLOR_BGR2HSV:RGB转HSV
    cv2.cvtColor(src, code)
    src:源图像  code:转换码
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    gray_img = cv2.cvtColor(img, cv2
    • 相关阅读:
      性能学习笔记--k8s下mysql的连接数分析和调优
      win10下基于qt开发的板卡测试软件
      如何写单元测试
      【牛客刷题-SQL大厂面试真题】NO1.某音短视频
      国家行政区代码
      .NET 6学习笔记(4)——如何在.NET 6的Desktop App中使用Windows Runtime API
      基于springboot小区物业管理系统
      多线程(2)
      华硕电脑怎么恢复删除的文件?有5种可以选择的方案
      【现场问题】datax中write部分为Oracle的时候插入clolb类型字段,插入的数据为string且长度过场问题
    • 原文地址:https://blog.csdn.net/weixin_55629186/article/details/134248235