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
no image
[OpenTracing] Jaeger UI를 이용한 분산 추적 (1)
OpenTracing은 분산 추적 및 모니터링을 위한 애플리케이션 및 OSS 패키지를 위한 오픈 표준이다. Cloud Native Computing Foundation에서 나온 Uber 기술로 부터 나온 분산 추적 시스템인 Jaeger 의 HotROD 애플리케이션을 통해 OpenTracing Demo 를 수행해보았다. OpenTracing : http://opentracing.io/ OpenTracing Quick Start : https://medium.com/opentracing/take-opentracing-for-a-hotrod-ride-f6e3141f7941 데모 수행 환경 1. Go toolchain - 1.7 이하 버전 사용 시 "/bin/sh: 1: glide: not found" 라는 에..
2018.09.21
no image
[OpenCV] 특정 픽셀 값 접근하기
OpenCV 특정 픽셀 값 접근하기 아래 예제는 원본 이미지 A로부터 어떠한 영상처리를 거친 이미지 B의 검출 영역인 흰색 부분을 원본 이미지 A에 다시 파란색으로 그리는 예제이다. 원본 이미지 A 마스크 이미지 B 결과 이미지 C #include int main() { Mat dst = imread("image/lesion.jpg"); // 원본 이미지 A Mat src = imread("image/mask.jpg"); // 마스크 이미지 B for (int y = 0; y < src.rows; ++y) { for (int x = 0; x < src.cols; ++x) { if (src.at(y, x) == 255) { // 마스크 이미지의 흰색 픽셀이면 dst.at(y, x)[0] = 255; // ..
2018.09.07
[C++] goto 문
C++ goto 문 사용법 goto identifier; identifier에 의해 지정된 레이블 문은 현재 함수에 존재해야 하며, 가급적 goto 문 보다는 break, continue 및 return 문을 사용하는 것이 좋은 프로그래밍 스타일이라고 한다. 그러나 break 문은 한 수준의 루프만 종료하므로, 중첩이 잦은 루프를 종료하고 싶을 때는 goto 문을 사용한다. goto 문 예제 // goto_statement.cpp #include int main() { int i, j; for ( i = 0; i < 10; i++ ) { printf_s( "Outer loop executing. i = %d\n", i ); for ( j = 0; j < 2; j++ ) { printf_s( " Inner..
2018.09.07
[C++] 조건부 연산자
조건부 연산자 사용법 expression ? expression : expression 조건 연산자(? :)는 피연산자 3개를 사용하는 삼항 연산자이다. 조건 연산자는 다음과 같이 사용된다. - 첫번째 피연산자는 암시적으로 bool 자료형으로 변환된다. - 첫번째 피연산자가 true(1) 이면 두 번째 피연산자가 계산된다. - 첫번째 피연산자가 false(0) 이면 세 번째 피연산자가 계산된다. 조건 연산자의 결과는 두 번째 또는 세 번째 피연산자가 계산된 결과이다. 마지막 피연산자 2개 중 1개만 조건식에서 계산된다. 조건식은 오른쪽과 왼쪽이 연결되어있으며, 첫번째 피연산자는 정수 계열 또는 포인터 형식이어야 한다. 조건부 연산자 예제 // expre_Expressions_with_the_Conditi..
2018.09.06
no image
[OpenCV] image inpaint 함수 (object removal or region filling)
이미지에서 지우고 싶은 선 또는 잡음을 포함한 객체를 지우고, 주변 픽셀이 가지는 색상으로 지워진 부분을 채우고자 할 때 OpenCV의 inpaint 함수를 사용 할 수 있다. (여기서는 OpenCV 3.4.2 버전을 사용하였다.) inpaint 함수 형식 // C++ 형식 void cv::inpaint(InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags) // Python 형식 dst = cv.inpaint(src, inpaintMask, inpaintRadius, flags[, dst]) inpaintMask 는 8비트 1채널 이미지(흑백이미지)를 사용해야한다. inpaintRadius 는 알고..
2018.09.05
[C, C++] 메모리 함수 memset, memmove, memcpy, memcmp, memchr
자주 쓰이는 메모리 함수 정리 * memset 메모리 블록을 채운다. ptr로 시작하는 메모리 주소로부터 num 개의 바이트를 value 값으로 채운다. 이 때 value는 unsigned char 로 형변환 된다. #include // C++ 에서는 void * memset ( void * ptr, int value, size_t num ); memset 예제 #include #include int main () { char str[] = "almost every programmer should know memset!"; memset (str,'-',6); puts (str); return 0; } 실행 결과 ------ every programmer should know memset! * memmov..
2018.09.05
[C++] 반복자 (Iterator)
C++ 반복자(Iterator) C++ 라이브러리는 반복자를 제공하는데 이것을 사용하면 라이브러리의 방식대로 자료구조를 액세스 할 수 있다. 따라서 라이브러리가 효과적으로 동작한다는 것을 보장 할 수 있다는 장점이 있다. 즉, 포인터와 상당히 비슷하며, 컨테이너에 저장되어 있는 원소들을 참조할 때 사용한다. 추상적으로 말하자면, 반복자란 컨테이너에 저장되어 있는 모든 원소들을 전체적으로 훑어 나갈 때 사용하는, 일종의 포인터와 비슷한 객체라고 할 수 있다. 알고리즘 마다 각기 다른 방식으로 컨테이너를 훑어가기 때문에, 반복자에도 여러가지 종류가 있게 된다. 반복자의 성질 - 컨테이너와 컨테이너 안의 있는 요소를 구별 - 요소의 값 확인 - 컨테이너 안에 있는 요소들 간에 이동할 수 있는 연산 제공 - 컨..
2018.09.04
[C++] 자료형의 종류와 범위 그리고 WORD 와 DWORD
기본 자료형의 종류 구분 자료형 크기(byte) 범위 문자형 char 1 byte -128 ~ 127 unsigned char 1 byte 0 ~ 255 정수형 __int8 1 byte -128 ~ 127 __int16 2 byte -32,768 to 32,767 (signed) short (int) 2 byte -32,768 to 32,767 (unsigned) short (int) 2 byte 0 ~ 65,535 __int32 4 byte -2,147,483,648 ~ 2,147,483,647 (signed) int 4 byte -2,147,483,648 ~ 2,147,483,647 unsigned int 4 byte 0 ~ 4,294,967,295 (signed) long (int) 4 byte -..
2018.09.03
[C, C++] 프로그램 수행시간 측정
프로그램 수행시간 또는 실행시간 측정하는 법 프로그래밍 중 특정 구간에서 코드 실행 시간을 알아내야 하는 경우에 쓰이는 방법이다. C 또는 C++ 에서 프로그램 실행시간을 측정하는 방법은 크게 두 가지로 나뉘어 사용된다. 1. time 함수 이용하기 #include 헤더파일을 포함시키고 아래와 같이 사용한다. 이와 같은 방법은 ms 단위가 아닌 초(s) 단위로 측정된다. #include #include int main() { time_t start, end; double result; start = time(NULL); // 수행 시간 측정 시작 /* 수행시간 측정하고자 하는 코드 */ end = time(NULL); // 시간 측정 끝 result = (double)(end - start); // 결과..
2018.09.03