Xử lý sự kiện chuột và bàn phím trên OpenCV [mouse event, keyboard event]
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:
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
Xử lý sự kiện chuột và bàn phím trên OpenCV [mouse event, keyboard event]
Reviewed by Jacky
on
tháng 1 09, 2018
Rating:
Không có nhận xét nào: