반응형

개발 330

[리눅스] in_addr 구조체

pcap 라이브러리로 subnetmask와 ip주소를 얻어 출력을 시켰는데 ip : 5810368subnetmask : 16777215 와 같이 출력이 되었다. 내가 예상했던건 192.xxx.xxx.xx 라던지 255.255.255.0 과 같은 출력을 바랬는데 위와 같이 출력이 되는 바람에 내가 코딩을 잘못한 줄 알았다. 그래서 알아본 것이 in_addr 구조체이다. in_addr 구조체는 32비트의 IP주소를 저장하기 위한 구조체이다. in_addr 구조체를 사용해서 ip와 subnetmask를 출력시켜보면 ip : 192.168.xx.xsubnetmask : 255.255.255.0 으로 출력이 된다.

개발/Linux 2016.11.24

[리눅스] 컴파일 했을 시에 stray '\250' 오류

우분투에서 pcap을 사용하려고 하던 중 컴파일하니까 error: stray '\320' in programerror: stray '\250' in program 과 같은 오류가 발생해서 컴파일 되지 않았다. vim 환경이였고, printf("%s")를 할 때 큰 따옴표를 작성할 시에는 쉬프트+따옴표를 두세번 눌러줘야 큰따옴표가 나오는 더러운 상황이 발생했다. [해결법] 필자는 English (US, alternative international) 로 설정이 되어있었다. 이것을 English (US)로 변경해주니 쉽게 해결되었다. 아마도 " " 이것을 다른 문자로 인식했던 것 같다.

개발/Linux 2016.11.24

[C++] linux 환경에서의 Qt 설치법

포토폴리오로 리눅스 환경에서의 GUI 프로그램 개발 프로젝트가 필요해서 이번 한 해동안 영상 처리 관련 프로그램만 개발한 것을 압축시켜서 GUI에서 모두 실행시킬 수 있는 프로그램을 개발하고 있다. Qt에 대해서는 시간이 넉넉해지면 포스팅 하겠다. 이 글은 까먹지 않도록 작성해놓은 글. 그리고 센트os와 우분투에서 OpenCV 설치법, 웹캠 인식이 안됐을 경우에 대한 포스팅도 작성하도록 하겠다.

개발/C++ 2016.11.20

[C++] 생성자에 return이 없는 이유?

친구와 정적 생성, 동적 생성에 대해서 이야기 하다가 생성자로 이야기가 넘어갔다. 생성자에는 명시적으로 return을 사용할 수가 없는데 그 이유가 무엇인지에 대해서 이야기를 나누었다. 동적으로 객체를 생성하면 초기화가 완료된 후 객체의 포인터가 리턴되기 때문에 참조변수가 된다. 즉, 명시적인 return을 사용하지 못하는 것이다. 포인터를 리턴하기 위해서. 그렇기 때문에 나는 생성자에는 반환값이 없다라기 보다는 묵시적인 반환값 때문에 명시적인 반환을 하지 못한다고 본다. 이것을 확인할 수 있는 방법이 typeid 를 사용하는 것이다. [그림 1: 반환 값 알아내기] 출력 결과는 보시다 시피 class A * 이다. 포인터를 반환한다는 소리이다. 이 글을 쓰다보니 또 궁금증이 발생했다. new 를 빼면?..

개발/C++ 2016.11.16

[OpenCV]findContours를 이용한 윤곽 검출

[그림 1: 윤곽 검출] 손 끝 인식에 한 발자국 더 나아갔다. 새벽 4시까지 오류만 붙잡다가 그래도 결과물이 나와서 다행인 것 같다. 이제 윤곽을 손 영역만 따기 위한 준비를 해야한다.. 손 검출에 대해서 생각해보았는데 그래도 가장 쉬운 방법은 손을 학습시켜놓은 haar cascade 파일을 이용하는 것이 라고 생각하기 때문에 이따가 xml 파일 찾아봐야겠다. 사실 아까 찾아봤는데 오류가 발생해서 손 검출 수를 출력시켜보니 약 1억8천개가 출력이 돼서 코드 삭제하고 접었다. 다시 찾아봐야겠다.

[OpenCV]findContours() 함수 오류 해결법

별것도 아닌 오류로 인해서 2시간을 날렸다. 기분이 좋다. 자꾸 findContours 함수에서 오류가 발생했다. 아니 터졌다. 버펑퍼어엎엎ㅇ인자값도 다르게 넣어주고, findContours 함수는 이미지 채널을 1개 가지고 있는 것만 된다고 하니 GRAY로 바꿔주고 threshold 함수를 사용하기도 했지만 오류는 터졌다. [그림 1: 나쁜 findContours 함수] [그림 2: 삭제] opencv_world310.lib를 삭제하자 왜 그런지는 나도 모른다.

[OpenCV]손 중심 검출

손 끝 검출을 하기 위해서 먼저 손 중심을 검출해보았다. 내 생각은 노트북 웹캠이라서 인식을 잘 못할 것이라고 예상하고 손 중심의 일정 좌표 이내에 검출되는 것을 손 끝이라고 정할 생각이다. 그리고 손 중심을 검출하면서 느낀 건데 손 검출을 하기 전에 먼저 손 인식부터하고 손 검출을 하던지 손 끝을 검출하던지를 해야할 것 같다. 자꾸 내 인중을 손 중심이라고 검출해서 기분이 나쁘다. [그림 1: 손 중심 인식] 화장실 코딩 ㅠㅠㅠㅠㅠ

[OpenCV]모폴리지 연산 적용시키기 (열림 연산)

손가락 끝을 인식시키기 위한 과정으로 손 검출을 하고 있던 중, 웹캠이 이상한거지 코드가 이상한거지 잡음이 심해서 모폴리지 기법이라는 것을 알게 되었고, 그 기법을 직접 적용해 보았다. 먼저 나는 흔히 말하는 열림 연산을 적용시켰다. 이 열림 연산은 침식 연산을 한 다음, 그 결과에 또 다시 팽창 연산을 시키는 것이다.이 결과로 인해 이미지에서 잡음과 돌출 부위들이 제거되지만 물체의 크기는 보존이 된다고 한다.

[영상처리, 컴퓨터 비전] 모폴리지 연산

모폴리지는 영상을 형태학적 관점에서 보고 접근하는 방법이라고 한다.이 기법은 영상처리에서 영상 내에 존재하는 특정 객체의 형태를 변형시키는 용도로 사용된다. 주로 이진 영상 처리를 할 때 사용하는데 컬러 영상에서도 가능하다고 한다. 컬러 영상에서는 다음에 다시 한 번 이야기를 하도록 하겠다. 필자는 이 모폴리지 기법을 통해 영상에서 잡음을 제거, 객체의 모양을 기술하는 용도로 사용을 할 것이다.대표적으로 모폴리지 기법에는 침식, 팽창, 열림, 닫힘 등의 연산 기법들이 있다. 필자는 아직 수학적 지식이 부족하므로 설명을 잘 하지 못하겠으니 수학적 내용으로는 알아서 공부하길 바란다. 필자도 따른 블로그나 강의를 보면서 공부했다. [모폴리지 연산 - 팽창] 필터의 크기 및 사용 횟수에 따라 객체 내부에 있는 ..

반응형