python图形图像处理

这篇博客通过matplotlib库深入探讨了图像处理技术,包括创建频数分布直方图,调整图像分辨率,将彩色图像转为灰度图,实现90°和45°旋转,图像剪切与粘贴,以及将图像转换为numpy数组进行进一步操作,如显示灰度图、转回Image以及获取点击位置坐标等。

matplotlib

频数分布直方图

#pylab是matplotlib的一部分
# from pylab import show,hist,figure
# import numpy as np
# a=np.array([[1,2,3],[4,2,3]])
# figure()
# #频数分布直方图
# hist(a.flatten(),7)#(数组一维化,小区间所占列数)
# show()

调整图像的分辩率(宽度,高度)

# PIL是matplotlib的一部分
# from PIL import Image
# image2=Image.open('C:/Users/asus/Desktop/pcv_data/data/empire.jpg')
# print("原始分辩率:",image2.size) #图像的分辩率(宽度,高度) 单位:像素

# image2=image2.resize((200,400)) #调整图像的分辩率(宽度,高度)
# print("调整的分辩率:",image2.size)

有色图转为灰度图

#有色图转为灰度图
# from pylab import imshow,subplot,gray
# from PIL import Image
# import numpy as np

# image1 = Image.open('C:/Users/asus/Desktop/pcv_data/data/empire.jpg').convert('L')
# image1.show()

图片旋转90°

# from PIL import Image
# image=Image.open('C:/Users/asus/Desktop/pcv_data/data/empire.jpg')
# image=picture.transpose(Image.ROTATE_90) #图片旋转90°
# image.show()

图片旋转45°(有一些瑕疵)

# from PIL import Image
# image=Image.open('C:/Users/asus/Desktop/pcv_data/data/empire.jpg')
# image=image.rotate(45) #旋转45°
# image.show()

剪切和粘贴图像

from PIL import Image
box=(260,132,303,175) #(左,上,右,下)
picture=Image.open("C:/Users/asus/Desktop/pcv_data/data/empire.jpg")
region=picture.crop(box) #(左,上)到(右,下)连线的一个矩形
region=region.transpose(Image.ROTATE_90) #裁剪图片旋转90°
picture.paste(region,box) # 粘贴图片(旋转90°后图片的外框必须和原图外框同样大小)
picture.show()

图像转为numpy数组

将图像转为numpy数组后显示

#将图像转为numpy数组后显示
# from pylab import imshow,subplot
# from PIL import Image
# import numpy as np

# subplot()
# image1 = np.array(Image.open('C:/Users/asus/Desktop/pcv_data/data/empire.jpg'))

# imshow(image1)

将有色图像转为numpy数组后,显示灰度图

#将有色图像转为numpy数组后,显示灰度图
# from pylab import imshow,subplot
# from PIL import Image
# import numpy as np

# subplot()
# image1 = np.array(Image.open('C:/Users/asus/Desktop/pcv_data/data/empire.jpg').convert('L'))
# # 不使用颜色信息
# gray()
# imshow(image1)

将有色图像转为numpy数组后,再转为Image

#将有色图像转为numpy数组后,再转为Image
# from pylab import imshow,subplot
# from PIL import Image
# import numpy as np

# image1 = np.array(Image.open('C:/Users/asus/Desktop/pcv_data/data/empire.jpg').convert('L'))
# # 不使用颜色信息
# gray()
# image=Image.fromarray(np.uint8(image1)) #转为Image
# image.show()

任意点击图片中的某个位置显示该位置坐标

from PIL import Image
from pylab import *
im = array(Image.open('C:/Users/asus/Desktop/pcv_data/data/empire.jpg'))
imshow(im)
print('Please click 1 points')
x = ginput(1)
print('you clicked:',x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值