1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

python图像处理象素的浏览与裁切实例

Python图像处理:浏览与裁切实例详细说明

本际云服务器推荐网小编小本本为大家介绍Python图像处理中的浏览与裁切实例,对于感兴趣的小伙伴们可以参考借鉴,希望可以提供一定的帮助,同时祝愿大家尽快实现涨薪。

python图像处理象素的浏览与裁切实例

对numpy二维数组的浏览

将高清图片读取系统中后,要以numpy二维数组存储。因此,对numpy二维数组的所有功能对图片也适用。对数组元素的浏览,实际上是对图片像素数的浏览。

彩色图片访问方式为:img[i,j,c],其中 i 表示图片的行数,j 表示图片的列数,c 表示图片的通道数(RGB三通道分别对应 0,1,2)。坐标是从左上角开始。

灰度图片访问方式为:gray[i,j]

实例说明

例1:输出小猫图片的 G 通道中的第 20 行 30 列的像素值

from skimage import io, data
img = data.chelsea()
pixel = img[20, 30, 1]
print(pixel)

输出为 129。

例2:显示红色单通道图片

from skimage import io, data
img = data.chelsea()
R = img[:,:,0]
io.imshow(R)

除了对像素进行读取,也可以修改像素值。

例3:对小猫图片随机添加椒盐噪声

from skimage import io, data
import numpy as np
img = data.chelsea()
#随机生成5000个椒盐
rows, cols, dims = img.shape
for i in range(5000):
    x = np.random.randint(0,rows)
    y = np.random.randint(0,cols)
    img[x,y,:] = 255
io.imshow(img)

这里用到了 numpy 包里的 random 来生成随机数,randint(0,cols) 表示随机生成一个整数,范围在 0 到 cols 之间。用 img[x,y,:]=255 这句来对像素值进行修改,将原来的三通道像素值,变为 255。

例4:对小猫图片进行裁剪

from skimage import io, data
img = data.chelsea()
roi = img[80:180,100:200,:]
io.imshow(roi)

对多个像素点进行操作,使用数组切片方式访问。切片方式返回的是以指定间隔下标访问该数组的像素值。

以下是有关灰度图像的一些例子:

img[i,:] = im[j,:] #将第 j 行的数值赋值给第 i 行
img[:,i] = 100 #将第 i 列的所有数值设为 100
img[:100,:50].sum() #计算前 100 行、前 50 列所有数值的和
img[50:100,50:100] #50~100行,50~100列(不包括第100行和第100列)
img<i>.mean() #第 i 行所有数值的平均值
img[:,-1] #最后一列
img[-2,:] (或 im[-2]) #倒数第二行

最后,我们再看两个对像素值进行访问和改变的例子:

例5:将lena图片进行二值化

像素值大于 128 的变为 1,否则变为 0

from skimage import io, data, color
img = data.lena()
img_gray = color.rgb2gray(img)
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)

这个例子使用了 color 模块的 rgb2gray() 函数,将彩色三通道图片转换成灰度图。转换结果为 float64 类型的数组,范围为 [0,1] 之间。

例6:R 通道的所有像素值进行判断

from skimage import io, data
img = data.chelsea()
reddish = img[:,:,0] > 170
img[reddish] = [0, 255, 0]
io.imshow(img)

这个例子先对 R 通道的所有像素值进行判断,如果大于 170,则将这个地方的像素值变为 [0,255,0],即 G 通道值为 255,R 和 B 通道值为 0。

综上所述,本文介绍了 Python 图像处理中的浏览与裁切实例,希望可以对大家有所帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6804.html