#include <highgui.h>
#include <cv.h>
int main(int argc, char *argv[]) {
IplImage *inHandImage = cvLoadImage("indoor-hand.jpg");
IplImage *outHandImage = cvLoadImage("outdoor-hand.jpg");
int bins[] = { 128, 128, 128 };
CvHistogram *inHandHisto = NULL, *outHandHisto = NULL;
{
float rRange[] = { 0,255 }, gRange[] = { 0,255 }, bRange[] = { 0,255 };
float *ranges[] = { rRange, gRange, bRange };
inHandHisto = cvCreateHist(
3, bins, CV_HIST_ARRAY, ranges);
outHandHisto = cvCreateHist(
3, bins, CV_HIST_ARRAY, ranges);
}
IplImage *inHand_splited[3] = { NULL, };
IplImage *outHand_splited[3] = { NULL, };
for (int i = 0, len = sizeof(inHand_splited) / sizeof(inHand_splited[0]); i < len; i++) {
inHand_splited[i] = cvCreateImage(
cvGetSize(inHandImage), IPL_DEPTH_8U, 1);
outHand_splited[i] = cvCreateImage(
cvGetSize(outHandImage), IPL_DEPTH_8U, 1);
}
cvSplit(inHandImage, inHand_splited[0], inHand_splited[1], inHand_splited[2], NULL);
cvSplit(outHandImage, outHand_splited[0], outHand_splited[1], outHand_splited[2], NULL);
cvCalcHist(inHand_splited, inHandHisto);
cvCalcHist(outHand_splited, outHandHisto);
cvThreshHist(inHandHisto, 1500);
cvThreshHist(outHandHisto, 20);
CvSize patchSize = cvSize(10, 10);
IplImage *inhandResult = cvCreateImage(
cvSize(inHandImage->width - patchSize.width + 1, inHandImage->height - patchSize.height + 1), IPL_DEPTH_32F, 1);
IplImage *outhandResult = cvCreateImage(
cvSize(outHandImage->width - patchSize.width + 1, outHandImage->height - patchSize.height + 1), IPL_DEPTH_32F, 1);
CvMat *inhandResult2 = cvCreateMat(outHandImage->height - patchSize.height + 1, outHandImage->width - patchSize.width + 1, CV_32FC1);
cvCalcBackProjectPatch(outHand_splited, outhandResult, patchSize, inHandHisto, CV_COMP_CORREL, 1);
cvNamedWindow("R1", 1);
cvNamedWindow("R2", 1);
cvShowImage("R1", outhandResult);
cvShowImage("R2", inhandResult);
cvWaitKey(0);
}
원래 이렇게 질문은 잘 안드리는데..ㅜㅜ 어디다가 물어볼 곳이 없어 질문드립니다.
위에 cvCalcBackProjectPatch( ~ )를 실행하게 되면 아무리 기다려도 함수가 끝나지를 않습니다.
내부적으로 수행이 어떻게 되는지를 모르니 왜 안끝나는지 알 방법이 없기도 하구요..
위 코드는 위 주석의 문제처럼
손 색상에 대한 RGB를 히스토그램으로 만들어 실외에서 촬영한 손에 패치기반 백투영 하는 소스입니다.
혹시 제가 백투영을 하기 전에 잘못된 부분이 있나 싶어서 질문드렸습니다..
아까부터 계속 씨름해서 머리에 당이 떨어졌는지 집중이 안되서 .. 질문드립니다 ㅜㅜ
런타임이나 컴파일 상 오류는 없는 상태입니다.
(메모리 할당을 해제해 주는 코드는 귀찮아서 적지 않았습니다.. 하도 치다보니까 한줄 한줄 귀찮더라구요)
원래 저 함수의 속도가 이렇게 느린지..
부탁드립니다 ㅜㅜ