画像のアルファ合成
cvLoadImageは読み込む画像のアルファチャネルを無視するので,画像を重ねあわせるときに不都合.opencv内で何かしらのマスク画像を生成し,そいつを使って重ねあわせる(参考:opencv.jp - OpenCV: コピーと充填(Copying and Filling)サンプルコード -)こともできるけど,ImageMagickのConvertツールを使えばとても簡単.
convert foo.png -channel Alpha -negate -separate foomask.png
後は,cvCopyを呼ぶときにこのマスク画像を使えばOK.
IplImage* target = cvLoadImage("target.png"); IplImage* foo = cvLoadImage("foo.png"); IplImage* foomask = cvLoadImage("foomask.png"); cvCopy(foo, target, foomask);
ちなみに単に画像全体を重み付きで合成するなら,cvAddWeightedでOK.