• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于python:关于图像的一些基本操作

python 搞代码 3年前 (2022-02-20) 21次浏览 已收录 0个评论
文章目录[隐藏]

一、Numpy

# numpy图像应用np来reshape
img = np.reshape(img,(new_H,new_W,new_C))   
img = img.reshape(new_H,new_W,new_C)         # 另一种写法

# 以上两种写法等价,另外不能去掉“img = ”,否则没有reshape成果。
# new_W*new_H*new_C 必须等于 old_H*old_W*old_C。 否则会报错
# 这种reshape不倡议用于图像,因为它会搞乱HW与C之间的关系,毁坏掉图像
# numpy图像应用np来resize
img=np.resize(img,(new_H,new_W,new_C))   
img.resize(new_H,new_W,new_C)      # 另一种写法

# 以上两种写法等价,并且不能加上“img = ”,否则会报错。
# new_W*new_H*new_C 必须等于 old_H*old_W*old_C。 否则会报错
# 这种resize也不倡议用于图像,因为它会搞乱HW与C之间的关系,毁坏掉图像
img = np.zeros((H,W),dtype=np.uint8)

二、CV2

# 读取numpy图像
img = cv2.imread('test.jpg', 0)   # 这个参数0,等价于:cv2.IMREAD_GRAYSCALE  (灰度)

# 加一个参数0示意读取灰度图
# H,W,C = img.shape
# numpy图像应用cv2来resize
img = cv2.resize(img, (new_W, new_H), interpolation=cv2.INTER_LINEAR)

# new_W*new_H 能够不等于 old_H*old_W,后果就是形变
# 能够不写“img = ”这一部分,因为图像cv2.resize,它实在的形态就被扭转了,而不是在正本上改的
# W(宽)方向为x轴; H(高)方向为y轴

1. cv2.circle(img, (圆心x,圆心y) ,半径, (255,255,255), -1)

2. cv2.rectangle(img, (左上角x,左上角y), (右上角x,右上角y), (255,255,255), -1)

3. 数组操作:img[y][x]。即先遍历行,再遍历列,合乎c或python语言中失常数组的程序

三、PIL

# PIL读取数据
img = Image.open('test.jpg').convert('L')

# 加一个convert示意读取灰度图
# W,H = img.size
img = img.resize((new_W, new_H), Image.BILINEAR)

# new_W*new_H 能够不等于 old_H*old_W,后果就是形变
# 在正本上批改的,后面必须加“img = ”

四、matplotlib

from PIL import Image
img=Image.open('1.png')
img.show()

PIL应用open()函数来关上图片,应用show()函数来显示图片。这种图片显示方式是调用操作系统自带的图片浏览器来关上图片,有些时候这种形式不太不便,因而咱们也能够应用另上一种形式,让程序来绘制图片。

from PIL import Image
img=Image.open('1.png') 

import matplotlib.pyplot as plt
plt.ion()  # 将交互操作模式关上,用来顺次关上多张图片,即上一张敞开,下一张关上的这种程序操作

plt.imshow(img)

plt.show()  # 图片展现
img.save('1.jpg')   # 图片保留

plt.axis('off')  # 去除坐标轴
plt.savefig('1.jpg')# 图片保留,会生成坐标轴,并且会改边图像的原尺寸,不好用

这种办法尽管简单了些,但举荐应用这种办法,它应用一个matplotlib的库来绘制图片进行显示。matplotlib是一个业余绘图的库,相当于matlab中的plot。

另外须要留神的是,如果想用matplotlib来展现或保留图片,倡议用PIL来读取,不倡议用cv2

因为PIL读取图片的通道程序是R、G、B,合乎matplotlib的要求;

而如果用cv2来读取,通道程序是B、G、R,能够展现并保留,然而色彩会变得很奇怪。

五、tensor

H,W,C = tensor.shape


# 间接保留tensor图像
from  torchvision import utils as vutils
vutils.save_image(tensor_img, './test.jpg', normalize=True)

*、 PIL与cv2互相转化

# PIL转cv2:
img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)

# cv2转PIL:
img = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于python:关于图像的一些基本操作
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址