반응형
openCV 라벨링 예제 ( connectedComponentsWithStats )
OpenCV/OpenCV 강좌2015. 11. 19. 15:57openCV 라벨링 예제 ( connectedComponentsWithStats )

두번째 예제에 있던 오타 및 오류를 잡았습니다. 테스트에 사용한 이미지입니다. openCV 3.0부터 라벨링 알고리즘이 추가되었습니다.. 이미지를 라벨링하고 원하는 라벨을 색으로 표현한다든가.. 각각의 영역들을 박스치는 것등이 쉽게되네요.. 해당 영역의 크기도 각각 계산되서 나옵니다.. 자세한건 아래 소스코드를 읽어 보세요... 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include #include #include #include #include using namespace cv; using namespace std; int main() {..

opencv 튜토리얼 - hough line transform
OpenCV/OpenCV 강좌2015. 11. 16. 14:38opencv 튜토리얼 - hough line transform

허프변환에 대해 좀더 알고 싶으시면 아래 글을 참고하세요...[그래픽스&컴퓨터비전/구현한 것들] - Hough Line Transform 구현 #include #include #include #include using namespace cv; using namespace std; int main(int argc, char**argv ) { Mat img_original = imread("indoor1.jpg", IMREAD_COLOR ); Mat img_edge, img_gray; //그레이 스케일 영상으로 변환 한후. cvtColor( img_original, img_gray, COLOR_BGR2GRAY); //캐니에지를 이용하여 에지 성분을 검출합니다. Canny( img_gray, img_edge,..

opencv python - Harris Corner Detection
OpenCV/OpenCV 강좌2015. 11. 13. 03:33opencv python - Harris Corner Detection

윈도우(일정 범위)를 모든 방향으로 이동시키며 픽셀의 강도 변화를 측정함으로써 윈도우 내의 특징을 발견할 수 있다. 평평한 영역에서는 모든 방향으로 픽셀 강도 변화가 없다.에지에서는 에지의 방향따라 픽셀 강도 변화가 없고 에지와 수직방향으로 픽셀 강도 변화가 있다.코너에서는 모든 방향에 대해 강한 픽셀 강도 변화가 존재한다. 윈도우내의 좌표(x,y)에 있는 픽셀 강도와 (u,v)만큼 윈도우를 시프트 시켰을때 픽셀 강도의 변화량은 다음 식으로 측정한다. Window function은 직사각형 윈도우이거나 가우시안 윈도우를 사용하며 윈도우 아래의 픽셀들에 가중치를 주는 용도로 사용되어 진다. 평평한 영역에서는 강도 변화가 거의 없기 때문에 위 식은 0에 가까울 것이다.특징을 추출할 수 있는 것들이 많은 영역..

opencv python - K-Means Clustering
OpenCV/OpenCV 강좌2015. 11. 10. 21:50opencv python - K-Means Clustering

T-shirt size problem 아래는 옷을 생산할 때 , 참고하기 위해 만든 사람들의 키와 몸무게에 대한 데이터를 도식화한 그림이다. 회사 입장에서는 모든 사이즈를 만들 수 없기 때문에 아래 그림처럼 사람들의 신체사이즈를 그룹화하여 3개 혹은 5개의 그룹으로 만들어서 제품을 생산하게 된다. 이때 사용할 수 있는 것이 K-Means Clustering이다. How does it work ?이 알고리즘은 반복적인 처리(iterative process) 알고리즘이다. 단계별로 두 개의 데이터 그룹으로 그룹화 해보도록 하자. 1단계 : 알고리즘은 임의로 두 개의 중심점(centroid)인 C1과 C2를 선택한다. C1, C2 ( 중심 점으로 두 개의 데이터를 선택하기도 한다. ) 2단계 : 두 개의 중심..

opencv python  - 극좌표를 이용하여 방사형으로 라인 그리기
OpenCV/OpenCV 강좌2015. 11. 7. 04:04opencv python - 극좌표를 이용하여 방사형으로 라인 그리기

import numpy as np import cv2 black_image = np.zeros((512,512,3), np.uint8 ) r = 200 for theta in range(0,360): radian = theta*np.pi/180 x=np.cos(radian)*r y=np.sin(radian)*r cv2.line( black_image, (250,250), (int(x+250),int(y+250)), (255,0,0), 1 ) cv2.imshow( "image", black_image ) cv2.waitKey(0) black_image = np.zeros((512,512,3), np.uint8 )512x512크기의 BGR 이미지를 생성. 0으로 채워지기때문에 블랙 이미지임 r = 200 f..

허프라인(HoughLine)  태스트
OpenCV/OpenCV 강좌2015. 10. 23. 20:21허프라인(HoughLine) 태스트

참고:http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html #include "opencv2/imgcodecs.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include using namespace cv; using namespace std; int main(int argc, char** argv) { VideoCapture cap1(0); // cap1.set(3,320); // cap1.set(4,240); if (!cap1.isOpened()) { printf("카메라를 열수 없습니다. \n"); } M..

OpenCV/OpenCV 강좌2015. 9. 24. 20:50opencv에서 2대이상의 카메라 사용하기

두 대의 카메라로부터 영상을 가져와서 화면에 뿌려주는 예제입니다. 카메라를 더 추가하려면 같은 방식으로 코드를 작성해주면 됩니다. 카메라 연결시 다음 포스팅도 참고해보세요. https://webnautes.tistory.com/176 #include "opencv2/opencv.hpp" using namespace cv; int main(int, char**) { VideoCapture cap1(0); VideoCapture cap2(1); if (!cap1.isOpened()) { printf("첫번째 카메라를 열수 없습니다. \n"); } if (!cap2.isOpened()) { printf("두번째 카메라를 열수 없습니다. \n"); } Mat frame1, frame2; namedWindow("..

OpenCV 튜토리얼 – OpenCV를 사용하여 두 개의 이미지를 더하기(블렌딩)
OpenCV/OpenCV 강좌2015. 2. 8. 17:03OpenCV 튜토리얼 – OpenCV를 사용하여 두 개의 이미지를 더하기(블렌딩)

α가 0에서 1로 변화함으로써 선형 blend 연산자는 두 개의 이미지들 또는 비디오들 간에 cross disolve을 실행하는데 사용되어 질 수 있다. 두 장의 이미지가 α값에 따라 다르게 서로 겹쳐서 보이는 것을 볼 수 있다. 실행시킨 후.. 키보드를 누를 때마다 alpha값을 0.1씩 증가시켜서 첫번째 사진에서 두번째 사진으로 변화하는 과정을 보여준다. #include #include using namespace cv; using namespace std; int main( int argc, char **argv ) { double alpha, beta; Mat src1, src2, dst; for( alpha=0.0; alpha

OpenCV 튜토리얼 – 마스크(mask) 오퍼레이션
OpenCV/OpenCV 강좌2015. 1. 9. 17:00OpenCV 튜토리얼 – 마스크(mask) 오퍼레이션

참고 http://goo.gl/GF4i3K 기본적인 방법 마스크 배열(=커널)을 이용하여 이미지 상의 픽셀 값들을 다시 계산한다. 현재 위치의 픽셀 값을 포함한 이웃 픽셀들의 값에 가중치를 곱하여 현재 픽셀 값을 결정한다. 이웃 픽셀들 중 어느 값의 영향을 많이 받아 현재 픽셀 값이 결정되지 여부에 따라 에지 검출이 되기도 하고 잡음제거가 되기도 하는 등 여러 가지 효과를 만들 수 있다. 아래 예제로 나온 마스크는 이미지를 선명하게 만듭니다. filter2D 함수 이용 앞에서 기술한 방법보다 코드가 짧아지고 더 빠른 방법이라고 함.

OpenCV 튜토리얼 – Mat (기본 이미지 컨테이너) 2/2
OpenCV/OpenCV 강좌2015. 1. 8. 21:20OpenCV 튜토리얼 – Mat (기본 이미지 컨테이너) 2/2

참고 http://goo.gl/Q0It8 지난번에 작성한 OpenCV 튜토리얼 – Mat (기본 이미지 컨테이너) 1/2를 이어서 작성. http://webnautes.tistory.com/584 Mat 객체 생성하는 방법 1.Mat() 생성자 2x2, 8bit, unsigned char, 1 channel 3x3, 8bit, unsigned char, 1 channel 2x2, 8bit, unsigned char, 3 channel 2.C/C++ 배열 과 생성자 이용 1x2, 8bit, unsigned char, 1 channel 2x1, 8bit, unsigned char, 1 channel 2x2, 8bit, unsigned char, 1 channel 3.create()함수 만들고 나서 사용 전에..

반응형
image