2011-07-13 47 views
5

緑色とマゼンタの2色の基本的なpngファイルがあります。私がしようとしているのは、すべてのマゼンタのピクセルを取り、それらを透明にしてイメージを別のイメージにマージできるようにすることです。OpenCVで色を完全に透明にする

たとえば、マゼンタの背景に2次元文字の画像ファイルがあるとします。透明になるように、バックグラウンドですべてのマゼンタを取り除きます。そこから私はキャラクターのイメージを撮り、別のイメージのレイヤーとして追加して、キャラクターが環境に置かれているように見えます。

ありがとうございます。

答えて

9

IplImage *myImage; 
myImage = cvLoadImage("/path/of/your/image.jpg"); 

その後、色を選択するには、このようにマスクを使用するには、あなたは、ドキュメントを参照してください。以下では、青を選択したいと思います(OpenCVの画像がBGR形式であることを忘れないでください。したがって、125,0,0は青(下限に相当)です)、255,127,127は一定の許容値で青です。

cvInRangeS(image, 
      cvScalar(125.0, 0.0, 0.0), 
      cvScalar(255.0, 127.0, 127.0), 
      mask 
      ); 

は、今、私たちはマスクを選択している...私はあなたのイメージのすべての青を取るために許容範囲で上限下限と選んだ 。上限ですが、あなたが好きな選択することができ、しましょう逆それ(私たちはマスクを維持する必要はありませんが、それを削除するよう)

cvNot(mask, mask); 

そして、マスクを使用して画像をコピーして、

IplImage *myImageWithTransparency; //You may need to initialize it before 
cvCopy(myImage,myImageWithTransparency,mask); 

は詳細についてOpenCVDocumentationに助けを

Here it is

ジュリアン、

+0

感謝を参照してください:) – Seb

+0

ねえ、私がやったようだ

、それに役立つことを願っ間違いですが、cvCopy(myImage、myImageWithTransparency)だけでなくcvCopy(myImage、myImageWithTransparency、mask):)です。私は私の投稿を編集し、それを使用する場合は注意してください... – jmartel

-2

これは数多くの解決策を伴い、全体的な話題です。私が最初にこれを読んでいました:

その後、

http://en.wikipedia.org/wiki/Transparency_(graphic)

これらのメソッドは、OpenCVのに適用する方法を参照してください。私が使用するコード、

まず、あなたのイメージをロードします

関連する問題