连锁图像严重降级

时间:2018-02-28 17:03:20

标签: python matplotlib pixel

我想在Jupyter笔记本上显示几张照片。但是,像素非常粗糙,如下所示。enter image description here

原始图像的像素清晰。我该如何改善这个问题? 这是对图片是狗还是猫进行分类的特定过程。我在同一目录下的文件夹中有许多狗和猫的照片,只是从那里拿走它们。图片是我刚尝试使用matplotlib在Jupyter笔记本上显示的。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

强制matplotlib内嵌图像的分辨率:

public static bool TestSigning(RSAKeyPair keySet)
{
    if (keySet.alg != "RS512")
    {
        throw new ArgumentException("Only SHA512 is supported.");
    }


    var n = GetBigInteger(FromBase64Url(keySet.n));
    var d = GetBigInteger(FromBase64Url(keySet.d));
    var e = GetBigInteger(FromBase64Url(keySet.e));

    var rsaParams= RecoverRSAParameters(n, e, d);

    RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(512);
    rsaProvider.ImportParameters(rsaParams);

    var hasher = SHA512.Create();

    var testmsg = Encoding.UTF8.GetBytes("TestMsg");
    var hash = hasher.ComputeHash(new MemoryStream(testmsg));


    var oid = CryptoConfig.MapNameToOID("SHA512");

    var signedData = rsaProvider.SignHash(hash, oid);
    var isSigned = rsaProvider.VerifyHash(hash, oid, signedData);

    return isSigned;
}

我认为它默认使用80 dpi左右的非常低的设置。

答案 1 :(得分:1)

示例图片中的图像质量似乎因为您试图在400像素左右的屏幕上显示64像素的大图像而降低。因此,每个原始像素包括屏幕上的若干像素。

如果目的只是在屏幕上以原始大小显示图像,那么您似乎根本不想使用matplotlib。

%matplotlib inline
import numpy as np
from IPython import display
from PIL import Image

a = np.random.rand(64,64,3)
b = np.random.rand(64,64,3)
c = (np.concatenate((a,b), axis=1)*255).astype(np.uint8)
display.display(Image.fromarray(c))

enter image description here

要使用matplotlib获得类似的结果,您需要裁剪轴周围的边距,并确保图形大小与要显示的数组的大小完全相同。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

a = np.random.rand(64,64,3)
b = np.random.rand(64,64,3)
c = np.concatenate((a,b), axis=1)

fig, ax = plt.subplots(figsize=(c.shape[1]/100.,c.shape[0]/100.), dpi=100)
fig.subplots_adjust(0,0,1,1)
ax.axis("off")
_ = ax.imshow(c)

enter image description here