图像保存
cv2.imwrite(tupian,jpg1.2? 图像的基本表示方法
分为二值图像、灰度图像、彩色图像 这三种表示方法。
二值图像:0和1表示像素点颜色,0为黑色,1为白色。
灰度图像:256个灰度级,用数值[0,255]表示,0为黑色,1为白色。
彩色图像:RGB色彩空间表示红、绿、蓝三种通道,数值均为[0,255]。但是在opencv中用BGR色彩空间表示。
不同的表示方法和色彩空间之间可以互相转换。
?
1.3 ?像素处理
像素是构成一幅图像的基本组成单位。
二值图像和灰度图像:img[0,2]表示第0行第2列的像素点。
彩色图像:opencv里img[0,2]表示第0行第2列上B、G、R三个通道的像素值,img[0,2,2]表示第0行第2列上第2个通道R的像素值。
注1:可以使用二层或三层循环嵌套,对某区域内像素值整体修改,如:
for i in range(0,50): i表示像素的行数
for j j表示像素的行数
for k k表示通道数
img[i,j,k]=255 该区域的像素值均修改为255
注2:使用numpy库中的zeros()函数可以生成一个元素值都为0的数组,如:
numpy as np
img = np.zeros((3,5,3),dtpye=np.uint8)
?
1.4 ?使用numpy访问像素
numpy模块中提供了item()访问像素值,itemset()修改像素值
item(i,j)或item(i,k) ???
itemset((i,j),a) 或 itemset((i,k),a)? ?i,j为行和列,k为彩色图片中的通道,a为新值。如:
print(img.item(3,2)=读取原像素值
img.itemset((3,2),255) 将第3行第2列R通道的像素值修改为255
?
1.5 ?感兴趣区域(Region of Interset,ROI)
如果需要使用一张图片的某区域,可以将其定为感兴趣区域(ROI),然后就能对其整体进行操作。
A = img1[10:30,50:100] 将img1的第10-30行像素、50-100列像素设定为ROI区域
img2[20:40,300:350] = A 将该ROI区域赋给img2的第20-40行像素、300-350列像素
?
1.6??通道操作
对通道进行操作分为通道拆分和通道合并。
(一)通道拆分:
将BGR图像中的三个通道分别拆分出来。分为索引拆分方法和函数拆分方法。
索引拆分:
拆分为B、G、R三个通道
B = img[:,:,0]
G = img[:,1]
R = img[:,2]
函数拆分:
B,G,R = cv2.split(img)
(二)通道合并:
使用cv2.merge()函数将三个通道的灰度图像构成一幅彩色图像。
bgr = cv2.merge([b,g,r])
?
1.7??获取图像属性
获取图像常用的属性,如大小、类型等。
shape 返回图像行数、列数、通道数
size 返回图像像素数
dtype 返回图像的数据类型
img.shape=shape 返回图像行数、列数、通道数
img.size=size 返回图像像素数
img.dtype=dtype 返回图像的数据类型
?
这次内容就分享到这里了,下次继续更新第2章图像的运算,希望与各位老师和小伙伴们交流学习~
?
(编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!