#python code
import cv2
# 전역 변수 선언
img = None
ptOld = None
def on_mouse(event, x, y, flags, param):
global ptOld, img
if event == cv2.EVENT_LBUTTONDOWN:
ptOld = (x, y)
print(f"EVENT_LBUTTONDOWN: {x}, {y}")
elif event == cv2.EVENT_LBUTTONUP:
print(f"EVENT_LBUTTONUP: {x}, {y}")
elif event == cv2.EVENT_MOUSEMOVE:
if flags & cv2.EVENT_FLAG_LBUTTON:
cv2.line(img, ptOld, (x, y), (0, 255, 255), 2)
cv2.imshow("img", img)
ptOld = (x, y)
def main():
global img
img = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch04\\mouse\\lenna.bmp")
if img is None:
print("Image load failed!")
return -1
cv2.namedWindow("img")
cv2.setMouseCallback("img", on_mouse)
cv2.imshow("img", img)
cv2.waitKey()
return 0
if __name__ == "__main__":
main()
// C++ code
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
using namespace std;
Mat img;
Point ptOld;
void on_mouse(int event, int x, int y, int flags, void*);
int main(void)
{
img = imread("lenna.bmp");
if (img.empty()) {
cerr << "Image load failed!" << endl;
return -1;
}
namedWindow("img");
setMouseCallback("img", on_mouse);
imshow("img", img);
waitKey();
return 0;
}
void on_mouse(int event, int x, int y, int flags, void*)
{
switch (event) {
case EVENT_LBUTTONDOWN:
ptOld = Point(x, y);
cout << "EVENT_LBUTTONDOWN: " << x << ", " << y << endl;
break;
case EVENT_LBUTTONUP:
cout << "EVENT_LBUTTONUP: " << x << ", " << y << endl;
break;
case EVENT_MOUSEMOVE:
if (flags & EVENT_FLAG_LBUTTON) {
line(img, ptOld, Point(x, y), Scalar(0, 255, 255), 2);
imshow("img", img);
ptOld = Point(x, y);
}
break;
default:
break;
}
}
C++ Code 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 - 황선규 저
'OpenCV' 카테고리의 다른 글
ch04 trackbar (0) | 2024.05.19 |
---|---|
ch04 storage (0) | 2024.05.19 |
ch04 keyboard (0) | 2024.05.19 |
ch04 drawing (0) | 2024.05.19 |
ch03 ScalarOp (0) | 2024.05.19 |