图片读入程序中后,是以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,:]=255io.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,:] (or 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]=0else:img_gray[i,j]=1
io.imshow(img_gray)

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

例6:

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数字图像处理(3):图像像素的访问与裁剪相关推荐

  1. python+OpenCV图像处理(二)图像像素的访问、通道的合并与分离

    图像像素的访问.通道的合并与分离 (一)像素访问 在第一篇博客中,向大家介绍了,所谓的图像在计算机看来就是一个矩阵,对于RGB图像矩阵一共有三层,分别代表着RGB通道,矩阵中每一个数的大小代表着不同通 ...

  2. Python图像处理二:图像像素的访问与数据类型

    图像像素的访问与数据类型 图像读入程序中后,是以numpy数组存在的,因此对numpy数组的一切功能,对图像也适用.对数组元素的访问,实际上就是对图像像素点的访问. 一.图像像素的访问 彩色图像访问方 ...

  3. python绘制灰度图片直方图-python数字图像处理实现直方图与均衡化

    在图像处理中,直方图是非常重要,也是非常有用的一个处理要素. 在skimage库中对直方图的处理,是放在exposure这个模块中. 1.计算直方图 函数:skimage.exposure.histo ...

  4. (附源码)python数字图像处理课程平台 毕业设计 242339

    Python数字图像处理课程平台的开发 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人 ...

  5. (附源码)Python数字图像处理课程平台 毕业设计242339

    Python数字图像处理课程平台的开发 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人 ...

  6. python数字图像处理(17):边缘与轮廓

    在前面的python数字图像处理(10):图像简单滤波 中,我们已经讲解了很多算子用来检测边缘,其中用得最多的canny算子边缘检测. 本篇我们讲解一些其它方法来检测轮廓. 1.查找轮廓(find_c ...

  7. 第1章 Python 数字图像处理(DIP) --绪论

    Python 数字图像处理 关于本专栏 此专栏为 Python 数字图像处理(DIP)(冈萨雷斯版),专栏里文章的内容都是来自书里,全部手打,非OCR,因为很多公式,都是用LaTex输入,力求更好看的 ...

  8. 数字图像处理:图像的频域

    数字图像处理:图像的频域 一.图像高频信号和低频信号的理解 1.1 图像中的低频信号和高频信号也叫做低频分量和高频分量. 1)空间频率指的是图像中灰度值相对它的邻居点变化方式.如果一副图像中灰度从一边 ...

  9. python数字图像处理以及绘图

    1, subplot的使用 matlab中的用法: subplot(m,n,p)或者subplot(m n p) subplot是将多个图画到一个平面上的工具.其中,m和n代表在一个图像窗口中显示m行 ...

  10. 数字图像处理:图像金字塔

    转载请标明出处:数字图像处理:图像金字塔_数字图像处理opencv_新浪博客 (一)概念 以多个分辨率来表示图像的一种有效且概念简单的结构是图像金字塔.图像金字塔最初用于机器视觉和图像压缩,一个图像金 ...

最新文章

  1. API Monitor(API监控工具)
  2. [hiho1159] Poker
  3. VTK修炼之道69:体绘制讨论_颜色传输函数
  4. mysql now unixtime_MySQL时间函数from_unixtime()date_format()unix_timestamp()now()使用说明
  5. html中单选多选怎么写,HTML中select标签单选多选用法详解
  6. 使用Flex图表组件
  7. Nginx四层负载均衡模块添加
  8. linux下一个apache+tomcat负载均衡和集群
  9. 与MQ通讯的完整JAVA程序
  10. 购买成熟软件产品后的二次开发的问题
  11. MUI APP关于页面之间的传值,plusready和自定义事件
  12. python下载百度文库文档_简单实用的下载百度文库文档的方法
  13. 云编程那些事2 - Java之父的啤酒密谋
  14. 饿了么移动测试平台探索之路
  15. 做sxy官网的一点经验
  16. mysql 统计七日留存率_1.七日留存率-SQL实现
  17. 是否能够成为真正的编程高手,主要是在于是否有毅力坚持学习和练习。输出名言“贵有恒,何必三更起五更睡:最无益,只怕一日曝十日寒。”主要是想让读者激励自己,坚持学习C语言。
  18. 精选(26)面试官:讲讲你对ThreadLocal的理解
  19. 基于云平台的电力供电设备远程监控系统
  20. Python 常用的标准库以及第三方库有哪些?

热门文章

  1. ld: warning: cannot find entry symbol _start; defaulting to 00000000080481d8
  2. mysql 数据导入导出说明
  3. Hierarchical clustering
  4. Arturia Analog Lab for Mac - 原始混合合成器
  5. 照片被误删?别着急,EasyRecovery帮你找回来
  6. 第01期:ubuntu下淘宝网Tengine服务器的搭建
  7. StringUtils 的常用方法
  8. 第二十九篇、UICollectionView瀑布流
  9. Probably at least one of the constraints in the following list is one you don't want.
  10. python greenlet背景介绍与实现机制