python numpy中astype使用不当导致图像出现artifact

在网络训练中,发现生成的图像不对劲,如下面左图所示,文字完全不对。后来发现,是因为在python中把float类型的变量直接转成uint8的时候,负数部分就变成了极大的整数,变成了图中的白点。应该是采用截断的方法,把小于0大于255的都截断,然后再转换成uint8。得到的结果如右图所示。

一段验证性的代码,如果把a转成uint8,我们会发现-5就变成了(256-5)=251,而300就变成了(300-256)=44。所谓白色的地方出现了黑点,而黑字上也有了白点。

import numpy as np

a = [-5, -10, 240, 300]

a = np.reshape(a,[4,1])

b = a.astype(np.uint8)

  

print(a)
[[ -5]
 [-10]
 [240]
 [300]]

print(b)
[[251]
 [246]
 [240]
 [ 44]]

  

原文地址:https://www.cnblogs.com/sunny-li/p/10265755.html

时间: 2024-10-11 18:27:13

python numpy中astype使用不当导致图像出现artifact的相关文章

Python Numpy中的几个矩阵乘法

数学上的内积.外积和叉积 内积 也即是:点积.标量积或者数量积 从代数角度看,先对两个数字序列中的每组对应元素求积,再对所有积求和,结果即为点积.从几何角度看,点积则是两个向量的长度与它们夹角余弦的积. 具体解释 外积 也即是:张量积 在线性代数中一般指两个向量的张量积,其结果为一矩阵,也就是矩阵乘法 具体解释 叉积 也即是:向量积 叉积axb得到的是与a和b都垂直的向量 具体解释 Numpy中的矩阵乘法 np.dot() 对于二维矩阵,计算真正意义上的矩阵乘积:对于一维矩阵,计算两者的内积.(

Python Numpy中数据的常用的保存与读取方法

在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件进行介绍: 1.保存为二进制文件(.npy/.npz) numpy.save 保存一个数组到一个二进制的文件中,保存格式是.npy 参数介绍 numpy.save(file, arr, allow_pickle=True, fix_imports=True) file:文件名/文件路径 arr:要存

hive中使用正则表达式不当导致运行奇慢无比

业务保障部有一个需求,需要用hive实时计算上一小时的数据,比如现在是12点,我需要计算11点的数据,而且必须在1小时之后运行出来,但是他们用hive实现的时候发现就单个map任务运行都超过了1小时,根本没法满足需求,后来打电话让我帮忙优化一下,以下是优化过程: 1.hql语句: CREATE TABLE weibo_mobile_nginx AS SELECT split(split(log, '`') [ 0 ], '\\|')[ 0 ] HOST, split(split(log, '`'

python numpy中数组.min()

https://blog.csdn.net/ssdut_209/article/details/50938413 >>> a=array([[1,5,3],[2,6,3]]) >>> a array([[1, 5, 3], [2, 6, 3]]) >>> print(a.min()) #无参,所有中的最小值 1 >>> print(a.min(0)) ## axis=0; 每列的最小值 [1 5 3] >>> pri

python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?

Python中的list/tuple,numpy中的ndarrray与tensorflow中的tensor. 用python中list/tuple理解,仅仅是从内存角度理解一个序列数据,而非数学中标量,向量和张量. 从python内存角度理解,就是一个数值,长度为1,并且不是一个序列: 从numpy与tensorflow数学角度理解,就是一个标量,shape为(),其轴为0: [1,2,3,4,5,6] 从python内存角度理解,就是1*6或者长度为6的一个序列: 从numpy与tensorf

Mathab和Python的numpy中的维度顺序

本文比较Matlab和Python的numpy在维度索引方面的不同点: 1.索引的起始点不同:Matlab起始位置的索引为1,Python为0 2.索引的括号不同:Matlab中元素可以通过小括号表示索引,Python中用中括号: Matlab中a(1, 2)表示a的第一行,第二列的元素 Python的numpy中a[1, 2]表示a的第二行,第三列的元素 Matlab中a(:, 1)表示a第一列的所有元素 Python的numpy中a[:, 1]表示a第二列的所有元素 注意到:两者的最后一个索

Python - Y.shape[n,m];Numpy中的矩阵合并

The shape attribute for numpy arrays returns the dimensions of the array. If Y has n rows and m columns, then Y.shape is (n,m). So Y.shape[0] is n. In [46]: Y = np.arange(12).reshape(3,4) In [47]: Y Out[47]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8,

Python与线性代数——Numpy中的matrix()和array()的区别

Numpy中matrix必须是2维的,但是 numpy中array可以是多维的(1D,2D,3D····ND).matrix是array的一个小的分支,包含于array.所以matrix 拥有array的所有特性. matrix() 和 array() 的区别,主要从以下方面说起: 矩阵生成方式不同 import numpy as np a1 = np.array([[1, 2], [3, 4]]) b1 = np.mat([[1, 2], [3, 4]]) a2 = np.array(([1,

python numpy教程

python numpy教程 2014-08-10 22:21:56 分类: Python/Ruby 先决条件 在阅读这个教程之前,你多少需要知道点python.如果你想重新回忆下,请看看Python Tutorial. 如果你想要运行教程中的示例,你至少需要在你的电脑上安装了以下一些软件: Python NumPy 这些是可能对你有帮助的: ipython是一个净强化的交互Python Shell,对探索NumPy的特性非常方便. matplotlib将允许你绘图 Scipy在NumPy的基础