Python图像处理之OpenCV模块

本文详细介绍了OpenCV模块在Python中的使用,包括OpenCV的基本概念、图像处理操作,如读取、显示、保存图像,以及图像的旋转、颜色空间转换等。此外,还探讨了PIL与OpenCV之间的图像格式转换,并通过实例展示了OpenCV在人脸识别、车牌识别、文本识别等图像识别应用中的具体应用。
摘要由CSDN通过智能技术生成



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.COLOR_BGR2GRAY:图像灰度化
cv2.COLOR_BGR2HSV:RGB转HSV
cv2.cvtColor(src, code)
src:源图像  code:转换码
'''
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_img', gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值