2016-09-19 11 views
0

同様の方法で作成された2つの同じ場所にある画像があり、両方とも7,221 x 119ピクセルです。第2の同じ場所に配置された画像上で黒でもある場合、最初の画像の黒のピクセルを白に変えます。

私はこのようなロジックを記述したい:

画像1 = 0,0,0(黒)で(これは、xと呼ばれる)特定のピクセルのR、G、B値及びR場合、画像2の画素xのG、B値= 0,0,0(黒)、画像1の画素xのR、G、B値を255,255,255(白)に変更する。

MatlabまたはPythonのどちらでこれを行うことができますか?

+0

イメージがpng形式の場合は、[pypng](http://pythonhosted.org/pypng/index.html)が必要なすべての機能を提供する必要があります。 – fvu

+0

彼らは.jpgにあります –

+0

ちょうど1ピクセルですか? –

答えて

0

PythonでPillowパッケージでこれを実行できるはずです。 2つのピクセルをロードし、すべてのカラーチャネルが0であるかどうかを確認し、そうであれば255にして、イメージを再度保存します。 Python 0ではFalseと解釈されますので、valsに0のみが含まれる場合、not any(vals)Trueになります。

not any(im1.getpixel(pixel)) and not any(im2.getpixel(pixel))not any(im1.getpixel(pixel) + im2.getpixel(pixel))ように書き換えることができますが、私は最初の方法が明確にロジックを持っていると思うこと
from PIL import Image 

im1 = Image.open("image1.jpg") 
im2 = Image.open("image2.jpg") 

pixel = (0, 0) 
newcolor = (255,)*3 
if not any(im1.getpixel(pixel)) and not any(im2.getpixel(pixel)): 
    im1.putpixel(pixel, newcolor) 
im1.save('image1conv.jpg') 

注意。

+0

ありがとうございます。コードは実行されますが、新しい画像を保存すると古い画像と似ていますか?黒いピクセルを持つ2つの画像にセクションがあることは間違いありません。 –

+1

@AnhNguyen:saschaが説明したように、jpgはこのタスクのためのフォーマットが悪いです。その圧縮がどのように機能するかによって、正確な色を忠実に保持することはしばしばありません。したがって、「黒」の領域は、おそらく完全に黒ではなく、黒でもない場合、おそらく純粋な白ではありません。また、私が提供したアルゴリズムは、個々のピクセルで動作するように設計されています。多数のピクセルを処理する効率的な方法があります。 – TheBlackCat

+0

ええ、申し訳ありません私はちょうど考え出した。私はちょうど1ピクセルを必要としません。私は画像(7,221×119ピクセル)をループする必要があります、同じピクセルが画像2の黒でもある場合は、すべての黒のピクセルを見つけて白に変換してください。 –

関連する問題