图片读取到计算机中,是以numpy数组存在的。
numpy数组的所有功能对图片也适用。
对数组元素的访问就是对图片像素点的访问。
彩色图片访问方式:
color_img[i,j,c]
i:图片的行数(width)
j:图片的列数(height)
c:图片的通道数(第几通道的意思,RGB三通道分别对应0, 1,2)
坐标是从左上角开始的。
灰度图片访问方式:
gray_img[i,j]
i:图片的行数(width)
j:图片的列数(height)
实验一:输出小猫图片的R通道中第10行20列的像素值
from skimage import io,data
img = data.chelsea()
pixel = img[10,20,0]
print (pixel)
run result:
实验二:显示红色单通道图片
待完善。。。
# 显示红色单通道图片
from skimage import io,data
img = data.chelsea()
R_chanel = img[:,:,0]
io.imshow(R_chanel )
run result:
实验三:修改图片中的像素值:
对小猫这张图片随机添加椒盐噪声
# 对小猫图片随机添加椒盐噪声
from skimage import io,data
import numpy as np # numpy包里的random来生成随机数
img = data.chelsea()
# #随机生成5000个椒盐
rows,cols,dims = img.shape #
for i in range(5000): # 进行5000次循环
x = np.random.randint(0,rows) # # randint(0,rows)表示随机生成一个整数,范围在0到rows之间
y = np.random.randint(0,cols) # randint(0,cols)表示随机生成一个整数,范围在0到cols之间
img[x,y,:] = 255 # 对像素值进行修改,将原来的三通道像素值,变为255
io.imshow(img)
run result:
实验四:对图片进行裁剪:
例如,对skimage中自带的猫咪图片进行裁剪
###### 通过对数组的裁剪,就可以实现对图片的裁剪
from skimage import io,data
img = data.chelsea()
res_img = img[30:180,80:220,:] # 60到180行(width),100到220列(height),所有通道
io.imshow(res_img)
run result:
对多个像素点进行操作,使用数组切片方式访问。
img[i,:] = im[j,:] # 将第 j 行的数值赋值给第 i 行
img[:,i] = 200 # 将第 i 列的所有数值设为 200
img[:100,:60].sum() # 计算前 100 行、前 60 列所有数值的和
img[50:200,50:100] # 50~200 行,50~100 列(不包括第 200 行和第 100 列)
img[i].mean() # 第 i 行所有数值的平均值
img[:,-1] # 最后一列
img[-2,:] (or im[-2]) # 倒数第二行
实验五:将小猫图片进行二值化
##将chelsea图片进行二值化,最终将像素值大于128的变为1,否则变为0
from skimage import io,data,color
img = data.chelsea()
io.imshow(img)
# color模块的rgb2gray()函数,将彩色三通道图片转换成灰度图。转换结果为float64类型的数组,范围为[0,1]之间。
img_gray = color.rgb2gray(img) # [0,1]
io.imshow(img_gray)
rows,cols = img_gray.shape
for i in range(rows):
for j in range(cols):
if (img_gray[i,j]<=0.5):
img_gray[i,j]=0
else:
img_gray[i,j]=1
io.imshow(img_gray)
run result:
补充:
from skimage import io,data
img = data.chelsea()
temp_red = img[:,:,0]>160 # 先对R通道的所有像素值进行判断,如果大于160,
img[temp_red ] = [0,255,0] # 则将这个地方的像素值变为[0,255,0], 即G通道值为255,R和B通道值为0
io.imshow(img)
run result:
参考和引用:
https://blog.csdn.net/denny2015/article/details/50522987
仅用来个人学习和分享,如若侵权,留言立删。
尊重他人知识产权,不做拿来主义者!
喜欢的可以关注我哦QAQ,
你的关注和喜欢就是我write博文的动力。
good luck!