图像处理的几种方法

图像处理的几种方法

1.使用skimage

namedetailsnamedetailsnamedetails
astronaut宇航员图片coffee一杯咖啡图片lenalena图片
camera拿相机的人图片coins硬币moon月亮
checkerboard棋盘horsepage一页书
chelsea小猫图片hubble_deep_field星空text文字
clock时钟immunohistochemistry结肠
import numpy as np
import scipy
import matplotlib.pyplot as plt
from skimage import io,data
img=data.chelsea()
img=io.imread('d:/python/loli.jpg')
#读取图片
# img=io.imread('d:/python/loli.jpg',as_grey=True)
#图片变换
[m,n,l]=img.shape
img1=skimage.transform.resize(img,(int(m*0.6),int(n*0.6),l),mode='reflect')
#保存图片
io.imsave('d:/python/loli1.jpg',img1)
io.imshow(img1)
plt.show()
# 显示图片信息
print (type(img))  #显示类型
print (img.shape)  #显示尺寸
print (img.shape[0])  #图片宽度
print (img.shape[1])  #图片高度
print (img.shape[2])  #图片通道数
print (img.size)   #显示总像素个数
print (img.max())  #最大像素值
print (img.min())  #最小像素值
print (img.mean()) #像素平均值
C:\ProgramData\Anaconda2\lib\site-packages\skimage\util\dtype.py:122: UserWarning: Possible precision loss when converting from float64 to uint8
  .format(dtypeobj_in, dtypeobj_out))

这里写图片描述

<type 'numpy.ndarray'>
(415L, 518L, 3L)
415
518
3
644910
255
0
111.793140128

2 使用scipy.misc(miscellaneous routines)不推荐,很多已经deprecated

Various utilities that don’t have another home.
Note that Pillow (https://python-pillow.org/) is not a dependency of SciPy, but the image manipulation functions indicated in the list below are not available without it.

Deprecated functions:

col 1col 2
bytescale(*args, **kwds)bytescale is deprecated!
fromimage(*args, **kwds)fromimage is deprecated!
imfilter(*args, **kwds)imfilter is deprecated!
imread(*args, **kwds)imread is deprecated!
imresize(*args, **kwds)imresize is deprecated!
imrotate(*args, **kwds)imrotate is deprecated!
imsave(*args, **kwds)imsave is deprecated!
imshow(*args, **kwds)imshow is deprecated!
toimage(*args, **kwds)toimage is deprecated!
from scipy import misc
import matplotlib.pyplot as plt
import numpy as np
# 读取图片
img=misc.imread('d:/python/loli.jpg',mode='RGB')
# 改变大小
img1=scipy.misc.imresize(img,(111,80),interp='nearest')
# 显示图片
#misc.imshow(img) have been deprecated
plt.imshow(img)
plt.show()
misc.imsave('d:/python/loli1.jpg',img)

这里写图片描述

3 使用PIL做图像处理

3.1 Reading and Writing Images : open( infilename ) , save( outfilename )

3.2 Cutting and Pasting and Merging Images :

crop() : 从图像中提取出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left, upper, right, lower),坐标系统的原点(0, 0)是左上角。
paste() :
merge()

3.3 几何变换

 box = (100, 100, 200, 200)
 region = im.crop(box)
 region.show()
 region = region.transpose(Image.ROTATE_180)
 region.show()
 im.paste(region, box)
 im.show()
#旋转一幅图片
def roll(image, delta):
    "Roll an image sideways"

    xsize, ysize = image.size

    delta = delta % xsize
    if delta == 0: return image

    part1 = image.crop((0, 0, delta, ysize))
    part2 = image.crop((delta, 0, xsize, ysize))
    image.paste(part2, (0, 0, xsize-delta, ysize))
    image.paste(part1, (xsize-delta, 0, xsize, ysize))

    return image
#简单的几何变换
out = im.resize((128, 128))                     #
out = im.rotate(45)                             #逆时针旋转 45 度角。
out = im.transpose(Image.FLIP_LEFT_RIGHT)       #左右对换。
out = im.transpose(Image.FLIP_TOP_BOTTOM)       #上下对换。
out = im.transpose(Image.ROTATE_90)             #旋转 90 度角。
out = im.transpose(Image.ROTATE_180)            #旋转 180 度角。
out = im.transpose(Image.ROTATE_270)            #旋转 270 度角。
from PIL import Image
im=Image.open('d:/python/loli.jpg')
print im.format,im.size,im.mode
im.show()
JPEG (518, 415) RGB
box = (100, 100, 200, 200)
region = im.crop(box)
region.show()
region = region.transpose(Image.ROTATE_180)
region.show()
im.paste(region, box)
im.show()
out = im.resize((128, 128))                     #
out = im.rotate(45)                             #逆时针旋转 45 度角。
out = im.transpose(Image.FLIP_LEFT_RIGHT)       #左右对换。
out = im.transpose(Image.FLIP_TOP_BOTTOM)       #上下对换。
out = im.transpose(Image.ROTATE_90)             #旋转 90 度角。
out = im.transpose(Image.ROTATE_180)            #旋转 180 度角。
out = im.transpose(Image.ROTATE_270) 
out.show()
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值