[안드로이드로 배우는 OpenCV] 특정 색상 영역을 추출하기

만약 다음과 같은 이미지가 있다고 가정할 때 녹색 초콜렛(m&m)만 검출 하고 싶다면 어떻게 해야할까? RGB 색공간에서 녹색영역을 추출한다고 가정해보자. 다음과 같이 각각의 색성분에 대한 범위(Range)를 특정하여 조건에 부합하는 픽셀만 검출하면 된다. 하지만 특정 색상을 검출하기 원한다면 RGB 색공간보다는 HSV 색공간을 사용하는 것이 적합하다.  HSV 색공간을 가시화한 위의 그림을 살펴보자. H는 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 이미지의 논리 연산

이미지는 픽셀들의 집합이며, 하나의 픽셀은 색상에 따라 n바이트로 표현되곤한다. 회색조 이미지의 경우 보통 한 픽셀이 0~255값을 가지는데 값의 경우의수가 256가지인셈이다. 그러면 2^8 = 256 이므로 8bit(1byte)의 메모리가 필요하다. 예) 10101000 두 이미지의 같은 좌표에 있는 픽셀들에 비트 연산을 수행할 수 있다. 비트 연산을 통해 특정 영역을 도려내거나 합성하고, 이미지를 반전시킬 더보기…

[안드로이드로 배우는 OpenCV] 히스토그램 그리고 스트레칭 및 평활화

히스토그램 히스토그램은 도수분포표를 그래프로 나타낸 것이다. OpenCV에서는 영상의 픽셀 값 분포를 그래프의 형태로 표현한 것을 말한다. OpenCV에서는 calcHist() 함수를 통해 히스토그램을 구할 수 있다. 예제코드를 살펴보자. val images = listOf(src) val channels = MatOfInt(0) //grayscale은 채널이 하나이므로 0 val mask:Mat = … // 마스크 val hist = Mat() // 히스토그램 더보기…

글쓴이 Charlezz,

[안드로이드로 배우는 OpenCV] 이미지의 덧셈 연산

덧셈 연산 dst( x, y ) = saturate(src1( x, y ) + src2( x, y )) 덧셈 연산은 두 이미지의 같은 위치에 존재하는 픽셀 값을 더해 결과 영상의 픽셀 값으로 설정하는 연산을 말한다. 덧셈결과가 픽셀의 표현범위 보다 크면 특정 픽셀 값으로 설정한다. 예를 들면 픽셀이 0~255으로 표현되는데 두 픽셀의 값을 더보기…

[안드로이드로 배우는 OpenCV] 이미지의 픽셀 처리 및 밝기 조절하기

이미지 밝기 조절하기 아래 이미지와 같이 원본이미지의 밝기를 조절하는 방법에 대해서 알아본다. 픽셀 처리하기 이미지를 밝게 하거나 어둡게 하기 위해서는 각 픽셀에 대한 특정 연산을 해줘야한다. 이미지는 여러 픽셀들로 구성되며 픽셀의 총 갯수는 다음과 같이 구할 수 있다. 이미지의 가로 길이 * 이미지의 세로 길이 = 총 픽셀 갯수 일반적인 더보기…

[안드로이드로 배우는 OpenCV] VideoCapture 클래스 사용하기

VideoCapture 사용하기 OpenCV에서는 카메라 영상 및 동영상 파일에서 프레임을 가져오는 작업을 VideoCapture 하나로 처리한다.   카메라 또는 비디오 열기 // 카메라 불러오기, 안드로이드는 적용되지 않음. val videoCapture = VideoCapture(index, apiPreferences) // 또는 val videoCapture = VideoCapture() camera.open(index, apiPreferences) // 비디오 불러오기 val videoCapture = VideoCapture(filePath, apiPreferences) // 또는 val videoCapture 더보기…

[안드로이드로 배우는 OpenCV] 선, 사각형, 원 그리기

OpenCV에서는 몇가지 그리기 함수를 제공한다. 각 그리기 함수에 대해서 알아보고 안드로이드용 예제를 만들어본다. 직선 그리기 line(img, pt1, pt2, color, thickness, lineType, shift) img: 그림을 그릴 영상 pt1: 시작점 pt2: 끝점 color: 선 색상 (B,G,R)  thickness: 선 두께 lineType: 선 타입; LINE_8(기본값), LINE_4, LINE_AA shift: 그리기 좌표 값의 축소 비율. 기본값은 더보기…