资讯专栏INFORMATION COLUMN

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

89542767 / 183人阅读

  此篇文章主要是给大家介绍了python图像处理象素的浏览与裁切实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪。


  前言


  高清图片读取系统中后,要以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)

01.png

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


  例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)

02.png

  这里用到了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)

03.png

  对多个像素点进行操作,使用数组切片方式访问。切片方式返回的是以指定间隔下标访问该数组的像素值。下面是有关灰度图像的一些例子:


  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]=0
  else:
  img_gray[i,j]=1
  io.imshow(img_gray)

  

04.png

       这个例子,使用了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)

05.png

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


  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128834.html

相关文章

  • 【重温基础】17.WebAPI介绍

    摘要:本文是重温基础系列文章的第十七篇。系列目录复习资料资料整理个人整理重温基础篇重温基础对象介绍重温基础对象介绍本章节复习的是中的关于相关知识,介绍的比较多。表示在给定的时间的相关设备的位置。所有现代浏览器均支持对象和使用。 本文是 重温基础 系列文章的第十七篇。今日感受:挑战。 系列目录: 【复习资料】ES6/ES7/ES8/ES9资料整理(个人整理) 【重温基础】1-14篇 【...

    android_c 评论0 收藏0
  • 本文教你用了python图片剪裁

      Python语言的表达照片处理使人们常常所使用的层面,那样我们应该怎么实现图片的裁切呢?接下来本文关键为大家介绍了关于用python图片剪裁的资料,原文中根据案例编码推荐的十分详尽,必须的小伙伴可以借鉴一下  怎么使用python图片剪裁  以上如图所示,这也是1张包括了各种象棋棋子的照片。我们应该将在其中每个棋盘都裁切出去,这时可以借助python的PIL库成功。  一、组装PIL库  假如...

    89542767 评论0 收藏0
  • 运用Python实现图片转字符画

      本文关键阐述了运用Python实现图片转字符画,要把图片转字符画,必须要先界定1个字段名,用于和灰度级做投射,将照片每一个象素的RGB值转化成1个灰度级,把它相对应的标识符导出就得到了字符画  序言  相信大家在网上常常看到有些人展现出各种各样字符画,对于这些色彩斑斓的全球而言,我们平时看到的就是某些超清的彩色图片,有时候再来一个粗糙黑白字符画,还是比较缓解疲劳的。喜爱不要忘记个人收藏、关心、...

    89542767 评论0 收藏0
  • 移动端图片上传踩坑记录(包括 平移 缩放 旋转 裁切

    摘要:上传图片顺时针旋转度问题使用获取图片当前拍摄角度修正后展示裁切位置不正确或需要减去的差值问题描述当目标元素的上级元素中有使用时,用如上的方法都会导致计算错误,这一在常用框架,类库中都存在。应该是和在实现上的差异造成了。 bug1.ios 上传图片 顺时针旋转90度问题 solution1.使用exif.js获取图片当前拍摄角度 修正后展示 http://www.mamicode.com...

    Richard_Gao 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<