web-dev-qa-db-ja.com

画像をビットマップに変換する

文字の画像のビットマップのように作成しようとしていますが、希望する結果が得られません。画像を使い始めてから数日が経ちました。画像を読み取って、その画像のnumpy配列を作成し、コンテンツをファイルに保存しようとしました。私は以下のコードを書きました:

import numpy as np
from skimage import io
from skimage.transform import resize

image = io.imread(image_path, as_grey=True)
image = resize(image, (28, 28), mode='nearest')
array = np.array(image)
np.savetxt("file.txt", array, fmt="%d")

次のリンクのような画像を使用しようとしています。

文字 "e"

0と1の配列を作成しようとしていました。ここで、0は白いピクセルを表し、1は黒いピクセルを表します。次に、結果をファイルに保存すると、文字の形式が表示されます。

誰かがこの結果を得る方法について私を導くことができますか?

ありがとうございました。

4

これをチェックしてください:

from PIL import Image
import numpy as np

img = Image.open('road.jpg')
ary = np.array(img)

# Split the three channels
r,g,b = np.split(ary,3,axis=2)
r=r.reshape(-1)
g=r.reshape(-1)
b=r.reshape(-1)

# Standard RGB to grayscale 
bitmap = list(map(lambda x: 0.299*x[0]+0.587*x[1]+0.114*x[2], 
Zip(r,g,b)))
bitmap = np.array(bitmap).reshape([ary.shape[0], ary.shape[1]])
bitmap = np.dot((bitmap > 128).astype(float),255)
im = Image.fromarray(bitmap.astype(np.uint8))
im.save('road.bmp')

プログラムはrgbイメージを取得し、それをnumpy配列に変換します。次に、チャネルごとに1つずつ、3つのベクトルに分割します。色ベクトルを使用して灰色のベクトルを作成します。その後、書き込みよりも低い場合は128の要素と競合します0(black)それ以外の場合は255です。次のステップは形状を変更して保存します。

road.jpgroad.bmp

6
prometeu

枕が使えます

from PIL import Image

img = Image.open("haha.jpg")
img = img.tobitmap()
4
Aadish Goel

それを行うには3つのステップが必要です。まず、元の画像をピクセルのリストに変換します。次に、すべてのピクセルを黒(0,0,0)または白(255,255,255)に変更します。 3番目に、リストを画像に変換して保存します。

コード:

from PIL import Image

threshold = 10

# convert image to a list of pixels
img = Image.open('letter.jpg')
pixels = list(img.getdata())

# convert data list to contain only black or white
newPixels = []
for pixel in pixels:
    # if looks like black, convert to black
    if pixel[0] <= threshold:
        newPixel = (0, 0, 0)
    # if looks like white, convert to white
    else:
        newPixel = (255, 255, 255)
    newPixels.append(newPixel)

# create a image and put data into it
newImg = Image.new(img.mode, img.size)
newImg.putdata(newPixels)
newImg.save('new-letter.jpg')

thresholdは、コードでわかるように、ピクセルが黒か白かを決定するものです。 50のしきい値は次のようになります enter image description here 、しきい値30は次のようになります enter image description here 、しきい値10は次のようになります enter image description here 、5に調整すると、出力はピクセルを失い始めます: enter image description here

1
Yuan Fu