반응형
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()함수 만들고 나서 사용 전에..

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

참고 http://goo.gl/Q0It8 디지털화된 이미지는 픽셀이라는 부르는 점들이 모여서 형상을 만든다. 아래 이미지처럼 격자상에 있는 이미지 픽셀의 값은 0~255사이의 값으로 가지도록 해서 파일로 저장된다. 그레이 스케일 영상의 경우 0이면 검은색 점이며 255는 흰색 점이고 그 사이 값들은 해당 값을 강도로 가지는 회색 점들이다. 이런 점들이 모여 디지털 이미지를 화면에 표현하게 된다. 이미지 출처: http://goo.gl/Q0It8 C++로 넘어오면서 자동으로 해주기 때문에 메모리 관리를 따로 해줄 필요가 없다니 다행이지만 튜토리얼에 따르면 임베디드에서는 아직 C만 지원한다는 게 문제라고 한다. 예전에 Mat가 아닌 IplImage를 사용했을 때 할당했다가 수동으로 메모리를 해제해주어야 했었..

OpenCV/OpenCV 강좌2010. 4. 4. 23:20opencv에서 두 대 이상의 webcam 사용하여 캡처하기

예전에 아이토이(소니 플레이스테이션용 카메라) 네 개를 컴퓨터에 연결하려고 했었을 때에는 막연히 같은 버스에 두 개가 연결되면 대역폭이 부족해서 제대로 동작을 안하는 거라 생각했었다. 실제로도 lsusb 명령으로 확인해 가며 두 개의 웹캠이 같은 bus에 연결되지 않게 하면 잘 동작했었다. 지금 생각해보면 USB 규격에 따라 최대 전송속도가 다르다.. USB 1.1은 12Mbps (= 1.5M byte/s) , USB 2.0은 480Mbps ( = 60M byte/s ) USB 1.1에서는 두 개의 웹캠을 돌리는 것은 무리같지만 usb 2.0 포트에 두 개를 같이 연결해도 동작하는지 테스트해봤는지 궁금해졌다. 웹캠 하나를 연결한 후 , lsusb 명령을 사용해보니 Bus 1에 장치 정보가 추가되있었다. ..

반응형
image