Python图像处理之OpenCV模块

Python图像处理

    • 1、OpenCV模块简介
    • 2、OpenCV模块图像常用操作
    • 3、PIL与OpenCV图像格式转换
    • 4、图像识别应用案例
      • 4.1、人脸识别
      • 4.2、车牌识别
      • 4.3、文本识别


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

2、OpenCV模块图像常用操作


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

'''
cv2.imread(filename, flags)
- filename:图像文件路径
- flags:指定图像模式
  - cv2.IMREAD_COLOR:默认,彩色(忽略alpha通道)模式
  - cv2.IMREAD_GRAYSCALE:灰度模式
  - cv2.IMREAD_UNCHANGED:完整图像(包含alpha通道)
'''
import cv2
import numpy as np

img = cv2.imread(r'C:\Users\cc\Desktop\th.jpg')
# 获取图像宽高
width, height, mode = img.shape
print(width, height)

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

2)显示图像

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

3)保存图像

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

4)图像缩放

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

5)图像裁剪

cropped_img = img[0: 40, 0: 40]
cv2.imshow('cropped_img', cropped_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

6)图像旋转

'''
cv2.getRotationMatrix2D(center, angle, scale):图像旋转
center:旋转中心  angle:旋转角度(逆时针) scale:比例
cv2.warpAffine(src, M, dsize):图像平移
src:要旋转的图像  M:矩阵  dsize:旋转后图像大小
'''
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()

7)图像颜色空间转换

'''
cv2.

你可能感兴趣的:(#,Python,#,自动化,python,图像处理,opencv)