これ何て呼びますか Part2

OpenCV.jpのトラックバーのサンプルを使用して、トラックバーを複数個作りたいです。
サンプルにあるように2つの場合は、トラックバーと下の黒い部分が近いのですが、トラックバーを増やしていくと徐々に離れてしまいます(図)。
これは仕様でしょうか、それともプログラムで直せるものでしょうか。
分かる方、よろしくお願いします。

OpenCV.jpサンプルプログラム
http://opencv.jp/sample/simple_gui.html#trackbar

Cで作成しています。

「openCVのトラックバーについて」の質問画像

A 回答 (5件)

インストールして試してみたのですが(XP(Vista) + VC++2008 Ex + OpenCV 1.1pre),


どうもTrackbarのサイズや余白の計算について、一貫性がなく、
また、それらをマニュアルで指定する関数も見当たらず、
「今の動作は仕様なんだけれども、バグがある」というような感じを受けてます。
誠に申し訳ないですが、この問題、私には解決できかねます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
確かに空白が大きくなるのは仕様・バグですね。
諦めます。

何度もご回答していただいたり、
わざわざインストールしていただいたりと、
ご丁寧にありがとうございました。

お礼日時:2009/11/21 01:02

あと、cvResizeWindowは、


cvCreateTrackbar ("Trackbar3", "Image", 0, 100, on_trackbar3);
の後に呼ばないと意味がないのではないかという気もする。
直感的には、cvCreateTrackbar()で、ウィンドウに自動的にリサイズがかかり、
cvResizeWindowで事前にセットした値は書き換えられるのではないかと。

この回答への補足

ご回答ありがとうございます。

No.3のcvNamedWindowを2にしてみると、
ウィンドウサイズをマウスで変更できるようになりました。
しかし、ウィンドウ内の黒く塗られている部分のサイズを変更できるだけで、トラックバーについては変更できません。

No.4のcvResizeWindowの位置ですが、
cvNamedWindowの後・cvCreateTrackbarの後にやった場合では大した違いは見当たらず、
どちらもバーの下に空白が出来ます。

他にどのような可能性が考えられますでしょうか。
お手数ですが、よろしくお願いします。

補足日時:2009/11/19 21:20
    • good
    • 0

cvNamedWindowのflagはデフォルトでCV_WINDOW_AUTOSIZE (=1)で省略可能


と、
http://tessy.org/wiki/index.php?OpenCV%A4%CE%A5% …
にあります。2を指定してみると挙動が変わるということはないですか。
    • good
    • 0

それは、cvNamedWindow("name", CV_WINDOW_AUTOSIZE);


のCV_WINDOW_AUTOSIZEを消去していないからではないでしょうか。
cvNamedWindow("name");
cvResizeWindow("name", size_x, size_y);
当該部分のソースコードを貼ってもらったほうが、
解決への近道ではないかと思うのですが。

この回答への補足

ご回答ありがとうございます。
ソースに大した変更点は無いのですが
main(int argc, char *argv[]){
img = cvCreateImage (cvSize (400, 200), IPL_DEPTH_8U, 3);
cvZero (img);
cvInitFont (&font, CV_FONT_HERSHEY_DUPLEX, 1.0, 1.0, 0, 1, 8);
cvNamedWindow ("Image", 1);
cvResizeWindow("Image", 400, 100);
cvCreateTrackbar ("Trackbar1", "Image", 0, 100, on_trackbar1);
cvCreateTrackbar ("Trackbar2", "Image", 0, 100, on_trackbar2);
cvCreateTrackbar ("Trackbar3", "Image", 0, 100, on_trackbar3);
…}
です。

cvResizeWindowのx部分を変更すると、
トラックバーの長さが変わりますが、空白はあります。
yを変更しても特に変化がありません。

cvNamedWindow には("Image",1)のように、
何か数字またはCV_WINDOW_AUTOSIZEを入れないとエラーになるので
1を入れています。

よろしくお願いします。

補足日時:2009/11/19 18:08
    • good
    • 0

openCVを見たことも触ったこともないので、仕様かどうかはわかりませんが


ちょっとぐぐって見たら、以下のようにして明示的にサイズを指定できるようです。
cvResizeWindow("sample01", 640, 480);
自分でサイズを計算で求めて指定したらどうでしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
教えて頂いたcvResizeWindowを試してみましたが、
図のtrackbar3の下の空白を消すことは出来ませんでした。
またよろしくお願いします。

お礼日時:2009/11/19 15:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報