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
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