マウスクリック機能

マウスクリック機能

画面をクリックすると新しくウィンドウを作り、指定した画像を表示させるコード

参照先
元コード:マウスイベントの取得

一番下にファイルをアップロードしました

include <cv.h>
include <highgui.h>
include <stdio.h>

/* グローバル変数 */
CvFont font;
IplImage *img = 0;
IplImage *src_img = 0;


/* プロトタイプ宣言 */
void on_mouse(int event, int x, int y, int flags, void *param);

int main(int argc, char *argv[])
{
   int c;

   src_img = cvLoadImage("画像の名前", CV_LOAD_IMAGE_COLOR);

   // (1)画像領域を確保し,初期化する
   img = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3);
   cvZero(img);
   cvInitFont(&font, CV_FONT_HERSHEY_DUPLEX, 0.4, 0.4);

   // (2)ウィンドウを作成し,マウスイベントに対するコールバック関数を登録する
   cvNamedWindow("Image", CV_WINDOW_AUTOSIZE);
   cvSetMouseCallback("Image", on_mouse);
   cvShowImage("Image", img);

   // (3)'Esc'キーが押された場合に終了する
   while (1) {
c = cvWaitKey(0);
if (c == '\x1b')
    return 1;
   }

   cvDestroyWindow("Image");
   cvReleaseImage(&img);
   cvReleaseImage(&src_img);

   return 0;
}

/* コールバック関数 */
void on_mouse(int event, int x, int y, int flags, void *param = NULL)
{
   char str[64];

   // (5)マウスボタン,修飾キーを取得
   if (flags & CV_EVENT_FLAG_LBUTTON) {
cvNamedWindow("src", CV_WINDOW_AUTOSIZE);	// 枠の表示
cvShowImage("src", src_img);	// 画像の表示
strncat(str, " + LBUTTON", 64);
   }
   if (flags & CV_EVENT_FLAG_RBUTTON) {
cvDestroyWindow("src");
strncat(str, " + RBUTTON", 64);
   }
   if (flags & CV_EVENT_FLAG_MBUTTON)
strncat(str, " + MBUTTON", 64);
   if (flags & CV_EVENT_FLAG_CTRLKEY)
strncat(str, " + CTRL", 64);
   if (flags & CV_EVENT_FLAG_SHIFTKEY)
strncat(str, " + SHIFT", 64);
   if (flags & CV_EVENT_FLAG_ALTKEY)
strncat(str, " + ALT", 64);

   cvShowImage("Image", img);
}

  • 左クリックで画像を表示 右クリックで画像を消す -- (㊤様) 2009-09-28 14:49:50
名前:
コメント:

すべてのコメントを見る
最終更新:2009年10月01日 14:21
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル