千家信息网

怎么用Python和OpenCV进行图像处理

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍"怎么用Python和OpenCV进行图像处理",在日常操作中,相信很多人在怎么用Python和OpenCV进行图像处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
千家信息网最后更新 2025年11月09日怎么用Python和OpenCV进行图像处理

这篇文章主要介绍"怎么用Python和OpenCV进行图像处理",在日常操作中,相信很多人在怎么用Python和OpenCV进行图像处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么用Python和OpenCV进行图像处理"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 读取图像

OpenCV提供了cv2.imread()函数用于进行图像的读取操作。该函数的基本格式为:

retval = cv2.imread(filename[, flags])

其中:

  • retval是返回值,其值是读取到的图像。

  • filename是要读取图像的完整文件名。

  • flags是读取标记,用来控制读取文件的类型。部分常用的标记值如表3-1所示,其中第一列的值与第三列的数值表示的含义一致。

▲表3-1 常用flags标记值

  • 例3-1 使用cv2.imread()函数读取一幅图像

代码如下:

import cv2 as cv  image = cv2.imread("F:/picture/lena.png")      # 读取lena图像  print(image)

运行代码会得到lena图像的像素值,如图3-3所示。

▲图3-3 lena图像部分像素值

2. 显示图像

OpenCV提供了多个与图像显示有关的函数,下面简单介绍常用的几个。

namedWindow()函数用来创建指定的窗口,一般格式如下:

None = cv2.namedWindow(window)

其中,window是窗口的名字。例如:

cv2.namedWindow("image")

这句程序会新建一个名字为image的窗口。

imshow()函数用来显示图像,其一般格式如下:

None = cv2.imshow(window, image)

其中:

  • window是窗口的名字。

  • image是要显示的图像。

waitKey()函数用来等待按键,当有键被按下时,该语句会被执行。其一般格式如下:

retval= cv2.waitKey([delay])

其中:

  • retval是返回值。

  • delay表示等待键盘触发的时间,单位是ms。当该值为负数或0时表示无限等待,默认值为0。

destroyAllWindows函数用来释放所有窗口,其一般格式为:

None = cv2. destroyAllWindows ()
  • 例3-2 显示读取的图像

代码如下:

import cv2 as cv               # 导入从cv2模块  image = cv.imread("F:/picture/lena.png")     # 读取lena图像  cv.namedWindow("image")     # 创建一个image的窗口  cv.imshow("image", image)    # 显示图像  cv.waitKey()               # 默认为0,无限等待  cv.destroyAllWindows()      # 释放所有窗口

程序运行结果如图3-4所示。

▲图3-4 例3-2的运行结果

3. 保存图像

OpenCV中提供了cv2.imwrite()函数来保存图像,其一般格式为:

retval= cv2.imwrite(filename, img[, params])

其中:

  • retval是返回值。

  • filename是要保存的图像的完整路径名,包括文件的扩展名。

  • img是要保存的图像的名字。

  • params是保存的类型参数,可选。

  • 例3-3 编写程序,将读取到的图像保存

代码如下:

import cv2 as cv               # 导入从cv2模块  image = cv.imread("F:/picture/lena.png")     # 读取lena图像  cv.imwrite("F:/picture/lenaresult.png",image) #将图像保存到F:/picture/下,名字为lenaresult

02 图像通道的基本操作

在图像处理过程中,有时会根据需要对通道进行拆分与合并。在OpenCV中提供了split()和merge()函数对图像进行拆分与合并。下面对这两个函数进行介绍。

1. split()拆分函数

函数split()可以拆分图像的通道,例如BGR图像的三个通道。其一般格式如下:

b,g,r = cv2.split(img)

其中:

  • b、g、r分别是B通道、G通道、R通道的图像信息。

  • img是要拆分的图像。

  • 例3-4 编写程序,使用split()函数对图像进行拆分

代码如下:

import cv2 as cv  image = cv.imread("F:/picture/lena.png")  b,g,r = cv.split(image)          # 拆分图像通道分为b,g,r三个通道  cv.imshow("b",b)             # 显示b通道的图像信息  cv.imshow("g",g)    # 显示g通道的图像信息  cv.imshow("r",r)    # 显示r通道的图像信息  cv.imshow("image", image)  cv.waitKey()  cv.destroyAllWindows()

程序运行结果如图3-5所示。

▲图3-5 例3-4的运行结果:a)原始图像,b)B通道图像,c)G通道图像,d)R通道图像

其中,图3-5a是原图,图3-5b是B通道的图像,图3-5c是G通道的图像,图3-5d是R通道的图像。

2. merge()合并函数

通道合并是通道拆分的逆过程,可以将三个通道的灰度图像合并为一张彩色图像。OpenCV中提供了merge()函数来实现图像通道的合并,其基本格式为:

imagebgr = cv2.merge([b,g,r])

其中:

  • imagebgr是合并后的图像。

  • b、g、r分别是B通道、G通道、R通道的图像信息。

  • 例3-5 编写程序,演示合并图像的过程

代码如下:

import cv2 as cv  image = cv.imread("F:/picture/lena.png")  b,g,r = cv.split(image)          # 拆分图像通道分为b,g,r三个通道  imagebgr = cv.merge([b,g,r])    # 将b,g,r三个通道的图像合并  cv.imshow("image", image)  cv.imshow("imagegbgr", imagebgr)  cv.waitKey() cv.destroyAllWindows()

程序运行结果如图3-6所示。

▲图3-6 例3-5的运行结果:a)原始图像 b)拆分并合并后的图像

其中,图3-6a是原始图像,图3-6b是经过拆分后又合并的图像。

03 图像属性的获取

在进行图像处理时经常需要获取图像的大小、类型等属性信息。下面介绍几个常用属性。

  • shape:表示图像的大小。如果是彩色图像,则返回包含行数、列数和通道数的数组;如果是二值图像或灰度图像,则返回包含行数和列数的数组。

  • size:表示返回的图像的像素数目。

  • dtype:表示返回的图像的数据类型。

  • 例3-6 编写程序,观察图像的属性值

代码如下:

import cv2 as cv  image = cv.imread("F:/picture/lena.png")  print("image.shape",image.shape)        # 输出图像的大小属性  print("image.size",image.size)          # 输出图像的像素数目属性  print("image.dtype",image.dtype)        # 输出图像的类型属性

程序运行结果为:

image.shape (512, 512, 3)  image.size 786432  image.dtype uint8

到此,关于"怎么用Python和OpenCV进行图像处理"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

图像 通道 函数 程序 格式 运行 代码 属性 结果 图像处理 处理 信息 三个 名字 类型 像素 常用 如图 学习 原始 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 贵阳工控网络安全 数据库的规范化检验 php 中页面查询数据库 数据库连表查询方法 服务器安全证书是什么情况 江西软件开发解决方案服务 数据库开发有哪些技能点 网络安全法正式实施的时间 php链接数据库的技术 服务器安全购 枸杞版 美国高硬防服务器租用 爱钱进为什么不能登录服务器 万能钥匙查找的网络安全吗 本地虚拟机和服务器区别 吉林市会众软件开发有限公司 网络安全检测app取名 网络公司服务器安全 用一个数据库开二区 网络拓扑结构与网络技术相关 云上城之歌电脑版连接服务器失败 惠普服务器换硬盘无法识别 数据库连不上怎么跳过 数据库触发器利弊 软考数据库下午应用技术答案 阿里旺旺软件开发商 华为云管理节点服务器 网络安全法正式实施的时间 台湾感叹大陆互联网科技 容器数据库数据存在容器里面吗 达梦基于什么数据库改的
0