python读取图像示例——读取图像并统计

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' python 读取图像示例小程序 ' \
' 读取像素点,参考真值, 对比输出统计结果,混淆矩阵 '

__author__ = 'qfr'

from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np

# 读取和代码处于同一目录下的 lena.png
print("输入图片:")
rawFile = input()
lena = mpimg.imread(rawFile)

tem = np.split(lena,2,axis = 0) #横向分割,以列为轴,分成对等的2块
y_pred = tem[0].ravel()
y_true = tem[1].ravel()

y_pred[y_pred > 0.5001] = 1.0
y_pred[y_pred < 0.5] = 0.0

label = ["black", "white"]
cm = confusion_matrix(y_true, y_pred, labels=[0.0, 1.0])
cm = cm / y_pred.size

# 热度图,后面是指定的颜色块,可设置其他的不同颜色
plt.imshow(cm, cmap=plt.cm.Reds)
plt.colorbar()

# label 坐标轴标签说明
indices = range(len(cm))
# 第一个是迭代对象,表示坐标的显示顺序,第二个参数是坐标轴显示列表
plt.xticks(indices, label)
plt.yticks(indices, label)

# plt.rcParams两行是用于解决标签不能显示汉字的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.xlabel(r'预测值')
plt.ylabel(r'真实值')
plt.title(r'混淆矩阵')

# 显示数据
for first_index in range(len(cm)):  # 第几行
    for second_index in range(len(cm[first_index])):  # 第几列
        plt.text(first_index, second_index, cm[first_index][second_index])

plt.show()

  

结果:

 

https://www.cnblogs.com/yinxiangnan-charles/p/5928689.html       python读取图片并显示的方法

 

注:pyinstaller 打包plot失败解决方案:

https://blog.csdn.net/dyxcome/article/details/87911289

pyinstaller打包报错: RecursionError: maximum recursion depth exceeded,UnicodeDecodeError

原因:报错提示超过最大递归深度,python默认的递归深度是很有限的(默认是1000),因此当递归深度超过999的样子,就会引发这样的一个异常,而在打包过程中引入的包递归深度可能比默认深度大,因此会引发异常。

解决方法:

1.执行pyinstaller -F XXX.py 它会在你的目录文件生成XXX.spec文件,然后报错,出现该类异常。

2.打开XXX.spec文件,在开头添加上面两行代码。

import sys
sys.setrecursionlimit(1000000)

3.继续执行打包,但是还文件名:pyinstaller -F XXX.spec ,执行该文件。

posted @ 2021-04-14 16:59  博客园—哆啦A梦  阅读(541)  评论(0)    收藏  举报