0

次のコード行から期待される結果が得られない理由を理解しようとしています。

pix=np.asarray(Image.open(File))) #I am reading a pbm file into memory
img = Image.fromarray((pix), '1') #rewriting 
img.save("test1.pbm")

newpix=~pix #inverting the image
img = Image.fromarray((newpix), '1')
img.save("test2.pbm")

元の画像と test1.pbm(画像1 ) は同じですが、 test2.pbm (画像2 ) は私が期待しているものではありません (前景のピクセルが背景のピクセルになり、その逆)。ここに画像を添付します(jpegに変換)。私は何を間違っていますか?

もう 1 つの問題は、test1.pbm のほとんどの前景ピクセルの値が False であることです。しかし、それは保存された画像には反映されません。

Imagemagick を使用して 、この元の画像http://www.mathgoodies.com/lessons/graphs/images/line_example1.jpgからこれらの画像を両方とも変換しました。test1.jpg

test2.jpg

4

1 に答える 1

0

どの言語を使用しているかはわかりませんが、元の画像を ImageMagick で次のように変換すると、次のようになります。

convert cdLTY.jpg -negate out.jpg

次のようになります。

ここに画像の説明を入力

したがって、問題はあなたの反転にあると推測します。私は何を知りません

newpix=~pix

subtractします(おそらくそれを補完するか、すべてのビットを反転しますか?)が、画像を反転するには255から各ピクセルが必要だと思うので、ピクセルが10元の画像にある場合、それはまたは新しい画像にある必要があり255-10ます245

説明

ピクセルは通常、0=黒、255=白でエンコードされます。したがって、ピクセルがもともと黒 ( 0) だった場合はnew pixel = 255 - original value、 になります。つまり255-0255現在は白です。同様に、ピクセルが255白(255-2550

于 2014-09-30T08:21:59.413 に答える