-OpenCV란

OpenCV는 Open Source Computer Vision의 약자로써, 실시간 이미지 프로세싱에 중점을 둔 라이브러리다.

원래 인텔이 개발하였었고 지금은 BSD 라이센스로 배포된다.

처음에 인텔에서 만들어서 인지 인텔 CPU에서 사용할 경우 IPP(Intel Performance Primitive)로 인해 속도의 향상을 볼 수 있다.


지원하는 플랫폼은 Windows와 Linux, Mac OS, iOS, Android를 지원한다.




인사동에 위치한 "선천"이라는 한정식집입니다.

점심 시간을 조금 넘긴 13시쯤부터 골목길을 두리번 거리다 찾은 가게인데 가격대비 양이 조금 적은 거 말고는 괜찮네요.


저희가 시킨 메뉴는 한식 1인 2개 이고, 아래가 나온 메뉴입니다.

된장찌개에 밑반찬으로 김치, 계란찜, 콩자반, 도토리묵, 닭볶음탕, 생선조림, 나물 등이 나오고 사진에는 안나왔지만 배추된장국이 각각 나옵니다. 음식은 대체로 짜지 않고 조미료 맛이 안납니다. 요즘 먹는 음식하고 좀 다른 맛이 난달까? 아무튼 저 같은 20대 보다는 40대나 50대, 그 이상 분들이 좋아하실 듯한 맛입니다.(물론 저는 맛있게 잘 먹음) 특히 된장찌개와 배추 된장국이 평소에 먹던거와 많이 달랐습니다.



생선조림입니다. 다른 음식에 비해 상대적으로 짠 편인데, 간장이 참 맛있습니다.


오징어가 들어간 김치입니다. 오징어는 생오징어인지 좀 질기네요 ㅡㅡㅋ; 김치 자체는 시원하고 괜찮았습니다.



후식으로는 누룽지가 나왔고 차도 가져다 주십니다. 양이 좀 적은듯 했지만 밀폐된 방에서 여유있고 조용하게, 맛있게 먹고 나왔네요. 가격은 한식은 인당 11000원, 한정식은 49500원입니다. 위치는 3호선 안국역 6번 출구에서 가깝습니다.

'사진 > 음식' 카테고리의 다른 글

설빙 인절미 빙수, 블루베리 치즈 빙수  (0) 2014.10.17
신림역 7번 출구 초밥천하  (0) 2014.10.11
국대떡볶이 신사 본점 후기  (0) 2014.10.07
[700D] 체리  (4) 2014.07.09
아시아나 광저우행 기내식  (2) 2014.03.18
[700D] 빵  (0) 2014.01.02
[700D] 간월도 영양돌솥밥, 우럭 매운탕  (0) 2014.01.02



※요약
CString::Replace : 문자 또는 문자열을 교체한다.

※특징
문자나 문자열에 '\'가 있을 경우, '\'를 하나 더 붙여줘야 한다.
이유는 '\'는 Escape문자이기 때문이다.

※함수 원형 및 설명
int Replace( TCHAR chOld, TCHAR chNew );
//chOld : 교체될 문자
//chNew : 교체할 문자
//반환값 : 교체한 문자 또는 문자열의 수

int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );
//lpszOld : NULL로 종결되는 교체될 문자
//lpszNew : NULL로 종결되는 교체할 문자
//반환값 : 교체한 문자 또는 문자열의 수

※예제

#include <atlstr.h>       //CString

#define print( str ) printf( "%s\n", str )

int main( )
{
	CString strText1;
	CString strText2;

	strText1 = "String";
	strText2 = "C⁄C++";

	print( strText1 );
	print( strText2 );

	strText1.Replace( "Str", "Play" );
	strText2.Replace( "C++", "Java" );

	print( strText1 );
	print( strText2 );

	return 0;
}


※결과







※요약
Compare : 대소문자를 구분하여 문자열을 비교한다.
CompareNoCase : 대소문자를 구분하지 않고 문자열을 비교한다.

※특징
operator ==, !=, <, >, <=, >= 도 대소문자를 구분하여 CString의 문자열을 비교할 수 있으며
C언어 함수 중 strcmp, strncmp, stricmp, strnicmp 등과 비슷하다.
또 한 비교는 아스키코드를 기준으로 비교하므로 아스키코드표를 참고하면 된다.

※함수 원형 및 설명
int Compare( LPCTSTR lpsz ) const;
int CompareNoCase( LPCTSTR lpsz ) const;
//lpsz : NULL로 종결되는 비교할 문자열
//반환값 : 문자열이 lpsz보다 작을 경우 -1
//         문자열이 lpsz와 같을 경우 0
//         문자열이 lpsz보다 큰 경우 1

※예제

#include <atlstr.h>       //CString

#define print( str ) printf( "%d\n", str )

int main( )
{
	CString strText1;
	CString strText2;
	CString strText3;

	strText1 = "ABC";

	//Compare - 대소문자 구분
	print( strText1.Compare( "ABC" ) );
	print( strText1.Compare( "abc" ) );
	print( strText1.Compare( "123" ) );

	//CompareNoCase - 대소문자 구분 안 함
	print( strText1.CompareNoCase( "ABC" ) );
	print( strText1.CompareNoCase( "abc" ) );

	return 0;
}


※결과

첫 번째는 ABC == ABC 이므로 0

두 번째는 ABC < abc이므로 -1

세 번째는 ABC > 123 이므로 1

네 번째, 다섯 번째는 대소문자를 구분하지 않음으로 둘 다 0






※요약
GetLength : CString 개체의 문자열 길이를 구한다.

※특징
C언어 함수 중 strlen 함수와 비슷하다.

※함수 원형 및 설명
int GetLength( ) const;
//반환값 : 문자열의 길이


※예제

#include <atlstr.h>       //CString

#define print( nNum ) printf( "%d\n", nNum )

int main( )
{
	CString strText1;
	CString strText2;
	CString strText3;

	strText1 = "abcdef13579";
	strText2 = "12345";
	strText3 = "TestText";
	
	print( strText1.GetLength( ) );
	print( strText2.GetLength( ) );
	print( strText3.GetLength( ) );

	return 0;
}


※결과

11

5

8







※요약
Empty : CString 개체의 문자열을 비운다.
IsEmpty : CString 개체가 갖고 있는 문자열이 비어있는지 조사한다.

※특징
Empty 함수는 CString 개체의 문자열을 비우며 내부적으로 할당된 메모리를 해제한다.

※함수 원형 및 설명
void Empty( );
BOOL IsEmpty( ) const;
//반환값 : 문자열이 비어있으면 TRUE, 비어 있지 않으면 FALSE를 반환

※예제
#include <atlstr.h>       //CString

#define print( str ) printf( "%s\n", str )

int main( )
{
	CString strText;

	strText = "abcd13579";
	print( strText );

	if( strText.IsEmpty( ) != TRUE )	//strText에 문자열이 있나 확인한다.
	{
		strText.Empty( );				//strText에 문자열이 있으면 지운다.
		print( strText );
	}

	return 0;
}


※결과





※요약
CString 함수중 문자열을 뒤집는 함수 MakeReverse에 대한 내용이다.

MakeReverse : 문자열을 거꾸로 뒤집는다.

※특징
C언어 함수 중 strrev 함수와 비슷하다.


함수 원형 및 설명

void MakeReverse( );


예제

#include <atlstr.h>       //CString

#define print( str ) printf( "%s\n", str )

int main( )
{
	CString strText;

	strText = "13579";
	strText.MakeReverse( );
	print( strText );

	strText = "MFC";
	strText.MakeReverse( );
	print( strText );

	return 0;
}


※결과





Visual Studio 2013용 멀티바이트 MFC 라이브러리 다운로드 링크



Visual Studio 2012까지 지원되던 MFC 멀티바이트 라이브러리가 Visual Studio 2013 버전부터 빠지게 되었다.

2013 (12.0) 버전으로 새로 프로젝트를 만들거나, 멀티바이트로 된 이전 버전의 프로젝트를 12.0 버전으로 업그레이드 할 경우엔

Visual Studio 2013용 멀티바이트 MFC 라이브러리를 설치하면 된다.


Visual Studio 2013용 멀티바이트 MFC 라이브러리 다운로드 링크





boost란 C++ 커뮤니티 및 C++ 개발자들이 개발하고 있는 오픈 소스 라이브러리의 집합으로써, C++를 위한 멀티스레딩, 정규표현식, 의사 난수 발생, 선형대수 등을 지원하는 유용한 라이브러리 집합이다. 또한 C++ 표준에 영향을 미치기도 하며, 최신 표준인 C++11에 boost 라이브러리가 몇 가지 표준으로 채택되기도 하였다. boost는 UNIX 및 Windows 등을 포함하여 거의 모든 최신 운영체제에서 작동하며 상업 및 비상업적으로 모두 사용이 가능하다.


boost 다운로드는 http://www.boost.org/ 서 하며, 14. 06. 20일 기준 최신 버전은 1.55.0 버전이다. 1.48 버전도 같은 방법으로 빌드가 가능한 걸로 보아, 앞으로 최신버전이 나와도 비슷한 방법으로 빌드할 수 있을 거 같다.


boost를 다운 받았으면 적당한 곳에 압축을 푼다. 필자의 경우 "D:\boost_1_55_0"에 압축을 풀었다.



압축 푼 폴더를 보면 "bootstrap.bat"이라는 배치파일이 있는 데 이걸 실행시킨다.


bootstrap.bat을 실행시키면 커맨드 창에 아래와 같은 문구가 떴다가 몇 초뒤 사라진다.


커맨드 창이 사라지면 아래와 같이 "b2.exe", "bjam.exe"파일이 생성된다.


빌드는 커맨드 창에서 해야하므로 커맨드 창을 실행 시킨 뒤 boost 라이브러리 폴더가 있는 곳으로 이동한다. 필자는 위에서 "D\boost_1_55_0"에 압축을 풀었으므로 아래와 같이 이동했다.



폴더로 이동했으면 아래와 같이 명령어를 입력한다.

b2 toolset=msvc-12.0 variant=debug,release link=static threading=multi address-model=32 runtime-link=shared


볼드체로 된 항목은 환경에 따라 달라지므로 유의해서 입력해야한다. 


가령 msvc는 비주얼 스튜디오의 버전으로써 12.0은 2013버전을 뜻한다. 참고로 2017은 14.1, 2015는 140.0, 2010은 10.0, 2008은 9.0, 2005는 8.0이라고 입력하면 된다. 또 중요한게 address-model인데, 이 옵션은 컴파일 환경이 x86냐 x64냐에 따라 달라진다. 이는 윈도우 비트와는 상관없이 x86로 컴파일 하냐, x64로 컴파일하냐에 따라 달라진다. 대부분의 사람들은 x86 환경에서 컴파일 하므로 잘 모르겠으면 32로 하면 된다. 나머지는 옵션 중 "debug,release"는 "debug"나 "release"로, "shared"는 "static"으로 바꿀 수 있다.


이전 단계의 명령어를 실행하면 5~30분 정도 시간이 흐른후 아래와 같은 창이 뜬다. 2개의 경로가 나오는데,위의 경로는 헤더 파일들이 있고, 아래 경로에는 *.lib파일들이 있다. 헤더는 처음부터 있었고 라이브러리만 생성된 것이다.


필자는 비주얼 2010과 2013을 사용하므로 각각에 맞는 버전으로 컴파일 해두었다.







iPhone, iPad, iPad Mini 등의 iOS8 beta torrent 파일입니다.

목록에 없을 경우 iMZDL에 가면 더 많은 토렌트 파일이 있습니다.


초기 베타 버전이라 문제가 있을 수 있고, UDID 등록이 되어 있어야 합니다.




+ Recent posts