[OpenCV] Empty Activity에서 안드로이드 NDK 사용
이번 글에서는 안드로이드에서 OpenCV를 연동하기 전, NDK를 사용하는 방법에 대해 알아보겠습니다. 안드로이드 NDK는 C 및 C++와 같은 언어를 사용하여 네이티브 코드로 앱의 일부를 구현할 수 있게 하는 도구 모음입니다. 안드로이드 NDK를 사용할때 JNI라는 단어를 많이 …
이번 글에서는 안드로이드에서 OpenCV를 연동하기 전, NDK를 사용하는 방법에 대해 알아보겠습니다. 안드로이드 NDK는 C 및 C++와 같은 언어를 사용하여 네이티브 코드로 앱의 일부를 구현할 수 있게 하는 도구 모음입니다. 안드로이드 NDK를 사용할때 JNI라는 단어를 많이 …
이번 글에서는 히스토그램 평활화(histogram equalization)에 대해 알아보겠습니다.히스토그램 평활화는 스트레칭과 마찬가지로, 영상의 픽셀 값이 영상 영역 전체에 골고루 분포하도록 하는 알고리즘입니다. 아래와 같이 명암비가 낮은 이미지와 히스토그램이 있습니다. 명암비가 낮고 분포가 한곳에 몰려있는 영상 명암비가 낮고 …
저번 글에서는 히스토그램의 개념에 대해 간단히 알아보았습니다.이번 글에서는 히스토그램 개념에서 더 나아가 히스토그램 스트레칭(Histogram Stretching)에 대해 알아보겠습니다. 우선 영상의 명암의 변화가 히스토그램 모양에 어떤 변화가 생기는지 알아보겠습니다.그레이스케일의 레나 이미지가 전반적으로 어두워질 경우 히스토그램의 위치가 좌측으로 많이 치우쳐집니다. …
이번 글에서는 히스토그램(Histogram)에 대해 알아보겠습니다. 그레이스케일 영상에서 히스토그램은 픽셀의 밝기값의 분포를 그래프 형태로 나타낸 것을 말합니다. 위와 같은 4X4 크기의 이미지가 있습니다.위 이미지는 0 ~ 7값을 가지며, 각 값들의 개수를 세어서 그래프 형태로 표현한 그림은 아래 그림과 …
이번글에서는 영상의 명암에 대해 알아보겠습니다. 영상에서 명암비란 밝기 차이의 강도를 의미하고, 전반적으로 비슷한 밝기의 픽셀로 이루어질 경우 명암비가 낮다고 하고 밝은 픽셀과 어두운 픽셀이 골고루 있을 경우 명암비가 높다고 합니다. 오른쪽 레나가 왼쪽 레나보다 명암비가 높습니다. 오른쪽 …
이번 글에서는 영상의 밝기에 대해 알아보겠습니다. 그레이스케일 영상에서 픽셀값은 0 ~ 255 값을 가지는데 255에 가까울수록 밝아지고, 0에 가까울수록 어두워집니다. 영상 밝기를 증가시키는 코드는 아래와 같습니다. 반대로 영상을 어둡게 할 경우 아래와 같이 마이너스 연산을 …
이번 글에서는 setTo와 copyTo 함수에 대해 알아보겠습니다. setTo 우선 setTo부터 알아보겠습니다. setTo 함수를 사용하기 위해서는 원본 영상과 마스크 영상의 크기가 같아야 합니다. 또한 보통 마스크 영상은 0 또는 255로 구성된 흑백 영상이 사용됩니다. 아래와 같이 …
이번 글에서는 createTrackbar 함수를 사용하여 OpenCV에서 제공하는 트랙바를 만들어보겠습니다. 아래는 createTrackbar에 대한 설명입니다. createTrackbar의 6번째 인자는 콜백 함수가 입력 됩니다. 콜백 함수로 사용되는 TrackbarCallBack에 대한 정의는 아래와 같습니다. 아래는 샘플 코드입니다. 위 함수를 실행하면 이미지의 밝기값을 변경할 수 …
이번 글에서는 키보드와 마우스 이벤트를 처리하는 방법을 알아보겠습니다. 키보드 이벤트 처리는 이전 글에도 많이 나왔던 waitKey 함수를 사용하면 됩니다. waitKey의 반환으로 입력된 키에 대한 아스키 코드 값을 반환합니다.아래 코드는 키 ‘a’, ‘b’를 입력 했을 때 각 …
이번 글에서는 영상에 텍스트를 출력하는 것을 알아보겠습니다. 텍스트를 출력하기 위해서는 putText 함수를 사용하면 됩니다. 샘플 코드는 아래와 같습니다. 실행 하면 아래와 같이 출력합니다.