マウスクリック機能
画面をクリックすると新しくウィンドウを作り、指定した画像を表示させるコード
一番下にファイルをアップロードしました
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