《数字图像处理》——基于OpenCV实现(二) 图像的基础操作

本篇博客将介绍有关数字图像处理的基础操作,包括图片的读取,图片的显示,图片的保存。

一.读取图片

OpenCV图片读取的函数为:cv2.imread()

其中有两个参数,第一个参数为读取图片路径,第二个参数为读取图片方式,如:

img=cv2.imread('test.png',cv2.IMREAD_GRAYSCALE)

其中,第二个参数共有三种选择:

cv2.IMREAD_COLOR    #以彩色模式加载图片,也可以用1代替,这是默认参数。
cv2.IMREAD_GRAYSCALE #以灰度图像模式加载图像,也可以用0来代替。
cv2.IMREAD_UNCHANGED #包括alpha通道的加载图像模式,也可以用-1来代替。

二.显示图像

 OpenCV图片读取的函数为:cv2.imshow()

同样有两个参数,第一个为图像的窗口名称,第二个为加载的图片。如:

cv2.imshow('tset_show',img)

但需要注意的是:在显示完图片后,要调用cv2.waitKey()给图像绘制留下时间,(一般设置参数为0),否则图片会显示一下就闪退消失。并加上cv2.destroyAllWindows()在关闭图像删除窗口。(这个函数一般不设置参数)

cv2.imshow('tset_show',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

三.图像的保存

 OpenCV图片读取的函数为:cv2.imwrite()

同样有两个参数,第一个参数为图片保存地址及名称,第二个参数为要保存的图片。如:

cv2.imwrite('lena_gray.png',img)

四.获取图像属性

主要介绍三个获取图片属性的函数:

(1)获取图片形状

img.shape

(2)获取图片大小

img.size

(3)获取图片数据类型

img.dtype

注意:(1)上面三个代码中的img为读取图片的变量名,可能因设置变量不同而不同。 

           (2)若以灰度图像的形式读取图片,则只会输出形状大小而不输出通道数。

五.图像通道的拆分

有时候在处理彩色图片时,需要在BGR各个通道上单独操作,这就需要划分通道,其函数分别为:cv2.split()以及cv2.merge()。其代码如下:

b,g,r=cv2.split(img) #通道拆分

img=cv2.merge((b,g,r)) #通道合并

 六.图像的色彩空间转变 

OpenCV实际上有很多种色彩空间转变的方法,其函数为cv2.cvtColor(),其中两个参数分别为需要转化的图像以及转化的方式。

比较常见的的主要有两种:将BGR形式图片与Gray灰度图转化,将BGR形式图片与HSV色彩空间转化。其代码如下:

img2=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将三通道BGR形式转化为gray灰度图片
img3=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#将三通道BGR形式图片转化为HSV色彩空间图片

其中,第二个参数为cv2.COLOR_xxx2yyy,其中xxx为原本图片形式,yyy为需要转化的图片形式。

例子以及完整代码:

问题:(1)读取一张图片,以三通道方式读取,(2)分别输出其形状,大小,数据类型,(3)并将其通道拆分,并显示其在B通道上的图像,然后再将其合并,(4)将原本BGR形式图片转化为灰度图片,显示其图片(5)保存转化后的图片。

import cv2

img=cv2.imread('lena.png',cv2.IMREAD_COLOR)#读取图片

print(img.shape)#输出形状
print(img.size)#输出大小
print(img.dtype)#输出数据类型

b,g,r=cv2.split(img) #通道拆分
cv2.imshow('b_lena',b) #显示在b通道上的图片 
img=cv2.merge((b,g,r)) #通道合并

img2=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将三通道BGR形式转化为gray灰度图片
cv2.imshow('gray_show',img2)#显示图像
cv2.waitKey(0)
cv2.destroyAllWindows()


cv2.imwrite('lena_gray.png',img2)#保存图像

原图: 

显示属性:

显示在b通道上的图片:

 

转化为灰度图片并显示:

保存结果:

以上就是关于图像基本操作的全部内容,希望对你能有帮助。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值