hjh11112222 2025-03-26 22:09 采纳率: 0%
浏览 26

关于#机器学习#的问题:matplotlib图片显示有重影颗粒

matplotlib图片显示有重影颗粒,

import numpy as np
import matplotlib.pyplot as plt

def display_color_blocks(colors, proportions,image_path):

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))

# 左侧:图片
image = Image.open(image_path)
# 在 ax1 中显示图片
ax1.imshow(image)
ax1.set_title('Local Image')  # 设置子图标题
ax1.axis('off')  # 关闭坐标轴


# 右侧:配色比例
for i, (color, prop) in enumerate(zip(colors, proportions)):
    ax2.barh(i, prop, color=np.array(color) / 255)
    ax2.text(prop / 2, i, f"{prop:.0%}",
             va='center', ha='center',
             color='white' if np.mean(color) < 128 else 'black')

ax2.set_xlim(0, 0.3)
ax2.set_yticks(range(len(colors)))
ax2.set_yticklabels([f"Color {i + 1}" for i in range(len(colors))])
ax2.invert_yaxis()
ax2.set_title("配色比例", fontfamily='SimHei')


plt.tight_layout()
plt.show()

img

img

  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-03-26 22:09
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    这种重影颗粒的情况可能是由于显示的图片分辨率不够高导致的。可以尝试在显示图片之前对图片进行降采样(downsampling)处理,即减小图片的分辨率,这样可以减少重影颗粒的出现。 以下是对图片进行降采样的示例代码:
    from PIL import Image
    def downsample_image(image_path, factor):
        image = Image.open(image_path)
        width, height = image.size
        new_size = (int(width * factor), int(height * factor))
        resized_image = image.resize(new_size, Image.ANTIALIAS)
        resized_image.save('downsampled_image.png')
    # 调用函数对图片进行降采样
    downsample_image('your_image_path.png', 0.5)  # 第二个参数是降采样因子,可以根据需要调整
    

    你可以尝试在显示图片之前调用这个函数对图片进行降采样处理,看看是否能够减少重影颗粒的出现。希望能帮到你!

    评论

报告相同问题?

问题事件

  • 创建了问题 3月26日