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

发布时间:2021-10-28 17:30:43 作者:iii
来源:亿速云 阅读:164

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

1. 读取图像

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

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

其中:

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

▲表3-1 常用flags标记值

代码如下:

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

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

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

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

2. 显示图像

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

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

None = cv2.namedWindow(window)

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

cv2.namedWindow("image")

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

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

None = cv2.imshow(window, image)

其中:

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

retval= cv2.waitKey([delay])

其中:

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

None = cv2. destroyAllWindows ()

代码如下:

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所示。

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

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

3. 保存图像

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

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

其中:

代码如下:

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)

其中:

代码如下:

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所示。

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

▲图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])

其中:

代码如下:

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所示。

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

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

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

03 图像属性的获取

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

代码如下:

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进行图像处理”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. 怎么用Python和OpenCV制作实时图像处理?
  2. python opencv、scikit-image和PIL图像处理库有什么区别

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python opencv

上一篇:如何进行微服务的单元、集成和系统测试

下一篇:Mysql数据分组排名实现的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》