2017-02-02 6 views
2

모든 자습서는 setMouseCallback()을 사용하여 마우스 위치가 전달되는 콜백 함수를 설정합니다. 불행하게도,이 함수는 실제 마우스 이벤트가 발생했을 때만 호출됩니다. 그러나 마우스의 아무 키도 누르지 않은 상태에서 마우스 위치를 얻고 싶습니다.마우스 이벤트없이 OpenCV에서 마우스 위치를 얻을 수 있습니까?

OpenCV에서 가능합니까?

+1

는'EVENT_MOUSEMOVE' http://docs.opencv.org/master/d7/dfc/group__highgui.html#gga927593befdddc7e7013602bca9b079b0a8f2ec5fd35fe3f4b696518b146dcf675 좋은 것 같다 시작, 안 그래? – Miki

+0

@Miki 그런 것 같지만 그렇지 않습니다. 'EVENT_MOUSEMOVE'를 검사 할 수는 있지만 포인터 위치에 대한 어떤 정보도 제공하지 않습니다. 이 정보는 mousebutton 중 하나가 눌려 지거나, 눌려 지거나, 놓아지지 않는 한 호출되지 않는 콜백 함수로 전달됩니다. – iFreilicht

+0

그것은 나를 위해 작동합니다. 그게 네가 필요로하는 것이 아니라면 알려줘.). – Miki

답변

2

당신은 마우스의 위치를 ​​얻을 수 EVENT_MOUSEMOVE를 사용할 수는 :

#include <opencv2\opencv.hpp> 
#include <iostream> 
using namespace std; 
using namespace cv; 

void mouse_callback(int event, int x, int y, int flag, void *param) 
{ 
    if (event == EVENT_MOUSEMOVE) { 
     cout << "(" << x << ", " << y << ")" << endl; 
    } 
} 

int main() 
{ 
    cv::Mat3b img(200, 200, Vec3b(0, 255, 0)); 

    namedWindow("example"); 
    setMouseCallback("example", mouse_callback); 

    imshow("example", img); 
    waitKey(); 

    return 0; 
}