Laser Mouse via WebCam
Purpose
이 프로그램은 강의나 세미나 등 스크린에 빔프로젝터로 영상을 뿌려 스크린을 보며 설명을 할 때 스크린에 레이저를 쏘아 클릭, 더블클릭 등 마우스처럼 이용 할 수 있는 프로그램입니다.
빔프로젝터를 이용한 발표를 할 때 마우스를 눌리기 위한 동선을 없애며 발표나 시연 등을 자주하는 사람들에게 도움이 되고 기존의 무선레이저는 ppt의 화면 넘기는 것만 되지만 이 프로그램을 사용하면 일반 레이저로 그것보다 더 많은 것을 할 수 있으며 청중들의 관심도 자연스럽게 끌 수 있을 것입니다.
Main Code
if(prev_laseron == false && laseron == true && laser_click == 1){
if(abs(laser_x - pt.x) < 30 && abs(laser_y - pt.y) < 30){
laser_click = 2;
}else{
laser_click = 0;
}
}else if(prev_laseron == false && laseron == true && laser_click == 3){
if(abs(laser_x - pt.x) < 30 && abs(laser_y - pt.y) < 30){
laser_click = 4;
}else{
laser_click = 0;
}
}else if(prev_laseron == false && laseron == true && laser_click == 5){
if(abs(laser_x - pt.x) < 30 && abs(laser_y - pt.y) < 30){
laser_click = 6;
}else{
laser_click = 0;
}
}else if(prev_laseron == true && laseron == false && laser_click == 0){
laser_click = 1;
}else if(prev_laseron == true && laseron == false && laser_click == 2){
laser_click = 3;
}else if(prev_laseron == true && laseron == false && laser_click == 4){
laser_click = 5;
}else if(prev_laseron == true && laseron == false && laser_click == 6){
laser_click = 7;
}else if(prev_laseron == false && laseron == false){
if(laser_click != 0){
laser_click_time++;
}
if(laser_click_time > 10){
if(laser_click == 3){
SetCursorPos(laser_x, laser_y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
laser_click = 0;
laser_click_time = 0;
}else if(laser_click == 5){
SetCursorPos(laser_x, laser_y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
laser_click = 0;
laser_click_time = 0;
}else if(laser_click == 7){
SetCursorPos(laser_x, laser_y);
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
laser_click = 0;
laser_click_time = 0;
}
}
}
if(laser_click == 0){
laser_x = pt.x;
laser_y = pt.y;
}
prev_laseron = laseron;
Recognise rate, speed
레이저를 계속 켜고 있는 상태에도 꺼졌다 켜졌다하는 식으로 인식을 하여 변수들을 두고 카운트를 적절하게 하여 클릭 정확도를 최대한 높였습니다. 그리고 gray모드로 변환하니 레이저를 눈으로 확인할 수 있을 정도로 밝은 것을 확인할 수 있었고 속도 또한 가장 빨라 이 방법을 택하였습니다.