반응형
OpenCV 3.1 예제 - OpenCV를 pthread, mutex와 같이 사용하기
OpenCV/OpenCV 강좌2016. 11. 25. 06:17OpenCV 3.1 예제 - OpenCV를 pthread, mutex와 같이 사용하기

pthread와 mutex를 OpenCV와 같이 사용하는 예제입니다. main함수에서 웹캠을 열어주고 UpdateFrame 스레드를 생성하고 UpdateFrame 스레드 에서는 웹캠으로 부터 영상을 넘겨주길 기다렸다가 그레이 영상으로 변환 후 화면에 출력합니다. 이때 뮤택스를 사용하여 공유자원인 frame으로의 접근 문제를 해결합니다. ESC키를 입력하게 되면 스레드를 강제 종료시키고 프로그램을 종료합니다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283#include #i..

ArUco Marker Detection 구현 및 Pose Estimation
OpenCV/OpenCV 강좌2016. 9. 9. 16:28ArUco Marker Detection 구현 및 Pose Estimation

계속 내용을 보완하고 추가할 예정입니다. 기준 마커(fiducial marker)는 일정한 포맷으로 만들어진 인공적인 랜드마크입니다. 증강 현실(Augmented Reality)을 구현하데 이용할 수 있습니다. 영상에서 마커를 검출하여 마커의 4개의 코너를 구하면 카메라 자세 추정(camera pose estimation)을 할 수 있는데. 카메라 자세 추정이란 3차원 공간상에서의 카메라의 위치와 방향을 구하는 것입니다. 이 정보를 바탕으로 마커의 자세를 추정하여 마커 위에 가상의 사물을 띄웁니다. 이 방법을 사용하면 마커를 손에 들고 움직이더라도 항상 마커 위에 가상 사물을 띄울 수 있습니다. ArUco marker는 기준 마커 중 한가지로 n x n 크기의 2차원 비트 패턴과 이를 둘러싸고 있는 검은..

opencv를 이용한 영상 이진화(binarization, thresholding)
OpenCV/OpenCV 강좌2016. 8. 31. 15:44opencv를 이용한 영상 이진화(binarization, thresholding)

이진화는 가장 간단한 세그멘테이션(segmentation) 방법이다. 세그멘테이션이란 이미지를 분할하여 원하는 부분 혹은 물체를 검출하는데 많이 사용되는 기법이다. 이진화는 원본 영상을 그레이 영상으로 변환한 후, threshold값을 이용하여 배경과 물체를 분리해낸다. 아래 화면은 책상 위에 빨간색 공이 놓여있는 컬러 이미지를 그레이스케일 이미지로 변환한 후, 이진화를 통해 빨간색 공 영역을 분리해낸 결과이다. 가장 단순한 이진화 방법은 이미지 전체에 고정된 전역 threahold값을 사용하는 것이다.그레이 영상을 입력으로 받아서 영상 전체를 스캔하면서 픽셀값이 threshlod값보다 크면 결과 영상의 같은 위치의 픽셀값을 흰색(1 또는 255)으로 하고, 픽셀값이 threshold값보다 작으면 검은색..

opencv 윈도우 상에서 마우스 클릭한 위치 출력하기
OpenCV/OpenCV 강좌2016. 7. 6. 12:58opencv 윈도우 상에서 마우스 클릭한 위치 출력하기

마우스 왼쪽 버튼으로 이미지상의 특정 위치를 클릭하였을 때 (x,y)로 좌표를 출력하도록 프로그램 코드를 작성하였습니다. 아래 이미지를 크게 보려면 클릭해서 확인하세요.. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include #include #include using namespace cv;using namespace std; void CallBackFunc(int event, int x, int y, int flags, void* userdata){ if (event == EVENT_LBUTTONDOWN) { cout

opencv와 wxwidgets을 연동하여 웹캠에서 캡처한 영상을 화면에 출력하기
OpenCV/OpenCV 강좌2016. 6. 7. 13:03opencv와 wxwidgets을 연동하여 웹캠에서 캡처한 영상을 화면에 출력하기

웹캠으로 부터 입력된 영상을 wxwidgets의 panel에 출력해주는 프로그램을 참고에 있는 소스코드를 참고하여 구현했습니다. 컴파일을 하려면.. $ g++ -o main main.cpp ` wx-config --cflags --libs` `pkg-config opencv --libs --cflags` 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111..

미분류2016. 5. 28. 20:18wxpython + opencv 사용하여 ip camera 영상 출력

opencv 3.0 부터는 cv 모듈이 제거 된거 같습니다.. 그래서 기존 코드는 동작안될듯 합니다..대신 사용할 수 있는 코드를 찾았습니다.. 1234567891011121314151617import cv2import urllib import numpy as np stream=urllib.urlopen('http://plazacam.studentaffairs.duke.edu/mjpg/video.mjpg')bytes=''while True: bytes+=stream.read(1024) a = bytes.find('\xff\xd8') b = bytes.find('\xff\xd9') if a!=-1 and b!=-1: jpg = bytes[a:b+2] bytes= bytes[b+2:] i = cv2.imde..

OpenCV/OpenCV 강좌2016. 5. 23. 12:09opencv를 이용하여 wxPython에서 웹캠 영상 띄우기

예전엔 소스코드가 지금거 보다 더 길었던거 같은데.. 좀더 간결하게 작성된 파이썬 코드를 찾았습니다.. 1234567891011121314151617181920212223242526272829303132333435363738394041424344import wximport cv2 class ShowCapture(wx.Panel): def __init__(self, parent, capture, fps=15): wx.Panel.__init__(self, parent) self.capture = capture ret, frame = self.capture.read() height, width = frame.shape[:2] parent.SetSize((width, height)) frame = cv2.cvt..

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에 가까울 것이다.특징을 추출할 수 있는 것들이 많은 영역..

반응형
image