메뉴 건너뛰기

응용프로그램 - RaspberryPi.NCLab

* 앞으로의 응용프로그램 실행 순서는 다음과 같음

test.cpp 작성 -> CMakeLists.txt 작성 -> cmake -> make -> 백그라운드에서 Test 실행 -> mjpg_streamer 실행

test.cpp


1. grayscale이라는 디렉토리를 만들고 그 안에 CMakeLists.txt, test.cpp 파일 생성

# cd ~
# mkdir grayscale
# cd grayscale
# vim CMakeLists.txt
# vim test.cpp

cmake_minimum_required ( VERSION 2.8 )
PROJECT ( Test )
find_package ( OpenCV REQUIRED )
add_executable ( Test test.cpp )
target_link_libraries ( Test ${OpenCV_LIBS} )

* CMakeLists.txt는 이전 과 같으므로 복사해 와도 무방함


#include <cv.h>
#include <highgui.h>

int main(void)
{
	int i, threshold = 128;

	IplImage* image = 0;
	/* 연결된 카메라에서 제어를 받아 옴 */
	CvCapture* capture = cvCaptureFromCAM(0);
	
	/* 화면의 높이와 너비를 받아 옴*/
	int width = (int)cvGetCaptureProperty(
		capture, CV_CAP_PROP_FRAME_WIDTH);
	int height = (int)cvGetCaptureProperty(
		capture, CV_CAP_PROP_FRAME_HEIGHT);
	CvSize size = cvSize(width, height);

	/* 위에서 받아 온 크기를 가지고 이미지를 생성 */
	IplImage* grayimage = cvCreateImage(size, IPL_DEPTH_8U, 1);

	while(1) {
		cvGrabFrame(capture);
		/* 크기에 맞춰 이미지를 입력 */
		image = cvRetrieveFrame(capture);
		/* 입력된 이미지를 그레이스케일로 변환 */
		cvCvtColor(image, grayimage, CV_BGR2GRAY);
		cvSaveImage("/srv/http/origin2.jpg", grayimage);
	}
	cvReleaseImage(&image);
	cvReleaseImage(&grayimage);
	cvReleaseCapture(&capture);
	return 0;
}



2. cmake 유틸리티를 통해 Makefile 생성

# cmake .
-- The C compiler identification is GNU 5.2.0
-- The CXX compiler identification is GNU 5.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /root/grayscale


3. make 유틸리티를 통해 컴파일

# make
Scanning dependencies of target Test
[ 50%] Building CXX object CMakeFiles/Test.dir/test.cpp.o
[100%] Linking CXX executable Test
[100%] Built target Test


4. 컴파일 결과물인 Test를 백그라운들에서 실행하고 mjpg_streamer 유틸리티를 통해 웹으로 출력

# ./Test&
[1] 23949
# mjpg_streamer -i "input_file.so -f /srv/http/" -o "output_http.so -p 8080 -w /usr/share/mjpg_streamer/www"
MJPG Streamer Version: svn rev:
 i: folder to watch...: /srv/http/
 i: forced delay......: 1
 i: delete file.......: no, do not delete
 i: filename must be..: -no filter for certain filename set-
 o: www-folder-path...: /usr/share/mjpg_streamer/www/
 o: HTTP TCP port.....: 8080
 o: username:password.: disabled
 o: commands..........: enabled



5. 웹 브라우저에서 접근

캡처15.PNG

* 앞과 같은 방식으로 접근하면 됨



6. Ctrl+c 키를 눌러 mjpg_streamer를 종료시키고 Test도 종료

^Csetting signal to stop
force cancellation of threads and cleanup resources
 o: cleaning up ressources allocated by server thread #00
done
# ps -ef | grep Test
root     23949 23785 32 05:07 pts/1    00:00:46 ./Test
root     23960 23785  0 05:10 pts/1    00:00:00 grep Test
# kill 23949
* Test의 pid는 환경에 따라 달라질 수 있으므로 유의


--

OpenCV를 이용한 영상처리 실습 - 01 개발환경 소개

OpenCV를 이용한 영상처리 실습 - 02 개발환경 구축하기

OpenCV를 이용한 영상처리 실습 - 03 화면에 + 모양의 선 그리기

OpenCV를 이용한 영상처리 실습 - 05 영상에서 얼굴 검출하기

위로