Programming/C Win32 MFC2014. 7. 3. 13:38
무슨 차이인지 모르겠다 -_-
일단 정의추적해서 보니..
vector는 _Vector_val을 상속받아 만든 derived class이고
Vector는 순수 클래스 이다.

vector
// TEMPLATE CLASS vector
template<class _Ty, class _Ax> class vector : public _Vector_val<_Ty, _Ax>
{

operations.hpp
template <typename _Tp> class Vector
{
}

+
std::vector 라고 하는것 봐서 스탠다드 라이브러리(?)에 vector가 사용되는 듯.
[링크 : http://hongkwan.blogspot.kr/2013/01/opencv-2-6-example_5.html ]

'Programming > C Win32 MFC' 카테고리의 다른 글

printf POSIX 확장 %1$d  (0) 2014.12.09
include guard  (0) 2014.11.05
순열생성관련  (0) 2014.06.27
2중 포인터 사용이유  (0) 2014.03.19
typeof  (0) 2014.03.11
Posted by 구차니
Programming/openCV2014. 7. 2. 23:45
어렵거나 대단한 코드는 아니고 단순하게 RGB를 HSV로 변환하는 코드이다.

BGR 이니까.. 블루값에 Hue 성분이 들어갔으려나?
나중에 색상 조절해서 채널별로 출력을 해봐야겠다



#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{
        VideoCapture cap(0);
        if(!cap.isOpened())
        {
                cout << "No camera detected" << endl;
                return -1;
        }
        else
        {
                cout << "In capture ..." << endl;
        }

        namedWindow( "Display window", WINDOW_AUTOSIZE );

    for(;;)
    {
                Mat frame;
                Mat hsv;
                if(!cap.read(frame)) break;

                cvtColor(frame,hsv, CV_BGR2HSV);
                imshow("Display window", frame);
                imshow("HSV window", hsv);
                if(waitKey(30) >= 0) break;
    }

        return 0;
}

imgproc.hpp에 다음과 같이 정의 되어 있으며
cvtColor()는 독립된 함수로 되어있다.(클래스 랩핑이 안되어 있다)
enum
{
    COLOR_BGR2HSV     =40,
    COLOR_RGB2HSV     =41,
 
    COLOR_COLORCVT_MAX  = 135
};
 
//! converts image from one color space to another
CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn=0 ); 
Posted by 구차니
Programming/openCV2014. 7. 1. 17:49
소스는 이전글 참조
2014/07/01 - [Programming/openCV] - openCV2 2.4.9 + VS2008 좌충우돌 프로젝트 생성하기 

$ g++ cv2cam.cpp `pkg-config --libs opencv` 

$ pkg-config --libs opencv
-lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann

[링크 : https://help.ubuntu.com/community/OpenCV ] 

일단.. #if 로 막은 아래소스를 사용한건데
2.3.1에서는 문제없이 되는 것을 봐서는 윈도우에서 라이브러리 버전이 꼬였거나 먼가 설정 문제인 듯 하다.




Posted by 구차니
Programming/openCV2014. 7. 1. 12:43
플랫폼
win7 64bit
VS2008
opencv 2.3.1 / opencv 2.4.7.2 / opencv 2.4.9

프로젝트 설정
include path 설정


library path 설정


library 목록 설정



왼쪽은 릴리즈용 오른쪽은 디버깅용(*d.lib)이다.
2.3.1
opencv_calib3d231.lib
opencv_contrib231.lib
opencv_core231.lib
opencv_features2d231.lib
opencv_flann231.lib
opencv_gpu231.lib
opencv_highgui231.lib
opencv_imgproc231.lib
opencv_legacy231.lib
opencv_ml231.lib
opencv_objdetect231.lib
opencv_ts231.lib
opencv_video231.lib 
opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib


2.4.7

opencv_calib3d247.lib

opencv_contrib247.lib

opencv_core247.lib

opencv_features2d247.lib

opencv_flann247.lib

opencv_gpu247.lib

opencv_highgui247.lib

opencv_imgproc247.lib

opencv_legacy247.lib

opencv_ml247.lib

opencv_nonfree247.lib

opencv_objdetect247.lib

opencv_ocl247.lib

opencv_photo247.lib

opencv_stitching247.lib

opencv_superres247.lib

opencv_ts247.lib

opencv_video247.lib

opencv_videostab247.lib 

opencv_calib3d247d.lib

opencv_contrib247d.lib

opencv_core247d.lib

opencv_features2d247d.lib

opencv_flann247d.lib

opencv_gpu247d.lib

opencv_highgui247d.lib

opencv_imgproc247d.lib

opencv_legacy247d.lib

opencv_ml247d.lib

opencv_nonfree247d.lib

opencv_objdetect247d.lib

opencv_ocl247d.lib

opencv_photo247d.lib

opencv_stitching247d.lib

opencv_superres247d.lib

opencv_ts247d.lib

opencv_video247d.lib

opencv_videostab247d.lib 


2.4.9
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_ml249.lib
opencv_nonfree249.lib
opencv_objdetect249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_videostab249.lib  
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib 


그 외에는 프로젝트의 exe 파일이 생성되는 릴리즈 / 디버깅 폴더에 dll 파일을 복사한다.


소스코드
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
#if 1
{
// opencv 1 style 
CvCapture* capture = 0;
    Mat frame, frameCopy, image;

    capture = cvCaptureFromCAM( 0 ); //0=default, -1=any camera, 1..99=your camera
    if(!capture) cout << "No camera detected" << endl;

    cvNamedWindow( "result", 1 );

    if( capture )
    {
        cout << "In capture ..." << endl;
        for(;;)
        {
            IplImage* iplImg = cvQueryFrame( capture );
            frame = iplImg;
            if( frame.empty() )
                break;
            if( iplImg->origin == IPL_ORIGIN_TL )
                frame.copyTo( frameCopy );
            else
                flip( frame, frameCopy, 0 );

cvShowImage( "result", iplImg );

            if( waitKey( 10 ) >= 0 )
                cvReleaseCapture( &capture );
        }

        waitKey(0);

cvDestroyWindow("result");

return 0;
}

return 0;
}
#else
{
// opencv 2 style 
    VideoCapture cap(0);
if(!cap.isOpened())
{
cout << "No camera detected" << endl;
return -1;
}
else
{
cout << "In capture ..." << endl;
}

namedWindow( "Display window", WINDOW_AUTOSIZE );

    for(;;)
    {
Mat frame;
        if(!cap.read(frame)) break;
imshow("Display window", frame);
if(waitKey(30) >= 0) break;
    }

return 0;
}
#endif 

결론 : 설치했던 노트북에 무언가가 엉겨서 문제가 있었던 듯.. 다시 노트북을 밀어봐야 하나... ㅠㅠ

[링크: http://docs.opencv.org/.../windows_visual_studio_Opencv.html#windows-visual-studio-how-to]
[링크: http://thinkpiece.tistory.com/65]
[링크: http://hxr99.blogspot.kr/2011/12/opencv-examples-camera-capture.html] source
[링크: http://www.anlak.com/using-opencv-2-4-x-with-visual-studio-2010-tutorial/]
[링크: http://ko.dll-files.com/msvcp100d.dll.html]
[링크: http://stackoverflow.com/questions/16574959/installation-of-opencv-2-4-5-on-visual-studio-2008]
[링크: http://stackoverflow.com/questions/.../fatal-error-in-starting-up-opencv-2-4-6-on-vs-2008-file-not-found
[링크 : http://www.codeproject.com/Answers/468324/Problem-with-using-OpenCV-in-VS-2012#answer1]
Posted by 구차니
Programming/openCV2014. 6. 30. 16:30
Linker - general - Additional Library Directories
에서
D:\opencv\build\x64\vc10\lib
등을 추가해주면 된다.
x86 / Visual studio 버전별로 미리 컴파일 된 라이브러리가 존재한다.

dll을 사용하는 법은 좀 찾아 봐야할 듯.. 
[링크 : http://exportidea.blogspot.kr/2013/08/windows-dll.html]
[링크 : http://dhna.tistory.com/28]

To do this go to the Linker → Input and under the “Additional Dependencies” entry add the name of all modules which you want to use:
 
The names of the libraries are as follow:
(The Name of the module)(The version Number of the library you use)d.lib
A full list, for the latest version would contain:

opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib
 
The letter d at the end just indicates that these are the libraries required for the debug. Now click ok to save and do the
same with a new property inside the Release rule section. Make sure to omit the d letters from the library names and
to save the property sheets with the save icon above them.
 
opencv_tutorial.pdf 1.5. / How to build applications with OpenCV inside the Microsoft Visual Studio
[링크 : http://docs.opencv.org/.../windows_visual_studio_Opencv.html#windows-visual-studio-how-to]

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

openCV2 2.3.1 ubuntu 컴파일하기  (0) 2014.07.01
openCV2 2.4.9 + VS2008 좌충우돌 프로젝트 생성하기  (0) 2014.07.01
OpenNI - Open Natural Interaction  (0) 2014.06.30
opencv2 웹캠 관련 문서  (0) 2014.06.28
opencv docs  (0) 2014.02.17
Posted by 구차니
Programming/openCV2014. 6. 30. 14:07
키넥트와 같은 장비들을 제어하기위한 오픈 라이브러리이다.

[링크 : http://en.wikipedia.org/wiki/OpenNI]
[링크 : http://structure.io/openni]
[링크 : http://talkingaboutme.tistory.com/195]
 

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

openCV2 2.4.9 + VS2008 좌충우돌 프로젝트 생성하기  (0) 2014.07.01
openCV visual studio 프로젝트 생성하기  (0) 2014.06.30
opencv2 웹캠 관련 문서  (0) 2014.06.28
opencv docs  (0) 2014.02.17
Interoperability with OpenCV 1  (0) 2014.02.08
Posted by 구차니
Programming/openCV2014. 6. 28. 23:41
윈도우에서 비쥬얼 스튜디오로 하려니 또 막막... ㅠㅠ
튜토리얼 읽으면서 차근차근 해봐야겠다

아무튼.. TBB도 깔아야 하고 Cmake도 깔아야 하고 은근 윈도우에서는 더 귀찮아 진듯?

[링크 : http://hxr99.blogspot.kr/2011/12/opencv-examples-camera-capture.html]
[링크 : http://thinkpiece.tistory.com/246]
[링크 : http://thinkpiece.tistory.com/65]

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

openCV visual studio 프로젝트 생성하기  (0) 2014.06.30
OpenNI - Open Natural Interaction  (0) 2014.06.30
opencv docs  (0) 2014.02.17
Interoperability with OpenCV 1  (0) 2014.02.08
opencv2 on ubuntu  (2) 2013.11.10
Posted by 구차니
Programming/C Win32 MFC2014. 6. 27. 17:03
Junit이나 CUnit 등에서 테스트 시 입력값들을 생성해서
경우의 수대로 입력하기 위해서는 순열을 생성하는게 유리하다.

아무튼..
Unit Test시 Range로 테스트 하려면 순열을 쓰기에는..
int 나 float / double에는 맞지 않는것 같고.. 어떻게 해야하려나? 

'Programming > C Win32 MFC' 카테고리의 다른 글

include guard  (0) 2014.11.05
vc++ vector와 Vector 차이점?  (0) 2014.07.03
2중 포인터 사용이유  (0) 2014.03.19
typeof  (0) 2014.03.11
const / pointer  (0) 2014.02.25
Posted by 구차니
Programming/Java2014. 6. 27. 16:47
annotation 기본 정의된 녀석들
@Override
@Deprecated
@SuppressWarnings
@SafeVarargs
@FunctionalInterface 

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

자바 유료화?  (10) 2018.11.05
자바 임베디드 JRE 라이센스?  (0) 2015.05.12
JUnit tutorial  (0) 2014.06.27
java unchecked/checked exception  (0) 2014.05.15
Class.forName  (0) 2014.05.09
Posted by 구차니
Programming/Java2014. 6. 27. 13:29
음.. 그러고 보니 이클립스에서 JUnit / Maven 사용시
war 파일로 빼내면은 JUnit이 제대로 작동하지 않았던거 같은 기억이 드는데...


JUnit은 assert로 시작하는 녀석들로 주로 테스트를 하는 것 같다.
[링크 : http://using.tistory.com/entry/JUnit-테스트-하기]

API를 뒤져보니 참/거짓/동일/Null 이정도로 축약되는 것 같고..
static void assertEquals(java.lang.Object expected, java.lang.Object actual) // Asserts that two objects are equal.

static void assertTrue(boolean condition) // Asserts that a condition is true.
static void assertFalse(boolean condition) // Asserts that a condition is false.

static void assertSame(java.lang.Object expected, java.lang.Object actual) // Asserts that two objects refer to the same object.
static void assertNotSame(java.lang.Object unexpected, java.lang.Object actual) //Asserts that two objects do not refer to the same object.

static void assertNull(java.lang.Object object) // Asserts that an object is null.

static <T> void  assertThat(T actual, org.hamcrest.Matcher<T> matcher) // Asserts that actual satisfies the condition specified by matcher.

static void fail() //Fails a test with no message.
 
[링크 : http://junit.sourceforge.net/javadoc/org/junit/Assert.html] API 

pdf 파일은 일단 찾아 놓으면 피가 되고 살이 되니...
[링크 : http://www.tutorialspoint.com/junit/]
    [링크 : http://www.tutorialspoint.com/junit/junit_tutorial.pdf] PDF 파일
[링크 : http://www.mkyong.com/tutorials/junit-tutorials/]

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

자바 임베디드 JRE 라이센스?  (0) 2015.05.12
predefined annotation /java  (0) 2014.06.27
java unchecked/checked exception  (0) 2014.05.15
Class.forName  (0) 2014.05.09
JDNI - Java Directory & Naming Interface  (0) 2014.05.09
Posted by 구차니