HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0421
coinhspcvでのぼかしとgmode7のアルファ値3解決


coin

リンク

2008/4/21(Mon) 10:10:46|NO.15270

 画像をぼかして背景の上に表示させる、ということができないか試しているのですが、うまく
いきません。たとえば、以下のような

#include "hspcv.as"
X=10//ぼかし値設定 X=X*2+1//偶数になるとエラーが出るので、奇数に。 //バッファ1に表示用画像描画 screen 1,300,300 color 255,255,255 boxf color 0,0,0 boxf 100,100,200,200 //cvバッファ0にコピー cvbuffer 0,300,600 gsel 1 cvputimg 0 cvsmooth CV_GAUSSIAN,X,X,,0 //バッファ3にぼかし画像コピー screen 3 cvgetimg 0 //バッファ2の左側に表示用画像コピー screen 2,600,300 gcopy 3,0,0,300,300 //バッファ1にマスク用画像描画 screen 1,300,300 boxf color 255,255,255 boxf 100,100,200,200 //cvバッファ0にコピー gsel 1 cvputimg 0 cvsmooth CV_GAUSSIAN,X,X,,0 //バッファ3にぼかし画像コピー gsel 3 cvgetimg 0 //バッファ2の右側に表示用画像コピー gsel 2 pos 300,0 gcopy 3,0,0,300,300 //青背景の上にgmode7でコピー screen 0,300,300 color 0,0,255 boxf gmode 7,300,300 gcopy 2,0,0,300,300

例を作ると、表示されたぼかされた黒い四角の周りに白いものが浮かんで見えます。本当は
白い部分(表示用画像の描画の際の背景がぼけたもの)は無いはずなんです。

 表示用画像をマスク用画像、同じ強さでぼかせば、表示用画像に望ましいアルファ値になって
ほどよくコピーされてくれる、と思ったのですが…なぜそうならないのか、理解できません。
 どなたかご教授お願いします!!



この記事に返信する


SYAM

リンク

2008/4/21(Mon) 10:42:02|NO.15271

通常のバッファに書いた画像は、それ自体に透明度の情報がありません。
ぼかした画像を通常のバッファに貼り付けた時点で、背景と混じった色になってしまっているのです。

つまり、最後の合成では、四角のフチにある“灰色”を合成してしまっていることに注意してください。
青に黒を半透明合成すると暗い青になりますが、青に灰色を合成すると白っぽくなりますよね。



SYAM

リンク

2008/4/21(Mon) 11:06:48|NO.15272

試しに、最初の表示画像を全画面ぶん作ってからぼかしてみてください。
元のスクリプトだと黒い四角が“表示画像”なのですよね。それを、最終的な画面の大きさいっぱい(300x300)に用意してください。
真っ黒だとぼかしてもわかりませんが…。



coin

リンク

2008/4/23(Wed) 12:43:04|NO.15333

 あ…そうですよね、灰色部分を半透明にしてコピーしても灰色になるだけですよね。お恥ずかしい…!
 背景と合成してぼかしたいときには、一旦別のバッファに重なる部分の背景と前景を合わせたものを
作り、それをぼかして、前景のマスクをぼかしたものをgmode7に使用して、メインの画面に重ね合わせる、
というような風にすればうまくいきそうです。うーんわかりにくい説明;

 SYAMさん、ありがとうございました!



ONION software Copyright 1997-2018(c) All rights reserved.