2011/12/25
간단하게 Android App 아이콘 만들기
Android Asset Studio 사이트는 쉽고 간단하게 만들 수 있다.
아이콘은 종류별로 Launcher, Menu, Action bar, Tab, Notification icons 을 지원한다. 각각의 아이콘은 이미지와 클립아트 그리고 텍스트 형태의 아이콘을 지원한다.
Android Asset Studi
Original Post : http://neodreamer-dev.tistory.com/627
2011/12/20
Doxygen 1.7.x.x 한글 출력 문제
Doxygen 설정 중에서 DOXYFILE_ENCODING(=UTF-8) 과 OUTPUT_LANGUAGE(=English) 를 아무리 바꾸어 보아도 현상은 달라지지 않았다.
OUTPUT_LANGUAGE를 Korean으로 변경을 하면 기본적인 문자는 한글로 잘 보여지는데 코드상 작성한 문서는 한글이 깨져서 보인다.
변경하던 중 Input 항목에서 INPUT_ENCODING 이 기본 값으로 UTF-8로 설정이 되어 있는데 본인이 작업중인 소스 파일(Visual Studio)은 UTF-8 형식이 아닌 일반 ASCII 파일 이다. 그래서 이 부분을 EUC-KR로 변경을 하니 한글이 잘 출력이 되었다.
혹시나 해서 INPUT_ENCODING 항목을 CP949 로 설정을 하여도 한글 출력에 문제가 없었다.<
Original Post : http://neodreamer-dev.tistory.com/626
Eclipse 용 Doxygen 플러그 인 - eclox 사용하기
eclox 를 설치한 후 프로젝트에 doc라는 폴더를 생성한다.
프로젝트에서 마우서 오른쪽 버튼을 눌러 나오는 메뉴에서 폴더를 생성할 수 있다.
툴바의 실행 버튼과 함께 있는 Doxygen 메뉴를 선택한다.
기존의 Doxygen 설정 파일이 없을 경우 생성하는 절차를 거치게 되는데 이때 위에서 생성한 경로에 Doxygen 파일을 생성한다.
Doxygen 파일을 생성하고 툴바 메뉴를 선택하면 문서가 작성이 된다.
작성된 문서는 설정에 따라 doc 하위에 생성이 된다.
Doxygen 에 대한 설정은 만들어진 doxygen 파일을 더블클릭하면 편집기 창에서 편집할 수 있다.
<
Original Post : http://neodreamer-dev.tistory.com/625
Eclipse 용 Doxygen 플러그 인 - eclox 설치하기
설치는 Eclipse 의 Help 메뉴의 "Install New Software..." 메뉴를 통해서 할 수 있다. (Eclipse 버전은 3.7 버전을 사용하였으며 이미 Doxygen 1.7.6.1 버전을 설치한 상태이다.)
설치 대화상자에 eclox 의 Repository 주소를 입력하고 설치를 진행하면 된다.
설치 후에는 Eclipse 의 Preferences 대화 상자에 Doxygen 관련 메뉴가 추가 되고 실행 버튼 옆에 툴바 메뉴가 추가 된다.
eclox Homepage<
Original Post : http://neodreamer-dev.tistory.com/624
2011/12/10
Android Collection for Pencil
4가지로 분리하여 배포 하고 있었다. 모든 파일들을 다운 받아 수동으로 Collection을 설치하면 Pencil 1.3.2 버전에서 사용할 수 있다.
2011/12/10 - [Dev Story/Apps] - Pencil 1.3x 버전에서 Native 및 WindowsXP Collection 사용하기
http://code.google.com/p/android-ui-utils/downloads/list
<
Original Post : http://neodreamer-dev.tistory.com/623
Pencil 1.3x 버전에서 Native 및 WindowsXP Collection 사용하기
Pencil 최신 버전인 1.3.2 버전에는 기존의 몇개의 Collection 이 빠진채 배포 된다.
빠진 Collection 은 윈도우 프로그램 디자인에 필요한 GTK, Native, WindowsXP 이다. 이 Collection 들을 1.3.2 버전에서 사용할 수 있는 방법을 찾아 보았다.
우선 1.2 버전을 다운 받아 압축을 해제하고 그 안에 Pencil_1.2\app\chrome\content\Stencil 폴더에 포함되어 있는 Gtk.GUI, Native.GUI, WindowsXP-GUI 폴더를 1.3 버전의 Pencil\app\content\pencil\stencil 폴더에 복사를 한다.
그리고 Pencil\app\content\pencil\definition 경로의 collectionManager.js 파일을 편집기로 열어서 100번째 줄 쯤의 Collection 을 로드하는 부분을 확인한다.
Collection 을 로드하는 부분에 주석으로 처리된 부분의 주석을 해제하고 Pencil 을 다시 실행하면 아래의 화면 처럼 Native 와 WindowsXp 그리고 GTK collection을 볼 수 있다.
이와 같은 방법으로 다른 Collection 들을 수동으로 설치할 수 있다.
Google Code 페이지에서 다운 받은 Android Collection을 위와 같은 방법으로 설치하니 pencil 최신 버전에서 사용할 수 있었다.
아래 파일들은 1.2 버전에서 추출한 Collection 들이다.
Original Post : http://neodreamer-dev.tistory.com/622
Pencil 설치하지 않고 임의의 폴더에 압축 풀어 사용하기
프로그램을 설치하기 싫어해서 필요한 프로그램이 있을 경우 설치 없이 사용할 수 있는 방법을 찾곤 한다.
요즘 관심을 두고 있는 SW Mockup 프로그램인 Pencil을 설치 없이 사용할 수 있는 방법을 알아 보았다.
그 방법을 그리 어렵지 않다.
다운 받은 Pencil-1.3.2.win32.installer.exe 파일을 7zip 압축프로그램으로 열어서 필요한 파일을 찾는다.
압축 파일 안의 $_OUTDIR 폴더 안에 포함되어 있는 아래 파일들만 특정 폴더에 압축을 풀어 사용하면 된다.
압축을 푼 후 pencil.exe 를 실행하면 된다.
<
Original Post : http://neodreamer-dev.tistory.com/621
2011/12/08
SW GUI 목업 프로그램 Pencil
Pencil은 SW GUI를 설계할 때 아주 유용한 프로그램 이다.
현재 1.3.2 버전까지 공개가 되었는데 기본적으로 설치되는 Collection을 보면 이전 버전인 1.2 버전을 사용하는 것이 더 유용하다.
1.3.2 버전은 기본적으로 설치되는 디자인 object가 1.2 버전에 비해서 매우 한 정적이다. 1.2 버전은 XP에 대한 Object를 기본 제공하고 있다.
1.2버전이나 1.3.2 버전 모두 추가 Collection 설치가 원활하지 않아 추가 Collection 사용이 어렵다. 방법을 찾아 보려하는데 쉽지가 않다.
Pencil 1.3.2
Pencil 1.2
Pencil Project 홈페이지에서는 1.3.2 버전만 다운로드 받을 수 있는데 Google Code의 Pencil Project 사이트를 방문하면 1.2 버전도 받을 수 있다.
Pencil Project
Pencil Project on Google Cod
Original Post : http://neodreamer-dev.tistory.com/620
2011/11/21
[OpenCV] Linear Least Square calculation using OpenCV
OpenCV를 이용한 Linear Least Square 를 계산하는 방법에 대한 글이다. 이 내용은 Fitting 을 하기 위해 중요한 것으로 기록 차원에서 발췌해 두었다. 역시 실제 참고는 원문을 이용하기 바란다.
내용보기
Least Square method is an important tool for fitting either a plane or surface.This article will explain briefly on how we can use OpenCV for performing Linear Least Square for solving simultaneous equation. This technique can be applied for line or surface fitting.
As an example, an equation: Z = alpha * X + beta + h * delta, which has three unknown variables alpha, beta and h. The known variables are Z, X, and delta.
We have to create a matrix for the known variables according to the number of available data.
CvMat * matZ = cvCreateMat((dataLength), 1, CV_32FC1);
CvMat * matX = cvCreateMat((dataLength), 3, CV_32FC1);
CvMat * matRes = cvCreateMat(3, 1, CV_32FC1);
Then the data can be put into the matrix, assume that the data for Z are obtained from an array data:
//fill data
for(int i=0;i<dataLength;i++)
{
cvmSet(matZ, i, 0, data[i]);
cvmSet(matX, i, 0, (i*OBJSCALE));
cvmSet(matX, i, 1, 1);
cvmSet(matX, i, 2, 1);
}
after that, call the least square solver using CvSolve and if nothing is wrong with the data, the result can be directly accessed by accessing the matRes matrix
cvSolve(matX, matZ, matRes, CV_SVD);
double h = cvmGet(matRes, 2, 0);
double beta = cvmGet(matRes, 1, 0);
double alpha = cvmGet(matRes, 0, 0);
Finally, clean the memory of the matrices:
cvReleaseMat(&matZ);
cvReleaseMat(&matX);
cvReleaseMat(&matRes);
That's it. Hope it helps :)
(the source code is formatted using http://formatmysourcecode.blogspot.com/, nice stuff!)
<
Original Post : http://neodreamer-dev.tistory.com/619
[OpenCV] Plane Fitting using OpenCV
OpenCV를 이용한 Plane Fitting 방법을 소개한 글을 찾아서 기록차원에서 일부를 발췌하였다. 아래는 기록용으로 발췌하여 기록한 것이므로 참고는 위 링크의 원문을 참고하기 바란다.
내용 일부 보기
As what I've promised, I'm going to write about plane fitting using OpenCV. It's quite straight away and quite similar to my previous post, the difference is only about the physical representation of the variables in the equations. This time it's only a plane fitting, so it's a linear least square fitting. Later I would like to explore non-linear fitting as well and share it here when I have made it.
Let's say that we have a set of data that represents a plane in 3D coordinate X-Y-Z and modeled as Axi + Byi + C = zi. where i is the enumerator of the data (0~n).
Using the same approach, we can use matrix to represent the simultaneous equation and solve it.I will directly show you how.
1. prepare the matrices for the data.
CvMat *res = cvCreateMat(3, 1, CV_32FC1);
CvMat *matX = cvCreateMat(10000, 3, CV_32FC1);
CvMat *matZ = cvCreateMat(10000, 1, CV_32FC1);
2. input the data into the matrices.
for(int row=0;row<100;row++)
{
for(int col=0;col<100;col++)
{
int idx = row * col;
double val = cvmGet(filteredMat, row, col);
cvmSet(matX, idx, 0, col*pixScale);
cvmSet(matX, idx, 1, row*pixScale);
cvmSet(matX, idx, 2, 1);
cvmSet(matZ, idx, 0, val);
}
}
3. solve the equation
cvSolve(matX, matZ, res, CV_SVD);
A = cvmGet(res, 0, 0);
B = cvmGet(res, 1, 0);
C = cvmGet(res, 2, 0);
4. calculate the distance between the plane and the real data.
double sqrtc = sqrt(pow(A, 2) + pow(B, 2) + pow(C, 2));
float min = 100;
float max = -100;
// plane generation, Z = Ax + By + C
// distance calculation d = Ax + By - z + C / sqrt(A^2 + B^2 + C^2)
// pointlist generation
for(int row=0;row<filteredMat->rows;row++)
{
for(int col=0;col<filteredMat->cols;col++)
{
double Zval = cvmGet(filteredMat, row, col);
double val = col*pixScale*A + row*pixScale*B - Zval + C;
double distance = val / sqrtc;
if(min > distance)
min = distance;
if(max < distance)
max = distance;
cvmSet(planeMat, row, col, distance);
}
}
Original Post : http://neodreamer-dev.tistory.com/618
[OpenCV] cvFitLine 사용하기
FitLine
Fits line to 2D or 3D point set
void cvFitLine( const CvArr* points, int dist_type, double param,
double reps, double aeps, float* line );
points
Sequence or array of 2D or 3D points with 32-bit integer or floating-point coordinates.
dist_type
The distance used for fitting (see the discussion).
param
Numerical parameter (C) for some types of distances, if 0 then some optimal value is chosen.
reps, aeps
Sufficient accuracy for radius (distance between the coordinate origin and the line) and angle, respectively, 0.01 would be a good defaults for both.
line
The output line parameters. In case of 2d fitting it is array of 4 floats (vx, vy, x0, y0) where (vx, vy) is a normalized vector collinear to the line and (x0, y0) is some point on the line. In case of 3D fitting it is array of 6 floats (vx, vy, vz, x0, y0, z0) where (vx, vy, vz) is a normalized vector collinear to the line and (x0, y0, z0) is some point on the line.
The function cvFitLine fits line to 2D or 3D point set by minimizing sumiρ(ri), where ri is distance between i-th point and the line and ρ(r) is a distance function, one of:
dist_type=CV_DIST_L2 (L2):
ρ(r)=r2/2 (the simplest and the fastest least-squares method)
dist_type=CV_DIST_L1 (L1):
ρ(r)=r
dist_type=CV_DIST_L12 (L1-L2):
ρ(r)=2?[sqrt(1+r2/2) - 1]
dist_type=CV_DIST_FAIR (Fair):
ρ(r)=C2?[r/C - log(1 + r/C)], C=1.3998
dist_type=CV_DIST_WELSCH (Welsch):
ρ(r)=C2/2?[1 - exp(-(r/C)2)], C=2.9846
dist_type=CV_DIST_HUBER (Huber):
ρ(r)= r2/2, if r < C
C?(r-C/2), otherwise; C=1.345
하지만 문서상 어디에도 어떻게 사용하는지 설명이 되어 있지 않다.
인터넷에서 찾아 아래와 같은 결론에 이르렀다.
int nStart = (ptStart.y < ptEnd.y)? ptStart.y: ptEnd.y;
int nEnd = (ptStart.y > ptEnd.y)? ptStart.y: ptEnd.y;
int nCount = 0;
for ( int row = nStart; row < nEnd; ++row )
{
CvPoint2D32f p;
p.x = (float)nCount++;
p.y = m_pfData[ row * nWidth + ptStart.x ];
cvSeqPush( seq, &p );
TRACE("%.6f\n", p.y);
}
float fLine[4];
cvFitLine( seq, CV_DIST_L1, 1, 0.01, 0.01, fLine );
TRACE("Line > %.6f, %.6f, %.6f, %.6f\n",fLine[0] ,fLine[1],fLine[2],fLine[3]);
float fSlope = fLine[1] / fLine[0];
float fIntercept = fLine[3] - fSlope * fLine[2];
위 코드는 cvFitLine 을 사용한 일부분이다.
2D 데이터에 의한 Fitting을 하기 위해 32비트 Float 형식의 CvPoint2D32f 를 사용하였다.
데이터를 저장하기위한 메모리를 만들고 (cvCreateMemStorage) 시퀀스를 생성하였다. 그리고 Fitting에 필요한 데이터를 시퀀스에 담는다.
두 번째 인자는 Fitting 방법으로 거리 계산 방법인데 이에 대한 자세한 것은 아직 모르겠다. 세 번째는 두 번째 인자에서 지정한 거리 계산방법에 사용할 상수를 정하는 것으로 몇몇 거리계산 방법에는 적용되지 않는 것으로 보인다. 네 번째와 다섯 번째는 직선을 구하는 정확도를 의미하며 OpenCV 문서에서는 0.01로 지정하도록 권장하고 있다.
함수의 결과는 2D Fitting의 경우 결과 값으로 4개의 float 데이터가 반환된다.
두 개 단위로 값이 의미를 갖는데 첫 번째 두 개는 직선과 평행한 정규화된 벡터이고 다음 두 개는 이 벡터의 연장선상에 존재하는 한 점의 좌표를 의미한다.
3D Fitting에 대해서는 좀 더 공부를 해 봐야겠다.<
Original Post : http://neodreamer-dev.tistory.com/617
2011/11/16
Khronos Releases OpenCL 1.2 Specification
멀티 프로세싱쪽에 관심을 두고 있는데 짬이 없어 머뭇거리는 사이 OpenCL 1.2 버전이 공개 되었다.
OpenCL 의 경우 GPU까지 활용할 수 있어 OpenMP 보다 좋은 성능을 보여줄 것 같은데 아직 이렇다할 진행을 하지 못하고 있다.
틈틈히 관련 정보를 봐 두어야겠다.
OpenCL
OpenCL 1.2 Specification
OpenCL 1.2 Quick Reference&
Original Post : http://neodreamer-dev.tistory.com/616
2011/11/14
2011/11/10
Google Reader 를 위한 Firefox Add-ons - Google Reader Plus
오랜만에 Firefox 를 사용해 보았다.
브라우징 속도는 많이 빨라진 것 같은데 아직 Chrome 속도는 못 따라 오는 것 같았다.
Firefox로 Google Reader 보는데 Chrome의 확장 기능인 Super Full Feeds for Google Reader™에 익숙해져 Reader 에서 모든 내용을 보는게 편했다. 그래서 Firefox에 그러한 기능을 하는 Add-on이 있는지 찾아 보았다.
걸려든 녀석은 바로 Google Reader Plus 이다.
전체 글을 볼 수 있는 기능 외에도 많은 기능을 지원하고 있다. 아래 슬라이드는 Google Reader Plus의 설정 창이다.
내가 찾던 Reader 에서 모든 글을 보는 기능은 콤보박스 형태와 키보드 단축키를 이용하여 지원하고 있다.
콤보박스 메뉴 해당 글의 타이틀 우측에 표시하며 전체글과 IFrame을 이용한 블로그 전체보기 기능을 지원한다.
Google Reader Plus for Firefox<
Original Post : http://neodreamer-dev.tistory.com/614
2011/11/09
Visual C++ 2005 에서 OpenCV 2.3.1 버전 사용하기
2005에서 사용을 하려면 Visual C++ 2008 버전을 사용하거나 2005 버전으로 직접 컴파일 해야 한다.
직접 컴파일 하는 방법은 어렵지 않으며 아래 글을 참고하여 만들면 된다.
2010/10/17 - [Dev Story] - OpenCV 2.1 + TBB 를 Visual Studio 2010 에서 컴파일하기
먼저 OpenCV 2.3.1 버전을 테스트하기 위해 MFC Dialog 기반 프로젝트를 만들고 프로젝트 폴더에 OpenCV 2.3.1 패키지 않에 포함되어 있는 include 폴더(\build\include)와 직접 만든 lib 파일 또는 패키지 안에 있는 Visual C++ 2008 버전 용 라이브러리 파일(\build\x86\vc9\lib)들을 Project의 opencv 폴더에 복사해 아래 이미지와 같은 구조로 만들 었다.
마지막으로 프로젝트 루트 폴더에 패키지에 포함되어 있는 (\build\x86\vc9\bin) DLL 파일 이나 직접 만든 DLL 파일들을 복사해 둔다.
opencv_calib3d231.dll
opencv_contrib231.dll
opencv_core231.dll
opencv_features2d231.dll
opencv_ffmpeg.dll
opencv_flann231.dll
opencv_gpu231.dll
opencv_highgui231.dll
opencv_imgproc231.dll
opencv_legacy231.dll
opencv_ml231.dll
opencv_objdetect231.dll
opencv_ts231.dll
opencv_video231.dll
윈도우 시스템 경로에 두는 것도 한 방법이지만 프로그램을 배포하거나 프로젝트를 이리저리 옮기는 겨우 다시 복사를 해야하는 불편함이 있는 기본적으로 프로젝트 경로에 두고 사용한다.
디버그용 라이브러리와 DLL을 사용할 경우 메모리 누수 문제가 있어 테스트 프로젝트에는 릴리즈용만 사용하였다.
Debug 모드와 Release 모두 동일하게 아래와 같이 설정을 한다.
먼저 추가 포함 디릭토리에 프로젝트 하위로 복사한 include 폴더(.\opencv\include)를 지정한다.
그리고 링커 메뉴에서 추가 포함 라이브러리 폴더 역시 라이브러리를 복사해 둔 경로(.\opencv\lib)를 지정한다.
그리고 추가 라이브러리 파일 목록에 아래 파일들을 입력 한다.
opencv_calib3d231.lib
opencv_contrib231.lib
opencv_core231.lib
opencv_features2d231.lib
opencv_flann231.lib
opencv_gpu231.lib
opencv_haartraining_engine.lib
opencv_highgui231.lib
opencv_imgproc231.lib
opencv_legacy231.lib
opencv_ml231.lib
opencv_objdetect231.lib
opencv_ts231.lib
opencv_video231.lib
처음부터 모든 파일이 필요한 것은 아니고 필요한 기능에 따라 사용하지 않는 파일들도 있지만 모든 기능을 테스트해 보기 위해서는 모두 입력을 해 두는 것이 좋을 것 같다.
프로젝트 설정은 모두 끝났고 아래 코드는 간단하게 OpenCV 2.3.1 버전을 사용하는 예이다.
// stdafx.h
// For OpenCV
#include "opencv/cv.h"
#include "opencv/highgui.h"
void COpenCV231TestDlg::OnBnClickedButtonLoadImage()
{
CFileDialog dlgFile(TRUE);
if ( dlgFile.DoModal() == IDOK )
{
CStringA strFile = CStringA(dlgFile.GetPathName());
IplImage* pIplImage = cvLoadImage( strFile );
cvNamedWindow( "Image" );
cvShowImage( "Image", pIplImage );
cvReleaseImage( &pIplImage );
}
}
프로젝트를 실행하고 메인 다이얼로그의 버튼을 누르면 이미지 선택 대화상자가 활성화 되고 이미지를 선택하면 화면에 보여준다.
Original Post : http://neodreamer-dev.tistory.com/613
2011/11/03
OpenCV 2.x Memory Leak 문제
2.2버전을 사용할 때에도 메모리 누수 문제가 발생하였는데 2.3.1버전에서도 여전히 문제가 발생하였다.
메모리 누수 로그 더보기
The thread 'Win32 Thread' (0xce0) has exited with code 2 (0x2).
Detected memory leaks!
Dumping objects ->
{251} normal block at 0x020DF158, 47 bytes long.
Data: <JPEG-2000 Code S> 4A 50 45 47 2D 32 30 30 30 20 43 6F 64 65 20 53
{250} normal block at 0x020D8570, 4 bytes long.
Data: <jpc > 6A 70 63 00
{249} normal block at 0x020D8700, 4 bytes long.
Data: <jpc > 6A 70 63 00
{248} normal block at 0x020D97D8, 51 bytes long.
Data: <JPEG-2000 JP2 Fi> 4A 50 45 47 2D 32 30 30 30 20 4A 50 32 20 46 69
{247} normal block at 0x020D8278, 4 bytes long.
Data: <jp2 > 6A 70 32 00
{246} normal block at 0x020D8400, 4 bytes long.
Data: <jp2 > 6A 70 32 00
{245} normal block at 0x020DF0E0, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{244} normal block at 0x020DED28, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{243} normal block at 0x020DECB0, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{242} normal block at 0x020DE8F8, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{241} normal block at 0x020DE880, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{240} normal block at 0x020DE4C8, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{239} normal block at 0x020DE450, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{238} normal block at 0x020DE098, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{237} normal block at 0x020DE020, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{236} normal block at 0x020DDC68, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{235} normal block at 0x020DDBF0, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{234} normal block at 0x020DD838, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{233} normal block at 0x020DD7C0, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{232} normal block at 0x020DD408, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{231} normal block at 0x020DD390, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{230} normal block at 0x020DCFD8, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{229} normal block at 0x020DCF60, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{228} normal block at 0x020DCBA8, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{227} normal block at 0x020DCB30, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{226} normal block at 0x020DC778, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{225} normal block at 0x020DC700, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{224} normal block at 0x020DC348, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{223} normal block at 0x020DC2D0, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{222} normal block at 0x020DBF18, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{221} normal block at 0x020DBEA0, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{220} normal block at 0x020DBAE8, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{219} normal block at 0x020DBA70, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{218} normal block at 0x020DB6B8, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{217} normal block at 0x020DB640, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{216} normal block at 0x020DB288, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{215} normal block at 0x020DB210, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{214} normal block at 0x020DAE58, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{213} normal block at 0x020DADE0, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{212} normal block at 0x020DAA28, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{211} normal block at 0x020DA9B0, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{210} normal block at 0x020DA5F8, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{209} normal block at 0x020DA580, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{208} normal block at 0x020DA1C8, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{207} normal block at 0x020DA150, 56 bytes long.
Data: <L } > 4C A3 7D 00 00 00 00 00 00 00 00 00 CD CD CD CD
{206} normal block at 0x020D9D98, 892 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{205} normal block at 0x020D9D10, 72 bytes long.
Data: < > C0 82 0D 02 B0 83 0D 02 C0 85 0D 02 B0 86 0D 02
{204} normal block at 0x020D9CB8, 24 bytes long.
Data: < > CD CD CD CD B8 9C 0D 02 01 00 00 00 CD CD CD CD
{203} normal block at 0x020D9688, 32 bytes long.
Data: <JPEG-2000 files > 4A 50 45 47 2D 32 30 30 30 20 66 69 6C 65 73 20
{202} normal block at 0x020D9C30, 76 bytes long.
Data: < } > 18 AE 7D 00 00 00 00 00 CD CD CD CD 88 96 0D 02
{201} normal block at 0x020D9BA8, 72 bytes long.
Data: < } 0 H > 20 7D 0D 02 30 82 0D 02 48 84 0D 02 20 85 0D 02
{200} normal block at 0x020D9B50, 24 bytes long.
Data: < P > CD CD CD CD CD CD CD CD CD CD CD CD 50 9B 0D 02
{199} normal block at 0x020D9A80, 148 bytes long.
Data: < } > BC AD 7D 00 00 00 00 00 00 00 00 00 FF FF FF FF
{198} normal block at 0x020D9A28, 24 bytes long.
Data: < ( > CD CD CD CD 28 9A 0D 02 01 00 00 00 CD CD CD CD
{197} normal block at 0x020D99B8, 48 bytes long.
Data: <Portable Network> 50 6F 72 74 61 62 6C 65 20 4E 65 74 77 6F 72 6B
{196} normal block at 0x020D9930, 76 bytes long.
Data: < } > CC AF 7D 00 00 00 00 00 CD CD CD CD B8 99 0D 02
{195} normal block at 0x020D9558, 24 bytes long.
Data: < X > CD CD CD CD 58 95 0D 02 01 00 00 00 CD CD CD CD
{194} normal block at 0x020D9848, 168 bytes long.
Data: <t } > 74 AF 7D 00 00 00 00 00 00 00 00 00 FF FF FF FF
{192} normal block at 0x020D9780, 24 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD 80 97 0D 02
{191} normal block at 0x020D93F0, 32 bytes long.
Data: <TIFF Files (*.ti> 54 49 46 46 20 46 69 6C 65 73 20 28 2A 2E 74 69
{190} normal block at 0x020D96F8, 76 bytes long.
Data: << } > 3C B5 7D 00 00 00 00 00 CD CD CD CD F0 93 0D 02
{188} normal block at 0x020D8E40, 24 bytes long.
Data: < @ > CD CD CD CD CD CD CD CD CD CD CD CD 40 8E 0D 02
{187} normal block at 0x020D95B8, 144 bytes long.
Data: < } > 0C B5 7D 00 00 00 00 00 00 00 00 00 FF FF FF FF
{185} normal block at 0x020D8CA8, 24 bytes long.
Data: < > CD CD CD CD A8 8C 0D 02 01 00 00 00 CD CD CD CD
{184} normal block at 0x020D94D8, 64 bytes long.
Data: <Portable image f> 50 6F 72 74 61 62 6C 65 20 69 6D 61 67 65 20 66
{183} normal block at 0x020D9450, 76 bytes long.
Data: <P } > 50 B1 7D 00 00 00 00 00 CD CD CD CD D8 94 0D 02
{181} normal block at 0x020D9398, 24 bytes long.
Data: < > CD CD CD CD 98 93 0D 02 01 00 00 00 CD CD CD CD
{180} normal block at 0x020D8E98, 1216 bytes long.
Data: < } > 20 B1 7D 00 00 00 00 00 00 00 00 00 FF FF FF FF
{178} normal block at 0x020D8DE8, 24 bytes long.
Data: < > CD CD CD CD E8 8D 0D 02 01 00 00 00 CD CD CD CD
{177} normal block at 0x020D8D88, 32 bytes long.
Data: <Sun raster files> 53 75 6E 20 72 61 73 74 65 72 20 66 69 6C 65 73
{176} normal block at 0x020D8D00, 76 bytes long.
Data: < } > A0 B4 7D 00 00 00 00 00 CD CD CD CD 88 8D 0D 02
{174} normal block at 0x020D8C50, 24 bytes long.
Data: < P > CD CD CD CD CD CD CD CD CD CD CD CD 50 8C 0D 02
{173} normal block at 0x020D8750, 1220 bytes long.
Data: <p } > 70 B4 7D 00 00 00 00 00 00 00 00 00 FF FF FF FF
{171} normal block at 0x020D86A8, 24 bytes long.
Data: < > CD CD CD CD A8 86 0D 02 01 00 00 00 CD CD CD CD
{170} normal block at 0x020D8648, 32 bytes long.
Data: <JPEG files (*.jp> 4A 50 45 47 20 66 69 6C 65 73 20 28 2A 2E 6A 70
{169} normal block at 0x020D85C0, 76 bytes long.
Data: < } H > 0C AC 7D 00 00 00 00 00 CD CD CD CD 48 86 0D 02
{167} normal block at 0x020D8518, 24 bytes long.
Data: < > CD CD CD CD 18 85 0D 02 01 00 00 00 CD CD CD CD
{166} normal block at 0x020D8448, 148 bytes long.
Data: < } > DC AB 7D 00 00 00 00 00 00 00 00 00 FF FF FF FF
{164} normal block at 0x020D83A8, 24 bytes long.
Data: < > CD CD CD CD A8 83 0D 02 01 00 00 00 CD CD CD CD
{163} normal block at 0x020D8348, 32 bytes long.
Data: <Windows bitmap (> 57 69 6E 64 6F 77 73 20 62 69 74 6D 61 70 20 28
{162} normal block at 0x020D82C0, 76 bytes long.
Data: < } H > 80 AB 7D 00 00 00 00 00 CD CD CD CD 48 83 0D 02
{160} normal block at 0x020D8220, 24 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD 20 82 0D 02
{159} normal block at 0x020D7D20, 1216 bytes long.
Data: <P } > 50 AB 7D 00 00 00 00 00 00 00 00 00 FF FF FF FF
{157} normal block at 0x020D7C00, 29 bytes long.
Data: < | | > 00 00 00 00 10 7C 0D 02 17 7C 0D 02 00 00 00 00
{156} normal block at 0x020D7B88, 57 bytes long.
Data: < ( { > 00 00 00 00 28 00 00 00 00 00 00 00 10 7B 0D 02
{155} normal block at 0x020D7B10, 54 bytes long.
Data: < ( { z > 00 00 00 00 28 00 00 00 88 7B 0D 02 98 7A 0D 02
{154} normal block at 0x020D7A98, 53 bytes long.
Data: < ( { z > 00 00 00 00 28 00 00 00 10 7B 0D 02 18 7A 0D 02
{153} normal block at 0x020D7A18, 61 bytes long.
Data: < ( z y > 00 00 00 00 28 00 00 00 98 7A 0D 02 A0 79 0D 02
{152} normal block at 0x020D79A0, 53 bytes long.
Data: < ( z y > 00 00 00 00 28 00 00 00 18 7A 0D 02 20 79 0D 02
{151} normal block at 0x020D7920, 61 bytes long.
Data: < ( y x > 00 00 00 00 28 00 00 00 A0 79 0D 02 A8 78 0D 02
{150} normal block at 0x020D78A8, 56 bytes long.
Data: < ( y > 00 00 00 00 28 00 00 00 20 79 0D 02 00 00 00 00
{144} client block at 0x020D6610, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $020D6610, 64 bytes long
a CDynLinkLibrary object at $020D6610, 64 bytes long
Object dump complete.
원인은 MFC 라이브러리가 로드 되기전에 OpenCV core 라이브러리가 로드되어서 발생하는 문제로 OpenCV의 core 프로젝트 설정에서 use MFC 를 Shared DLL로 설정하고 System.cpp 파일에 아래 내용을 추가해 주면 해결 된다고 한다.(http://tech.groups.yahoo.com/group/OpenCV/message/78198)
#ifdef _DEBUG
// required for including afh.h
#undef _WINDOWS_
#include <afx.h>
// Force linking to MFC.
static BOOL unused = afxTraceEnabled;
#endif
하지만 2.3.1 버전에서는 통하지 않는 것으로 보인다.
이 문제는 프로젝트의 MFC 사용 설정을 Static 으로 설정하면 되지만 기존의 프로젝트가 Static으로 설정할 수 없는 경우는 소용이 없다.
현재로서는 Release 용 lib와 dll을 사용하거나 무시하는 방법 밖에 없어 보인다. 실제 배포하는 파일을 이용해도 동일한 현상이 발생하는데 왜 수정되지 않는지
Original Post : http://neodreamer-dev.tistory.com/612
2011/11/02
넌 누구냐! -1.#IND00
NaN 은 Not a Number의 약자이고 연산의 결과값이 불명확한 경우 -1.#IND00 또는 1.#IND00 가 발생한다.
IND는 indeterminate의 약자이다.
NaN을 유도하려면 sqrt(-1.0) log(-1.0)를 수행하면 된다.
참고로 1.#INF00 의 경우 overflow가 발생하는 경우이다. (inf는 infinite로 유추된다.)
Original Post : http://neodreamer-dev.tistory.com/611
SQLite 3.7.9 Release (include Library)
- If a search token (on the right-hand side of the MATCH operator) in FTS4 begins with "^" then that token must be the first in its field of the document. ** Potentially Incompatible Change **
- Added options SQLITE_DBSTATUS_CACHE_HIT and SQLITE_DBSTATUS_CACHE_MISS to the sqlite3_db_status() interface.
- Removed support for SQLITE_ENABLE_STAT2, replacing it with the much more capable SQLITE_ENABLE_STAT3 option.
- Enhancements to the sqlite3_analyzer utility program, including the --pageinfo and --stats options and support for multiplexed databases.
- Enhance the sqlite3_data_count() interface so that it can be used to determine if SQLITE_DONE has been seen on the prepared statement.
- Added the SQLITE_FCNTL_OVERWRITE file-control by which the SQLite core indicates to the VFS that the current transaction will overwrite the entire database file.
- Increase the default lookaside memory allocator allocation size from 100 to 128 bytes.
- Enhanced the query planner so that it can factor terms in and out of OR expressions in the WHERE clause in an effort to find better indices.
- Added the SQLITE_DIRECT_OVERFLOW_READ compile-time option, causing overflow pages to be read directly from the database file, bypassing the page cache.
- Remove limits on the magnitude of precision and width value in the format specifiers of the sqlite3_mprintf() family of string rendering routines.
- Fix a bug that prevent ALTER TABLE ... RENAME from working on some virtual tables in a database with a UTF16 encoding.
- Fix a bug in ASCII-to-float conversion that causes slow performance and incorrect results when converting numbers with ridiculously large exponents.
- Fix a bug that causes incorrect results in aggregate queries that use multiple aggregate functions whose arguments contain complicated expressions that differ only in the case of string literals contained within those expressions.
- Fix a bug that prevented the page_count and quick_check pragmas from working correctly if their names were capitalized.
- Fix a bug that caused VACUUM to fail if the count_changes pragma was engaged.
- Fix a bug in virtual table implementation that causes a crash if an FTS4 table is dropped inside a transaction and a SAVEPOINT occurs afterwards.
SQLITE_SOURCE_ID: "2011-11-01 00:52:41 c7c6050ef060877ebe77b41d959e9df13f8c9b5e"
SHA1 for sqlite3.c: becd16877f4f9b281b91c97e106089497d71bb47
SQLite website
<
Original Post : http://neodreamer-dev.tistory.com/610