5

私の目的:

  1. イメージを PIL 形式に読み取ります。
  2. グレースケールに変換します。
  3. pylab を使用してイメージをプロットします。

ここに私が使用しているコードがあります:

from PIL import Image
from pylab import *
import numpy as np

inputImage='C:\Test\Test1.jpg'
##outputImage='C:\Test\Output\Test1.jpg'

pilImage=Image.open(inputImage)
pilImage.draft('L',(500,500))
imageArray= np.asarray(pilImage)

imshow(imageArray)

##pilImage.save(outputImage)

axis('off')

show()

私の問題:色が反転したように画像が表示されます。

これは元の画像です

これは、Python ウィンドウに表示される方法です。

しかし、ディスクに書き込むとグレースケール画像として表示されるため、画像がグレースケールに変換されていることがわかります(予想どおり)。

問題はnumpy変換のどこかにあると感じています。

画像処理のためにPythonでプログラミングを始めたばかりです。また、ヒントとガイドラインも高く評価されます。

4

2 に答える 2

14

デフォルトのカラーマップを上書きしたい:

imshow(imageArray, cmap="Greys_r")

これは、matplotlibでの画像と疑似カラーのプロットに関するページです。

于 2013-01-01T15:41:23.910 に答える
2

これにより、白黒画像が生成されます。

pilImage=Image.open(inputImage)
pilImage = pilImage.convert('1')   #this convert to black&white
pilImage.draft('L',(500,500))

pilImage.save('outfile.png')

convertメソッドドキュメントから:

convert

im.convert(mode) => image

Returns a converted copy of an image.
When translating from a palette image, this translates pixels through the palette.
If mode is omitted, a mode is chosen so that all information in the image and the palette can be represented without a palette.

When from a colour image to black and white, the library uses the ITU-R 601-2 luma transform:

    L = R * 299/1000 + G * 587/1000 + B * 114/1000
When converting to a bilevel image (mode "1"), the source image is first converted to black and white.
Resulting values larger than 127 are then set to white, and the image is dithered.
To use other thresholds, use the point method.
于 2013-01-01T16:43:39.317 に答える