Programming/openCV2012. 2. 21. 21:37
iplImage는 c 시절에 쓰던 이미지를 담수 변수이고
c++로 옮겨온 이후로는 Mat를 쓴다고 한다.

tutorial을 보다 보니
cvLoadImage() 이런게 나오는데 이건 C버전이고
imread() 요게 c++ 버전인듯. 


대충 눈에 띄는 함수 정리

imread()
imwrite()
namedWindow()
imshow()

line()
rectangle()
circle()
ellipse()
fillpoly()
putText() 

'Programming > openCV' 카테고리의 다른 글

Interoperability with OpenCV 1  (0) 2014.02.08
opencv2 on ubuntu  (2) 2013.11.10
openCV 글씨 쓰기 예제  (2) 2012.02.12
Cmake로 openCV 컴파일 설정 및 설치하기  (0) 2012.02.12
ubuntu opencv 패키지 버전 정보  (0) 2012.02.12
Posted by 구차니
Programming/Java2012. 2. 16. 23:27
찾아보니 iterator 쓰라는 말도 있는데 hashset을 사용하니 간단하게 해결된다.

public static void sortRes()
{
ArrayList<String> sort_result = new ArrayList<String>(new HashSet<String>(ResultList));
ResultList = sort_result;
} 

[링크 : http://blog.outsider.ne.kr/708]
Posted by 구차니
Programming/C Win32 MFC2012. 2. 15. 16:31
한 커뮤니티 질문이 올라와서
혹시나 해서 해봤는데 헐.. -_-

#include 나
# include 나

아무튼 #으로 시작하기만 하면 문제없음!
Posted by 구차니
Programming2012. 2. 12. 09:59
병렬처리등에 꽤나 이름이 많이 알려진 녀석인듯 한데, 아무튼 둘다 Intel꺼군!
TBB는 open source로 진행되는데 반해 IPP는 유료로 제공되는 것으로 보인다.

Intel® Threading Building Blocks (Intel TBB)
Intel® Integrated Performance Primitives (Intel® IPP)

[링크 : http://threadingbuildingblocks.org/]
[링크 : http://software.intel.com/en-us/articles/intel-ipp/]  

'Programming' 카테고리의 다른 글

ARToolKit / openVRML  (0) 2012.12.25
윤년 계산하기  (2) 2012.05.21
프로그래밍 언어에 대한 생각  (2) 2012.01.25
S language  (0) 2011.07.01
SRS Template  (0) 2011.06.19
Posted by 구차니
Programming/openCV2012. 2. 12. 09:53
2.3.1의 opencv_tutorials.pdf 파일에 들어있는 예제이다.

$ cat opencv_font.c 
#include "opencv/cv.h"
#include "opencv/highgui.h"
int main ( int argc, char **argv )
{
        cvNamedWindow( "My Window", 1 );
        IplImage *img = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
        CvFont font;
        double hScale = 1.0;
        double vScale = 1.0;
        int lineWidth = 1;

        cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX | CV_FONT_ITALIC, hScale, vScale, 0, lineWidth );
        cvPutText( img, "Hello World!", cvPoint( 200, 400 ), &font, cvScalar( 255, 255, 0 ) );
 
        cvShowImage( "My Window", img );
        cvWaitKey();

        return 0;
}

$ gcc -lhighgui -lcv opencv_font.c 
opencv_font.c: In function ‘main’:
opencv_font.c:12: error: too few arguments to function ‘cvInitFont’
opencv_font.c:14: error: too few arguments to function ‘cvScalar’
opencv_font.c:16: error: too few arguments to function ‘cvWaitKey’ 

gcc로 하면 에러가 나니 g++로 바꾸어서 컴파일 해준다.
$ g++ -lhighgui -lcv opencv_font.c 
$ ./a.out 


좌표계는 좌측 상단이 (0,0)인듯 하다.

'Programming > openCV' 카테고리의 다른 글

opencv2 on ubuntu  (2) 2013.11.10
openCV Mat / iplImage  (0) 2012.02.21
Cmake로 openCV 컴파일 설정 및 설치하기  (0) 2012.02.12
ubuntu opencv 패키지 버전 정보  (0) 2012.02.12
우분투에서 openCV 카메라 영상받기 예제  (0) 2012.02.04
Posted by 구차니
Programming/openCV2012. 2. 12. 09:48
cmake를 설치 해야 하므로 아래의 패키지이름을 사용하고
$ sudo apt-get install cmake cmake-qt-gui  

소스는 ${HOME}/download/OpenCV-2.3.1 에 다운로드 받아서 압축해제 되어 있으며

release 디렉토리는 추가적으로 mkdir을 통해 만들어 주었다.

$ wget "http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fopencvlibrary%2Ffiles%2Fopencv-unix%2F2.3.1%2F&ts=1329007542&use_mirror=cdnetworks-kr-2"
$ mv  OpenCV-2.3.1a.tar.bz2*  OpenCV-2.3.1a.tar.bz2 
$ tar -xvf  OpenCV-2.3.1a.tar.bz2
$ cd OpenCV-2.3.1
$ mkdir release
$ cmake-gui 

그리고는 source 경로를 지정해주고
build 하여 나온 binary를 넣을 경로를 relase로 정해주고 나서 Configure를 누른후 Generate를 누르면 makefile이 생성된다.
그리고 콘솔에서 make 치면 빌드가 시작된다.

make install 은 sudo를 붙여서 해야 함! 안하면 에러에러에러~
Install the project...
-- Install configuration: "Release"
CMake Error at cmake_install.cmake:36 (FILE):
  file cannot create directory: /usr/local/share/OpenCV.  Maybe need
  administrative privileges.


make: *** [install] 오류 1

다시 sudo를 붙여서 쿡!
$ sudo make install

아무래도 so가 복사되었으니 ldconfig도 실행
$ sudo ldconfig  

버전확인은 아래의 경로에서!
$ vi /usr/local/include/opencv2/core/version.hpp 
#ifndef __OPENCV_VERSION_HPP__
#define __OPENCV_VERSION_HPP__

#define CV_MAJOR_VERSION    2
#define CV_MINOR_VERSION    3
#define CV_SUBMINOR_VERSION 1

#define CVAUX_STR_EXP(__A)  #__A
#define CVAUX_STR(__A)      CVAUX_STR_EXP(__A)
#define CV_VERSION          CVAUX_STR(CV_MAJOR_VERSION) "." CVAUX_STR(CV_MINOR_VERSION) "." CVAUX_STR(CV_SUBMINOR_VERSION)

#endif 

[링크 : http://opencv.willowgarage.com/wiki/InstallGuide]

'Programming > openCV' 카테고리의 다른 글

openCV Mat / iplImage  (0) 2012.02.21
openCV 글씨 쓰기 예제  (2) 2012.02.12
ubuntu opencv 패키지 버전 정보  (0) 2012.02.12
우분투에서 openCV 카메라 영상받기 예제  (0) 2012.02.04
우분투에서 openCV 설치하기  (0) 2012.02.04
Posted by 구차니
Programming/openCV2012. 2. 12. 09:34
2.0.0 으로 추측된다.
$ vi /usr/include/opencv/cvvar.h
#ifndef _CVVERSION_H_
#define _CVVERSION_H_

#define CV_MAJOR_VERSION    2
#define CV_MINOR_VERSION    0
#define CV_SUBMINOR_VERSION 0

#define CVAUX_STR_EXP(__A)  #__A
#define CVAUX_STR(__A)      CVAUX_STR_EXP(__A)
#define CV_VERSION          CVAUX_STR(CV_MAJOR_VERSION) "." CVAUX_STR(CV_MINOR_VERSION) "." CVAUX_STR(CV_SUBMINOR_VERSION)

#endif /*_CVVERSION_H_*/ 

2012년 2 12일 현재 openCV의 최신 버전은 2.3.1 이며 2011년 9월 12일에 업로드 되었다.
[링크: http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3.1/]

'Programming > openCV' 카테고리의 다른 글

openCV 글씨 쓰기 예제  (2) 2012.02.12
Cmake로 openCV 컴파일 설정 및 설치하기  (0) 2012.02.12
우분투에서 openCV 카메라 영상받기 예제  (0) 2012.02.04
우분투에서 openCV 설치하기  (0) 2012.02.04
openCV  (0) 2012.02.04
Posted by 구차니
컴파일러는 니 손이랑 머리 보다 빨러!






소스 보고 분석하기 보다는
일단 붙여서 에러나는거 보고 수정하는게 빠르지만
그래도 분석하겠다고 일일이 따라서 추적하는 날 보며 또 다시 좌절 ㅠ.ㅠ 

'Programming > 소프트웨어 공학' 카테고리의 다른 글

MVC - Model / View / Contoller  (0) 2014.04.19
디자인 패턴 - singleton  (0) 2014.04.02
간트차트  (0) 2012.01.31
리팩토링 (refactoring)  (0) 2012.01.15
SRS / SDS  (0) 2011.06.20
Posted by 구차니
Programming/Java2012. 2. 6. 21:09
머 이렇게 생겼군!

일단 이 예제에서 눈에 들어온 내용은,
XML을 탐색하기 위해서는 정형화된 XML 이름이 구조적으로 있어야 한다는 것.

<?xml version="1.0"?>
<company>
	<staff>
		<firstname>yong</firstname>
		<lastname>mook kim</lastname>
		<nickname>mkyong</nickname>
		<salary>100000</salary>
	</staff>
	<staff>
		<firstname>low</firstname>
		<lastname>yin fong</lastname>
		<nickname>fong fong</nickname>
		<salary>200000</salary>
	</staff>
</company>

element가 달라져도 상관은 없지만, 프로그램에 일일이 xml의 element 이름을 바꾸어 줘야 하니까
그래서는 xml을 쓰는 의미가 많이 희석이 된다.(데이터와 구현을 분리하는 의미가 없어지니)

[링크 : http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/]
    [링크 : http://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/parsers/DocumentBuilder.html]
    [링크 :  http://docs.oracle.com/javase/1.5.0/docs/api/org/w3c/dom/Document.html]
    [링크 :  http://docs.oracle.com/javase/1.5.0/docs/api/org/w3c/dom/Element.html]
 
Posted by 구차니
Programming/openCV2012. 2. 4. 22:32

$ cat opencv.c
/**
 * Display video from webcam and detect faces
 */
#include <stdio.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
CvHaarClassifierCascade *cascade;
CvMemStorage            *storage;
 
void detectFaces( IplImage *img );
 
int main( int argc, char** argv )
{
    CvCapture *capture;
    IplImage  *frame;
    int       key;
    char      *filename = "haarcascade_frontalface_alt.xml";
 
    /* load the classifier
       note that I put the file in the same directory with
       this code */
    cascade = ( CvHaarClassifierCascade* )cvLoad( filename, 0, 0, 0 );
 
    /* setup memory buffer; needed by the face detector */
    storage = cvCreateMemStorage( 0 );
 
    /* initialize camera */
    capture = cvCaptureFromCAM( 0 );
 
    /* always check */
    assert( cascade && storage && capture );
 
    /* create a window */
    cvNamedWindow( "video", 1 );
 
    while( key != 'q' ) {
        /* get a frame */
        frame = cvQueryFrame( capture );
 
        /* always check */
        if( !frame ) break;
 
        /* 'fix' frame */
//      cvFlip( frame, frame, -1 );
        frame->origin = 0;
 
        /* detect faces and display video */
        detectFaces( frame );
 
        /* quit if user press 'q' */
        key = cvWaitKey( 10 );
    }
 
    /* free memory */
    cvReleaseCapture( &capture );
    cvDestroyWindow( "video" );
    cvReleaseHaarClassifierCascade( &cascade );
    cvReleaseMemStorage( &storage );
 
    return 0;
}
 
void detectFaces( IplImage *img )
{
    int i;
 
    /* detect faces */
    CvSeq *faces = cvHaarDetectObjects(
            img,
            cascade,
            storage,
            1.1,
            3,
            0 /*CV_HAAR_DO_CANNY_PRUNNING*/,
            cvSize( 40, 40 ) );
 
    /* for each face found, draw a red box */
    for( i = 0 ; i < ( faces ? faces->total : 0 ) ; i++ ) {
        CvRect *r = ( CvRect* )cvGetSeqElem( faces, i );
        cvRectangle( img,
                     cvPoint( r->x, r->y ),
                     cvPoint( r->x + r->width, r->y + r->height ),
                     CV_RGB( 255, 0, 0 ), 1, 8, 0 );
    }
 
    /* display video */
    cvShowImage( "video", img );
} 

[링크 :  http://nashruddin.com/OpenCV_Face_Detection]
[링크 : http://opencv.willowgarage.com/wiki/FaceDetection]  

$ gcc opencv.c -o opencv -lcv -lhighgui
$ ./opencv  

인식이 좀 느려서 잘은 모르겠지만 뒤집히면 얼굴을 인식하진 못한다. 
(컴퓨터가 느려서 캡쳐하다가 밀림 ^^; 아무튼 인식하면 저렇게 빨간색 박스가 쳐진다.)
(화면색이 이런건 IR 카메라로 개조한 녀석이라.. OTL)

위에서 cvFlip() 함수를 주석처리 하면 상하 반전이 되지 않고 제대로 나온다.
[링크 : http://nashruddin.com/OpenCV_Examples_Part_2]


 

[링크 : http://www.mediafire.com/?01434w7wwe1db11] haarcascade_frontalface_alt.xml 파일
 

'Programming > openCV' 카테고리의 다른 글

Cmake로 openCV 컴파일 설정 및 설치하기  (0) 2012.02.12
ubuntu opencv 패키지 버전 정보  (0) 2012.02.12
우분투에서 openCV 설치하기  (0) 2012.02.04
openCV  (0) 2012.02.04
openCV OCR 예제  (0) 2011.07.17
Posted by 구차니