[C++] 파일 분할 작성
헤더파일에는 클래스의 선언을, cpp 파일에는 클래스의 정의를 작성한다. 클래스의 선언은 멤버변수의 선언과 멤버함수의 원형을 포함하게 되고, 클래스의 정의는 멤버함수의 구현부로 이루어져 있다. Test.h 소스코드 #ifdef __TEST_H__ #define __TEST_H__ class Test { private: char ch[10]; int test; public: void testing(char* ID, int number); }; #endif Test.cpp 소스코드 #include #include #include "Test.h" using namespace std; void Test::testing(char* ID, int number) { ~~~~ } Main.cpp 소스코드 #include
2018.11.26
[Linux] 리눅스 wget 명령어
리눅스 환경에서 인터넷 파일을 다운로드 할 경우 가장 많이 쓰이는 방법은 wget 명령어를 사용하는 것이다. 1. 단일 파일 받기 $ wget DOWNLOAD-URL 다운로드 하는 동안 진행 경과와 함께 다음의 정보를 보여줌 - 현재 몇 퍼센트 다운 받았는지에 대한 정보- 현재 다운로드 받은 바이트 수- 현재 다운로드 속도- 다운로드 완료까지 남은 시간 2. 다른 이름으로 저장하기 $ wget -O file.zip DOWNLOAD-URL 3. 다운로드 속도 지정 $ wget --limit-rate=200k DOWNLOAD-URL 4. 이어받기 $ wget -c DOWNLOAD-URL 참고자료 : http://sisiblog.tistory.com/25
2018.11.26
[C] assert 매크로
assert 매크로는 assert.h 헤더 파일에 정의되어 있으며 정해진 조건에 맞지 않는 경우 프로그램을 중단한다. 1. assert에 지정한 조건식이 거짓(false)일 때 프로그램을 중단2. assert에 지정한 조건식이 참(true)일 때는 프로그램을 계속 실행 단, Visual Studio 에서는 Debug 모드에서만 작동하며 Release 모드에서는 동작하지 않음 포인터가 NULL이면 프로그램을 중단하는 예제 #define _CRT_SECURE_NO_WARNINGS #include #include #include // assert가 정의된 헤더 파일 void copy(char *dest, char *src) { assert(dest != NULL); // dest이 NULL이면 프로그램 중단 ..
2018.11.26
no image
[OpenCV] 동영상 재생 + 프레임 측정 + 적응적 이진화 + 캐니에지 + 컨투어링 + 모멘트 + putText
동영상 재생 후 프레임을 측정하고 적응적 이진화를 통해 이진화를 수행한다. 그 다음, 캐니 에지로 엣지를 따고나서 컨투어링을 수행하여 탐지된 객체의 가장자리를 그리고, 컨투어링을 통해 면적을 계산한다. 다음으로, 객체를 둘러 쌓는 바운딩 박스(Bounding Box)를 통해 객체의 Width, Height를 구하는 예제이다. 마지막으로 계산한 면적, 너비, 높이를 putText를 통해 화면에 표시한다. #include #include #include "opencv2\opencv.hpp" using namespace cv; using namespace std; int main(int argc, char* argv[]) { Mat matOrg; Mat matOut; long totalFrames = 0; c..
2018.10.22
no image
[OpenCV] 라벨링 개념, 객체 카운팅 + 색상 추출 + 라벨링 예제
라벨링(Labeling)이란? 이진화 한 이미지에서 객체를 각각 분별하기 위해 인접한 픽셀 값들끼리 그룹화하여 번호를 매긴 것이다. 즉, 인접한 화소들을 묶어 하나의 객체로 판단하는 방식이며 "같은 번호"를 부여한다. 라벨링은 4방향 라벨링과 8방향 라벨링으로 이루어져 있으며, 이는 OpenCV 3.0에 함수로 구현되어있다. 라벨링은 좌측 상단부터 우측 상단 방향까지 이동하면서 번호를 부여한다. 첫 행의 번호 부여가 끝나면 다음 줄 좌측 부터 우측 방향까지 쭉~ 마지막 픽셀까지 번호를 부여한다. 4방향 라벨링은 한 픽셀을 중심으로 십자가 모양으로 인접한 픽셀을 그룹화한다. ↑ ← → ↓ 1 1 2 2 2 2 3 3 3 3 3 4 4 4 4 4 4 5 6 6 6 7 8방향 라벨링은 십자가 모양에 대각선 방..
2018.10.22
no image
[OpenCV] putText 폰트 c++
참고자료 : Contour & Bounding Box 예제 1. putText 사용법 void putText(Mat& img, const string& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool bottomLeftOrigin=false ) 2. putText 매개변수 img – Image.text – Text string to be drawn.org – Bottom-left corner of the text string in the image.font – CvFont structure initialized using InitFont().fontFace – Font ty..
2018.10.18
[Embedded linux] 'make menuconfig' requires the ncurses libraries. 오류 해결법
make menuconfig 명령어 실행 시 아래와 같은 오류가 발생할 때 해결법 오류 : 'make menuconfig' requires the ncurses libraries. 패키지 설치 : sudo apt-get install libncurses5-dev
2018.10.08
no image
[Embedded linux] 보드에 연결된 Serial Port 부팅 확인
보드에 연결된 Serial Port 부팅 확인하는 명령어 dmesg | grep tty Xshell 과 같은 프로그램을 통해 다음과 같이 설정하여 연결한 후 호스트 : localhost 포트 : COM3 프로토콜 : SERIAL dmesg | grep tty 명령어를 입력하면 다음과 같이 부팅 시 일어나는 과정들을 확인 할 수 있다. * 부팅 시간의 기준 dmesg 메세지 중 아래와 같은 메세지는 부팅이 끝나고 나서 __init 으로 표시된 메모리를 해제 할 때 나오는 메세지이다. 리눅스 부팅하는데 걸리는 시간 약 3.3 초 [ 3.321866] Freeing init memory: 216K
2018.10.06
[Linux] 리눅스 tar.gz 압축 / 해제 명령어
압축 설정 $ tar -cvzf [압축된 파일 이름][압축할 파일이나 폴더명] 해당 경로의 모든 파일을 xxx.tar.gz로 압축$ tar -cvzf xxx.tar.gz * 압축 해제 $ tar -xvzf [압축 해제할 압축 아카이브 이름] 해당 경로에 xxx.tar.gz 파일의 압축을 해제$ tar -xvzf xxx.tar.gz 옵션 값 x : 압축을 해제c : 파일을 묶음v : 압축 / 해제 과정을 화면에 표시z : gunzip을 사용f : 파일 이름 지정p : 권한(permission)을 원본과 동일하게 유지 참고자료 : http://sarghis.com/blog/468/
2018.10.05
no image
[Embedded linux] 리눅스 기반 Buildroot 를 이용하여 시스템 이미지 생성하기
리눅스 기반 Buildroot 를 이용하여 시스템 이미지 생성하기 Buildroot 메뉴얼 : https://buildroot.org/downloads/manual/manual.html 1. 패키지 설치 1.1 필수 패키지 Build tools: whichsedmake (version 3.81 or any later)binutilsbuild-essential (only for Debian based systems)gcc (version 4.4 or any later)g++ (version 4.4 or any later)bashpatchgzipbzip2perl (version 5.8.7 or any later)tarcpiopython (version 2.6 or any later)unziprsyncfile..
2018.10.05
no image
[Embedded linux] VAB-630 보드 사양
Model Name VAB-630 Processor 1.0GHz VIA Cortex-A9 dual-core SoC System Memory 1GB DDR3 SDRAM onboard Storage 4GB eMMC flash memory Boot Loader 512KB SPI Flash ROM Graphics Mali-400 SP GPU 2 integrated, independent 3D/2D graphics processing units Graphics engine supporting OpenGL® ES 2.0 hardware acceleration Supports MPEG-2 and H.264 video decoding up to 1080p LAN ASIC AX88772CLF Audio VIA VT160..
2018.10.05
no image
[OpenTracing] Jaeger UI를 이용한 분산 추적 (2)
이번에는 Python을 이용하여 분산 추적 과정을 Jaeger UI를 통해 확인하고자 한다. 일단 Jaeger UI(http://127.0.0.1:16686/) 와 HotROD(http://127.0.0.1:8080) 화면을 켜놓는다. OpenTracing Tutorial - Python https://github.com/yurishkuro/opentracing-tutorial/tree/master/python 1. Installing 저번 포스팅 참고 http://eehoeskrap.tistory.com/269 2. 가상환경 생성 후 activate cd opentracing-tutorial/pythonvirtualenv envsource env/bin/activate 3. 필요한 패키지 설치 pip ..
2018.09.21