[C++] Xử lý sự kiện (event) mouse và keyboard

mk_wm1000_ci

OpenCV hỗ trợ các sự kiện của mouse và keyboard ở mỗi window, do thư viện HighGUI xử lý. Dựa vào đó mà có thể tạo ra các ứng dụng lấy màu ở 1 điểm nào đó, hoặc các chương trình phức tạp tuỳ theo thao tác của người sử dụng.

Khi khởi tạo window thì chúng ta chỉ định sự kiện đó do hàm nào sẽ xử lý, khi thực thi, các sự kiện sẽ được gửi về giá trị int tương ứng. Hàm để chỉ định khai báo như sau:

Trong đó, Window_name là tên của cửa sổ cần xử lý sự kiện, CallBackFunc là tên hàm, tham số thứ 3 là userdata, mục đích cho người dùng có thể truyền thêm những tham số khác khi xảy ra sự kiện.

Hàm xử lý sự kiện khai báo như sau:

Trong đó, event là sự kiện, x,y là toạ độ click chuột, flag là tham số kết hợp sự kiện khác như ấn nút Ctrl, Shift, Alt.

Các event xảy ra khi:

    EVENT_MOUSEMOVE: di chuột
    EVENT_LBUTTONDOWN: nhấn chuột trái
    EVENT_RBUTTONDOWN: nhấn chuột phải
    EVENT_MBUTTONDOWN: nhấn chuột giữa
    EVENT_LBUTTONUP: thả chuột trái
    EVENT_RBUTTONUP: thả chuột phải
    EVENT_MBUTTONUP: thả chuột giữa
    EVENT_LBUTTONDBLCLK: nhấp kép chuột trái
    EVENT_RBUTTONDBLCLK: nhấp kép chuột phải
    EVENT_MBUTTONDBLCLK: nhấp kép chuột giữa
    EVENT_MOUSEWHEEL: lăn chuột
    EVENT_MOUSEHWHEEL: lăn chuột với bánh xe ngang (con chuột này cực kỳ kiếm)

Các flags là các sự kiện có thể xảy ra đồng thời, khi sử dụng thì kết hợp lại với nhau, bao gồm:

    EVENT_FLAG_LBUTTON: click chuột trái
    EVENT_FLAG_RBUTTON: click chuột phải
    EVENT_FLAG_MBUTTON: click chuột giữa
    EVENT_FLAG_CTRLKEY: ấn nút Ctrl
    EVENT_FLAG_SHIFTKEY: ấn nút Shift
    EVENT_FLAG_ALTKEY: ấn nút Alt

Cách sử dụng flags như sau:

EVENT_FLAG_CTRLKEY + EVENT_FLAG_LBUTTON: ấn nút Ctrl + chuột trái
EVENT_FLAG_SHIFTKEY+ EVENT_FLAG_LBUTTON: ấn nút Shift + chuột trái
…..và còn nhiều cách khác nữa

Sử dụng bàn phím: khá là đơn giản

Khi người dùng ấn phím nào đó thì hàm waitKey sẽ trả về giá trị ASCII của phím, các giá trị phổ biến là

    Enter: 13
    Esc: 27
    Space: 32

Code ví dụ: khi người dùng click chuột trái thì chương trình sẽ xuất ra toạ độ và giá trị màu

Đọc thêm: Dựng đứng hình ảnh

Nguồn

Leave a Reply