簡體   English   中英

將二維數組轉換為圖像

[英]converting a 2d array to an image

我有一個稱為(已解密)的整數列表,我想將其顯示為圖像,我試圖將其轉換為numpy數組,並使用open cv2進行顯示,但似乎無濟於事

rowNo=img.shape[0]
colNo=img.shape[1]

decrypted=[]
for i in range(rowNo):
    row=[]
    for j in range(colNo):

        s=encrypted[i][j]

        s=s**d


        s=s%n

        row.append(s)
    decrypted.append(row)

[[136,136,135,136,135,136,136,136,127,120,118,121,130,134,135,136,134,135,135,199,199],[135,136, 135、136、135、136、133、124、119、119、123、132、134、135、134、135、134、134、134、199、199],[136、136、135、136、136, 131,121,119,119,125,132,135,135,135,134,135,135,135,134,199,199],[135,136,136,136,128,120,119,119, 126、133、134、136、135、135、134、135、135、135、134、199、199],[136、137、133、125、119、119、120、129、134、135、134, 135、136、136、135、135、135、135、134、199、199],[199、189、141、121、120、121、129、134、130、128、128、129、128、134, 136、135、135、135、134、199、199],[120、134、181、187、123、131、134、126、123、125、124、127、129、123、130、136、135, 135、135、199、199],[148、141、128、156、199、141、128、124、131、129、126、123、123、128、119、133、135、135、135、135、199, 199],[153、153、156、155、154、188、124、134、137、135、132、129、124、126、119、128、136、136、136、199、199],[152, 157、162、164、159、185、170, 178、184、173、148、133、129、123、120、126、136、136、136、199、199],[157、163、164、165、165、164、178、159、162、167, 190、195、142、122、122、128、137、137、133、133、199、199],[163、164、165、165、164、165、150、135、143、147、138、138、148、199, 142、122、134、136、130、123、199、199],[165、165、165、165、165、165、165、163、160、160、157、151、134、199、137、136, 126、125、132、199、199],[165、165、165、165、165、165、164、165、164、162、160、157、154、159、192、124、127、134、130, 199,199],[164,166,165,165,165,165,165,165,165,165,164,165,164,158,198,138,132,129,131,199,199],[ 165、165、165、165、165、165、165、165、165、165、165、162、155、157、194、155、129、131、124、199、199],[165、165、165, 166,165,165,165,165,165,165,158,155,160,162,194,163,129,122,121,199,199],[165,165,164,166,165,165, 165,165,162,156,156,163,160,159,195,158,120,125,128,199,199],[165,165,165,165,165,165,164,159,154, 160、162、159、160、160、19 9,138,127,129,124,199,199],[159,165,165,165,165,163,158,158,163,160,157,161,157,172,197,140,126, 121、109、199、199],[161、164、165、165、165、166、165、164、158、159、160、155、154、199、163、126、118、109、85、101, 180],[199、199、199、199、199、199、199、199、199、199、199、199、199、199、199、199、199、199、199、199、199、199、138、85、85]]

三種解決方案是:

  1. 使用matplotlib

     from matplotlib import pyplot as plt plt.imshow(decrypted, interpolation='nearest', cmap='gray') plt.savefig('decrypted1.png') plt.show() 

在此處輸入圖片說明

  1. 使用PIL

     from PIL import Image img = Image.fromarray(decrypted.astype(np.uint8), 'L') img.save('decrypted2.png') img.show() 

在此處輸入圖片說明

  1. 使用cv2

     import cv2 cv2.imwrite('decrypted3.png', decrypted) cv2.imshow("decrypted3", decrypted) cv2.waitKey() 

在此處輸入圖片說明

如果要獲得灰度圖像,則只需使用uint8 dtype將其轉換為numpy數組即可,如下所示:

grayscale = np.array(decrypted, dtype=np.uint8)

另一方面,如果要彩色圖像(RGB),則沿深度方向堆疊其中三個灰度圖像:

decrypted_rgb = np.dstack([np.array(decrypted, dtype=np.uint8)]*3)

有了這些,您就可以使用matplotlib或OpenCV或枕頭等顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM