python怎么画图片 wafer map_python 读取,显示,保存图片遇到的问题集锦 & SaliencyMap代码实现...

本文详细介绍了使用Python进行图像处理的方法,包括如何使用plt.imshow()显示灰度图像,解决PyCharm中imshow无法绘图的问题,以及如何读取、保存图片。此外,还展示了如何实现SaliencyMap,并给出了去除图片保存时多余空白的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

plt.imshow()将灰度图像进行彩色映射

https://blog.youkuaiyun.com/missyougoon/article/details/89510188tong

图片是灰度图像 (通道数为1),为什么可视化的图片是彩色的?关键在于plt.imshow()

使用 plt.imshow() 方法进行画图,该方法有个非常实用的功能,可以将灰度图像按照灰度值的高低映射成彩色图像,这对于人类的视觉来说再友好不过了。既然要映射成彩色,那总得有一系列彩色映射表吧,这就是官方文档上说到的colormap。

如果想要显示原本的灰度图像,可以用如下代码

# 这里必须加 cmap='gray' ,否则尽管原图像是灰度图(下图1),但是显示的是伪彩色图像(下图2)(如果不加的话)

plt.imshow(img,cmap='gray')

PyCharm中matplotlib.pyplot.imshow()无法绘图

https://blog.youkuaiyun.com/qq_28869927/article/details/83316023a739ef1ba60c42f0cacc586144e75f71.png

matplotlib.pyplot as plt

# 直接使用plt.imshow无法显示图片,需要导入pylab包

import pylab

plt.imshow(image_array, cmap='gray', interpolation='None')

# plt.imshow(np.array(img))

pylab.show()a739ef1ba60c42f0cacc586144e75f71.png

python 读取并显示图片的两种方法

https://www.cnblogs.com/yinxiangnan-charles/p/5928689.html

解决使用 plt.savefig 保存图片时一片空白

https://blog.youkuaiyun.com/u010099080/article/details/529124395c86ce6012f7f69574301aae94389539.png

保存的图片一片空白,其实产生这个现象的原因很简单:在 plt.show() 后调用了 plt.savefig() ,在 plt.show() 后实际上已经创建了一个新的空白的图片(坐标轴),这时候你再 plt.savefig() 就会保存这个新生成的空白图片。

解决办法

(1)在plt.show()之前调用plt.savefig()1084ad0026dcbe690b9f141057cec22d.png

(2) 画图的时候获取当前图像(这一点非常类似于 Matlab 的句柄的概念):

# gcf: Get Current Figure

fig = plt.gcf()

plt.show()

fig.savefig('test.png', dpi=100)

dpi是设置清晰度的

matplotlib 使用 plt.savefig() 去除图片旁边的空白区域

https://blog.youkuaiyun.com/jifaley/article/details/79687000

https://blog.youkuaiyun.com/xull88619814/article/details/82052894

发现matplotlib使用plt.savefig()保存的图片周围有一圈空白。那么如何去掉该空白呢?

首先,关闭坐标轴显示:

plt.axis('off')

但是,这样只是关闭显示而已,透明的坐标轴仍然会占据左下角位置,导致输出的图片偏右。

要想完全去掉坐标轴,需要改为以下代码:

plt.axis('off')

fig = plt.gcf()

fig.set_size_inches(7.0/3,7.0/3) #dpi = 300, output = 700*700 pixels

plt.gca().xaxis.set_major_locator(plt.NullLocator())

plt.gca().yaxis.set_major_locator(plt.NullLocator())

plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)

plt.margins(0,0)

fig.savefig(out_png_path, format='png', transparent=True, dpi=300, pad_inches = 0)

即可完成去掉空白。

注:如果不采用 subplot_adjust + margin(0,0),而是在fig.savefig()的参数中添加bbox_inches = 'tight',也可以达到去除空白的效果; 但是,这样会导致对图片输出大小的设置失效。

plt.savefig('hah.png',bbox_inches='tight',dpi=fig.dpi,pad_inches=0.0)

其中 bbox_inches = 'tight' 可以去除坐标轴占用的空间(如果只是set_visiable = False,只能不显示,但空间还占用)

dpi指定为原图的dpi,控制保存图片的质量/分辨率

pad_inches = 0 这句是重点,去除所有白边

以下代码用于实现SaliencyMapa739ef1ba60c42f0cacc586144e75f71.png

# file_path = '/home/utkarsh/Desktop/togrey/Test.txt'

# with open(file_path, encoding='utf-8') as file_obj:

#     contents = file_obj.read()

#     print(contents.rstrip())

import cv2

import re

import numpy as np

import skimage

import saliency

import cv2

from glob import glob

import os

from skimage.io import imread, imsave

from PIL import Image

import matplotlib.pyplot as plt

import pylab

file_path = '/home/utkarsh/Desktop/togrey/Test3.txt'

cv2.imwrite('/home/utkarsh/Desktop/togrey/blankimage.png', np.zeros((1080,1920)))

image = cv2.imread("blankimage.png")

image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

print(image.shape)

im = cv2.imread("/home/utkarsh/Desktop/togrey/frame003.png")

resized_im = im.copy()

resized_im = cv2.resize(resized_im, (1920, 1080))

print(resized_im.shape)

cv2.imwrite('/home/utkarsh/Desktop/togrey/Resized_im.png', resized_im)

file = open(file_path)

while True:

text = file.readline()

if not text:

break

result = [int(d) for d in re.findall(r'-?\d+', text)]

if(len(result)>2):

center = (result[0],result[1])

cv2.circle(image, center, 5, (255, 0, 0), -1)

cv2.imshow("Circle", image)

cv2.waitKey(0)

cv2.imwrite('/home/utkarsh/Desktop/togrey/blankimage.png', image)

dst=skimage.filters.gaussian(image, sigma=30, mode='reflect', truncate=2.0)

# dst = saliency.center_bias(dst, 1.5)

print("-"*50)

print(dst.shape)

cv2.imshow("Saliencymap", dst)

cv2.waitKey(0)

cv2.imwrite('/home/utkarsh/Desktop/togrey/Saliencymap.png', (dst*255))

path1 = '/home/utkarsh/Desktop/togrey/Resized_im.png'

path2 = '/home/utkarsh/Desktop/togrey/Saliencymap.png'

path3 = '/home/utkarsh/Desktop/togrey/SaliencymapFakeRGB.png'

origimg = Image.open(path1)

origimg = origimg.convert("RGB")

saliencymap = Image.open(path2)

plt.imshow(np.array(saliencymap))

plt.axis('off')

print("-"*100)

print(np.array(saliencymap).shape)

height, width = np.array(saliencymap).shape

# gcf : Get Current Figure 画图的时候获取当前图像

fig = plt.gcf()

dpi_f = fig.dpi / 100

fig.set_size_inches(width/100.0/dpi_f,height/100.0/dpi_f) #dpi = 100.0, output = height*width pixels

plt.gca().xaxis.set_major_locator(plt.NullLocator())

plt.gca().yaxis.set_major_locator(plt.NullLocator())

plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)

plt.margins(0,0)

out_png_path = '/home/utkarsh/Desktop/togrey/SaliencymapFakeRGB.png'

fig.savefig(out_png_path, format='png', transparent=True, dpi=fig.dpi, pad_inches = 0)

# 保存matplotlib画出的图像

# plt.savefig('/home/utkarsh/Desktop/togrey/SaliencymapFakeRGB.png')

# pylab.show()

sali_fakergb = Image.open(path3)

print(np.array(sali_fakergb).shape)

sali_fakergb = sali_fakergb.convert("RGB")

print("-"*10)

print(np.array(sali_fakergb).shape)

cv2.imshow("1", np.array(origimg))

cv2.waitKey(0)

cv2.imshow("2", np.array(sali_fakergb))

cv2.waitKey(0)

overlay_img = Image.blend(origimg, sali_fakergb, 0.5)

overlay_img.save('/home/utkarsh/Desktop/togrey/Heatmap.png')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值