Multimedia Programming 19: Mouse with OpenCV

Slides:



Advertisements
Similar presentations
기계시스템디자인공학과 기계제도 SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
Advertisements

Timer Department of Digital Contents Sang Il Park.
Term project. Touch-screen 활용 그림판 –Touch-screen 을 입력장치로 하여 LCD 상에 그림을 그리는 프로그램 – 터치 입력을 절대 좌표로 받는 디바이스 /dev/touch 를 만들어 응용 프 로그램에서 수행하도록 함. –User interface.
1 차시 : SW 코딩으로 배우는 3D 기초작품 및 톱니바퀴 만들기 1)SPL3D 프린팅 툴 설치하기 2) 도형 추가하기 3) 도형 연산 명령어 익히기 4)3D 프린터 출력을 위한 STL 파일 내보내기 5) 하트모양 만들기 6) 하트모양 열쇠고리 만들기 7) 변수와 수식.
Department of Digital Contents Sang Il Park
Multimedia Programming 04: Point Processing Departments of Digital Contents Sang Il Park.
Multimedia Programming 05: Point Processing
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
순차, 조건, 반복 이점숙 농대 뒷편 언덕을 넘어가며 같은 문제 다르게 해결 순차, 조건, 반복 이점숙
순차, 조건, 반복 이점숙 같은 문제 다르게 해결하기 순차, 조건, 반복 이점숙
149개의 실습예제로 배우는 Flash 8.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
공통 컨트롤의 종류와 특징을 개관한다. 각종 공통 컨트롤의 사용 방법을 익힌다..
Multimedia Programming 05: Point Processing
Multimedia Programming 04: 점, 선, 면
Red Color Detection Course ChanYoung Kim
Multimedia Programming 9: Text, Mouse Callback and Drawing
Multimedia Programming 16: Image Morphing
나민영 서경대학교 컴퓨터공학과 CGVR Lab 같이만들어보자 5주차 OpenCV 설정 및 기초.
Multimedia Programming 11: Point Processing 6
Multimedia Programming 06: Point Processing3
Red Color Detection Course ChanYoung Kim
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
마우스(Mouse) 다루기 컴퓨터응용 및 실습 I.
1. C++ 시작하기.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Multimedia Programming 10: Point Processing 5
Multimedia Programming 06: Point Processing 2
스크래치 언어 이해 스크래치 이용법 습득 고양이가 말을 하며 움직이는 예제 작성
주의할 점!!!! 1. 문자 쓸 때 문자 틀 글자 크기에 맞추기 2. 색 보정할 때 Colorize 체크하고 /
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Multimedia Programming 10: Unsharp Masking/ Histogram Equalization
인터넷응용프로그래밍 JavaScript(Intro).
Chapter03 캔버스(1) HTML5 Programming.
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
주의할 점!!!! 1. 문자 쓸 때 문자 틀 글자 크기에 맞추기 2. 색 보정할 때 Colorize 체크하고 /
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
Red Color Detection Course ChanYoung Kim
2차시: 달의 공전 지구과학
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
박정식 심규동 OpenCV 기초 박정식 심규동
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
Python Turtle 민경현.
Moving Control in Web using Ajax Toolkit
1차시: 낮과 밤이 생기는 원리 지구과학
스위시 맥스2 이미지 갤러리 만들기 아래 그림이 스위시 맥스2로 만들 이미지 갤러리 이다.
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
7주차 실습 FPGA 보드 사용법.
CAD 실습 2013년 2학기.
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
Fucntion 요약.
Real time Interaction HyoungSeok Kim
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
1. 선분 등분하기 (1) 주어진 선분 수직 2등분 하기 ① 주어진 선분 AB를 그린다. ② 점 A를 중심으로 선분AB보다
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
작도 작도 작도: 눈금 없는 자와 컴퍼스만을 사용하여 도형을 그리는 것
영상처리 실습 (OpenCV + MFC) Chonbuk National University A.I. Lab.
05. 그래픽 빨간색 사각형 그리기 그래픽 그리기 발 표 자 : 07 정 경 오.
구조체(struct)와 공용체(union)
통계학 R을 이용한 분석 제 2 장 자료의 정리.
.Net FrameWork for Web2.0 한석수
OpenGL Project F-16 전투기 구현 지시KIN
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
Power Point 예제 디자인 적용 (서식) - (디자인적용) - (원하는 디자인 선택)
HCI 입문 강의 계획 2005년2학기 김 창 헌
그래픽 컨트롤 (Graphic Control)
TCP/IP를 이용한 마우스 공유 (Synergy 따라하기)
BoardGame 보드게임 따라가기.
Presentation transcript:

Multimedia Programming 19: Mouse with OpenCV Departments of Digital Contents Sang Il Park

Mouse Callback in OpenCV

Mouse With OPENCV

Keyboard With OPENCV int cvWaitKey(interval)

Mouse With OPENCV cvSetMouseCallback(…)

Mouse Callback? 콜백 함수(Callback): 마우스 콜백(mouse callback): 특정 함수가 어떤 함수의 인자로서 사용될 때 이 함수를 콜백 함수라고 한다. 마우스 콜백(mouse callback): 마우스의 상태에 변화가 생겼을 때 불리는 함수 예시) 마우스가 움직인다 왼(오른) 버튼이 눌리고 있음(올라가고 있음), 더블클릭, …

마우스 콜백 사용하기 OpenCV에서는 사용자가 임의의 함수를 만들고 이를 마우스에 변화가 생겼을 때 호출되게 할 수 있다. 이를 위해서는 다음 2가지 일을 하여야 한다: 구현(Implementation) 마우스에 변화가 생겼을 때 무엇을 할 것인가?를 정의함. 등록(Registration) 위에 정의한 함수를 opencv에게 사용하겠다고 등록시킴. void yourFunction (int event, int x, int y, int flags, void *param); void cvSetMouseCallback(window_name, yourFunction)

구현(Implementation) 함수의 이름은 자유롭게 지을 수 있다 예) on_mouse(..), myMouse(…), … void yourFunction (int event, int x, int y, int flags, void *param); 함수의 이름은 자유롭게 지을 수 있다 예) on_mouse(..), myMouse(…), … 입력 인자들은 OpenCV가 알려주는 것으로 마우스에 어떤 변화가 생겼는 지 알려주는 정보가 담겨있다.

Implementation OpenCV가 넘겨주는 메세지 어떤 마우스 관련 이벤트 종류인지 알려줌 Examples) void yourFunction (int event, int x, int y, int flags, void *param); OpenCV가 넘겨주는 메세지 어떤 마우스 관련 이벤트 종류인지 알려줌 Examples) CV_EVENT_MOUSEMOVE (마우스가 움직임) CV_EVENT_LBUTTONDOWN (왼쪽버튼이 눌리고 있음) CV_EVENT_RBUTTONDOWN (오른버튼이 눌리고 있음) CV_EVENT_MBUTTONDOWN (중간버튼이 눌리고 있음) CV_EVENT_LBUTTONUP (왼쪽버튼이 올라가고 있음) CV_EVENT_RBUTTONUP (오른버튼이 올라가고 있음) CV_EVENT_MBUTTONUP (중간버튼이 올라가고 있음)

Implementation OpenCV가 넘겨주는 메세지 마우스의 현재 위치를 표현 (x,y) void yourFunction (int event, int x, int y, int flags, void *param); OpenCV가 넘겨주는 메세지 마우스의 현재 위치를 표현 (x,y) 값은 이미지 좌표계를 기준으로 함 (왼쪽 윗편이 원점) x y (0,0) (8,2)

Implementation OpenCV가 넘겨주는 메세지 마우스 및 키보드의 현재 상태 Examples) void yourFunction (int event, int x, int y, int flags, void *param); OpenCV가 넘겨주는 메세지 마우스 및 키보드의 현재 상태 Event는 마우스가 현재 취하는 동작 Flags는 현재 마우스나 키보드의 상태 Examples) CV_EVENT_FLAG_LBUTTON (왼버튼이 눌린 상태) CV_EVENT_FLAG_RBUTTON (오른버튼이 눌린 상태) CV_EVENT_FLAG_MBUTTON (중간버튼이 눌린 상태) CV_EVENT_FLAG_CTRLKEY (콘트롤키가 눌린 상태) CV_EVENT_FLAG_SHIFTKEY (쉬프트키가 눌린 상태) CV_EVENT_FLAG_ALTKEY (알트키가 눌린 상태)

등록(Registration) void cvSetMouseCallback(window_name, yourFunction) 어떤 창(window_name)에 마우스에 변화가 생기면 특정 작업(yourFunction)을 수행하라. Example) cvSetMouseCallback( “test”, on_mouse);  “test”라는 창에서 마우스가 움직이면 on_mouse라는 함수를 호출하라

코딩연습 마우스에 변화가 생기면 그 때 마우스의 좌표를 출력하라 1. 구현( Implement your ) void myMouse(int event, int x, int y, int flags, void * param) { printf(“mouse: %d %d \n”, x, y); } 2. main() 함수 내에 등록(registration) cvSetMouseCallback(“test”, myMouse);

Coding Practice 마우스 왼쪽버튼을 누른 곳에 검은 점을 찍으라 1. 구현( Implement your ) void myMouse(int event, int x, int y, int flags, void * param) { if(event == CV_EVENT_LBUTTONDOWN) cvSet2D(img, y, x, CV_RGB(0,0,0)); cvShowImage(“test”, img); } 2. main() 함수 내에 등록(registration) cvSetMouseCallback(“test”, myMouse);

팔렛트 만들기 마우스 클릭 한 곳의 색 알아내기 구현부(Implement) void myMouse2(int event, int x, int y, int flags, void * param) { if(event == CV_EVENT_LBUTTONDOWN) s = cvGet2D(img, y, x); }

OpenCV를 이용한 도형 그리기 OpenCV에서 마우스 사용하기

선 그리기 pt1 부터 pt2 까지 주어진 두깨로 선을 그린다 점의 위치를 표현하는 구조체: CvPoint: void cvLine( IplImage, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1); pt1 부터 pt2 까지 주어진 두깨로 선을 그린다 점의 위치를 표현하는 구조체: CvPoint: cvPoint(x,y) 함수를 사용하면 쉽게 쓸 수 있다 예) (0,0)부터 (100,100)까지 검은 선분을 그리는 명령 struct CvPoint { int x; // x-coordinate int y; // y-coordinate } cvLine( img, cvPoint(0,0), cvPoint(100,100), CV_RGB(0,0,0), 3);

사각형 그리기 pt1를 pt2 모서리로 가지는 사각형을 그린다 pt1 pt2 두께에 -1을 주면 어떻게 될까? void cvRectangle( IplImage, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1 ) pt1를 pt2 모서리로 가지는 사각형을 그린다 pt1 pt2 두께에 -1을 주면 어떻게 될까?

원 그리기 주어진 중심과 반지름을 갖는 원을 그린다 radius center void cvCircle( IplImage, CvPoint center, int radius, CvScalar color, int thickness=1 ) 주어진 중심과 반지름을 갖는 원을 그린다 radius center

코딩연습 마우스의 왼쪽 버튼 클릭하고 드래깅하여 그 크기만큼 사각형을 그리라 마우스의 오른 버튼이 눌린 곳에 반지름 50짜리 원을 그리라 또는 마우스의 오른 버튼을 드래깅하여 그 크기만큼 원을 그리라

Topics for the Term Project

Feature based Image Metamorphosis Thaddeus Beier and Shawn Neely, “Feature-Based Image Metamorphosis “, SIGGRAPH 1992

Image Deformation S. Schaefer, T. McPhail, J. Warren, “Image Deformation Using Moving Least Squares”, SIGGRAPH 2006

Texture synthesis A. A. Efros and T. K. Leung, "Texture Synthesis by Non-parametric Sampling", ICCV 99 Wei and Levoy, “Fast Texture Synthesis using Tree-structured Vector Quantization “, SIGGRAPH 2000

Image Analogy A. Hertzmann, C. Jacobs, N. Oliver, B. Curless, D. Salesin, “Image Analogy”, SIGGRAPH 2001

Colorization Tomihisa Welsh, Michael Ashikhmin, and Klaus Mueller, ”Transferring color to grayscale images”, SIGGRAPH 2002

Image Blending Poisson seamless cloning source images Patrick Perez, Michel Gangnet, Andrew Blake, “Poisson Image Editing”, SIGGRAPH 2003 http://www.cs.tau.ac.il/~tommer/adv-graphics/ex1.htm

extracted foreground object Matting extracted foreground object image composition source image opacity J. Sun, J. Jia, C. Tang, H. Shum, “Poisson Matting”, SIGGRAPH 2004

Content-Aware Image Resizing source image resized image Shai Avidan, Ariel Shamir, “Seam Carving for Content-Aware Image resizeing”, SIGGRAPH 2006 http://www.seamcarving.com/

Painterly Rendering Aaron Hertzmann, "Painterly Rendering with Curved Brush Strokes of Multiple Sizes“, SIGGRAPH 1998

Painterly Rendering2 Michio Shiraishi and Yasushi Yamaguchi , “Image Moment-Based Stroke Placement”, ACM SIGGRAPH 99 Conference abstracts and applications, 1999

High Dynamic Range Compression Raanan Fattal, Dani Lischinski, Michael Werman,“Gradient Domain High Dynamic Range Compression”, ACM SIGGRAPH 2002