본문 바로가기

전체 글

(118)
마우스 이용해서 도형 그리기( c++) setMouseCallback("image", mouse_callback, 0); -> 이걸 미리 작동 시키면, 마우스 관련 이벤트가 발동하면 실행된다. C++ 1. 클릭하면 원하는 곳에 설정해서 도형 그리기(원, 사각형) #include #include using namespace std; using namespace cv; bool mouse_pressing = false; bool drawing_mode = true; //시작 좌표 int start_x = 50; int start_y = 50; int a, b, c; //도형 내부 색 Scalar color(0, 255, 0); Mat img; RNG rng(543210); void mouse_callback(int event, int x, int..
OpenCV 기본 제공 GUI 1. Canny 함수 : 이미지의 에지(EDGE) 검출 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 2. 키보드 이벤트 int a = waitKey(시간ms) 27: esc 49: 1 50: 2 51: 3 3. 마우스 이벤트 : 리턴 타입 int EVENT_LBUTTONDOWN: 마우스 왼쪽 버튼 클릭 EVENT_LBUTTONUP: 마우스 왼쪽 버튼 때면 EVENT_RBUTTONDOWN EVENT_MOUSEMOVE:
OpenCV 영상처리 기본 개념 1. 픽셀과 이미지 : 이미지의 너비 * 이미지 높이 = 픽셀 갯수 : 픽셀 좌표는 (x,y)가 아닌 (y,x) : 왼쪽 위 (0,0) 오른쪽 위 (0,100) : 왼쪽 아래 (100,0) 오른쪽 아래 (100,100) 2. 컬러 : OpenCV는 RGB가 아닌 BGR 사용.( Blue, Green, Red) 3. 그레이 스케일 4. 이진화 클래스 : 흑백, 0 or 255 5. MAT 객체끼리는 같은 이미지 데이터를 공유한다. -> gray 처리된 그림이 그대로 넘어감 ROI(Region of Interest): 이미지 짜르기 ex) Rect(시작 x, 시작 y, width, height) Range(),Range() -> 시작 끝 꼭지점 6. Clone() 쓰면 이미지 데이터를 새롭게 복사함 7. 픽..
OpenCV 기본 동작 Mat a; : 이미지 받아오는 객체 a.empty(): 불러올수 없는 경우 1. 이미지 관련 imread( " .jpg", IMREAD_COLOR) : 이미지 불러오기 imshow("윈도우 이름", Mat 객체) : 윈도우에 이미지 띄우기 waitKey(0) : 키보드 입력까지 대기, return 값이 있음 - esc 는 27 cvtColor( 기존 이미지, 변경된 이미지 저장, 변경 방식) 2. 동영상 : 동영상은 연속적인 이미지로 다루어짐 : 카메라 인덱스를 알아야 하는데, 연결한 순서대로임. 처음 연결한 카메라의 인덱스가 0 VideoCapture 객체 사용 1) VideoCapture a(0); -> 숫자는 카메라 인덱스 2) a.read(Mat 객체) 로 불러옴 : 실패하면 false 리턴 3..
상속 1. child는 mother class에 구현되어 있는 함수랑 동일한 이름의 함수 선언 가능 2. protected -> 자식은 이 변수 접근 가능! -> private 써서 자식이 부모꺼 접근하려면, 그냥 setValue 등등 사용 : 안 헷갈리게 Mother::setValue() -> 이렇게 하는거 추천 this->setValue()도 가능 3. child class가 생성될떄는 mother의 생성자 같이 호출한다. -> 그래서 child constructor 만들고 싶으면 꼭 mother의 기본 constructor 만들고 만들자!!! -> child class가 메모리 할당 받을때, mother class꺼 다 수용할 만큼의 크기 할당 받음 4. Destructor는 자식 -> 부모 순으로 실행..
객체간 관계 1. Composition 구성관계 -> 이미 전체에 속해있는 객체 자체가 다른 클래스에서 사용 못한다는 뜻! -> 속해있는 객체의 틀인 class는 재사용 가능 2. Aggreation 관계 -> class의 인자를 주소로 받으면! 여러 클래스와 함께 공유 -> 당연히 인자 업데이트할때도 주소로 받아야된다 -> 사용할때는 뭐 당연하게 ' -> ' 사용, 출력시에도 ' *인자' 방식으로 - 다만 분산처리 시에는 이 방법 사용 못한다! 3. Association 제휴 1) class 둘이 서로 friend 2) 서로 인자를 포인터로 가지고 있어야됨 3) 근데 그냥 이거보다, class 묶어쓸 새로운 calss를 만드는게 편하드라 4. 의존 : class 레벨에서는 몰라도 되고, 구현할때만 헤더 includ..
연산자 오버로딩 1. 덧셈, 뺄셈, 곱셈 ex) 연산자 우선순위는 * / 먼저 인건 그대로 2. 입출력 연산자 ofstream 사용하기 - 헤더는 fstream 사용 - 실행 시 out.txt 생성하고 거기에 텍스트 삽입 3. 비교 연산자
Class - 3 1. Class 안에 static으로 멤버를 선언하면 그 멤버는 객체 여러개를 선언해도 동일 -> static 멤버는 class안에서 초기화 XX 2. 정적 멤버 함수 : static 멤버 function은 this를 활용한 접근 불가능 : class 내에 있는 함수는 모든 객체가 공유 3. 친구 함수 : private에 손쉽게 접근 - class 자체를 friend 처리 4. 익명 객체