2013-03-01 2 views
1

카메라에서 이전에 알려진 장면을 인식 할 때마다 사용해야하는 일련의 마스크 이미지가 있습니다. 모든 마스크 이미지는 IplImage 형식입니다. 예를 들어 카메라가 조금 다른 위치로 이동 한 경우가 있습니다. 즉, 현재 장면의 중간에있는 템플리트와 일치하는 템플리트를 만들면이 장면에서 템플리트가 어느 정도 이동 된 장면을 인식 할 수 있습니다. 내가해야 할 일은 마스크 매치 ROI를 조정하기 위해 그 이동을 사용하여 템플릿 매칭을 기반으로 적절하게 오버레이 될 수 있도록하는 것입니다. 내가/작물을 설정 내 이미지를 uncrop하는 데 사용할 수있는IplImage의 일부를 다른 Iplimage로 복사 (동일한 크기의 것이 소스 임)

cvSetImageROI(Iplimage* img, CvRect roi) 
cvResetImageROI(IplImage* img); 

: I는 다음과 같은 기능이 있다는 것을 알고있다. 그러나, 내가 예상했던대로 그만 두지 않았다. 누군가가 대안을 제안 할 수 있는지 또는 내가 잘못하고있는 것을 제안 할 수 있는지 또는 내가 생각하지 않은 것을 정말로 감사 할 것입니다.

** 나는 항상 이미지 크기를 동일하게 유지해야한다고 지적해야합니다. 다른 점은 이미지의 실제 관심 영역뿐입니다. 아마 제로/패딩을 사용하여 미사용 영역을 커버 할 수 있습니다. (332)에 약 1 밀리 실행 (

// Make a new IplImage 
IplImage* img_src_cpy = cvCreateImage(cvGetSize(img_src), img_src->depth, img_src->nChannels); 

// Crop Original Image without changing the ROI 
for(int rows = roi.y; rows < roi.height; rows++) { 
    for(int cols = roi.x; rows < roi.width; cols++) {   
     img_src_cpy->imageData[(rows-roi.y)*img_src_cpy->widthStep + (cols-roi.x)] = img_src[rows*img_src + cols]; 
    } 
{ 

//Now copy everything to the original image OR simply return the new image if calling from a function 
cvCopy(img_src_cpy, img_src); // OR return img_src_cpy; 

내가 자체에 밖으로 코드를 시도하고 나를 위해 충분히 빨리도 :

답변

0

나는 원본 이미지의 너무 많은 복사본을 만들지 않고 해결 될 것이라고 생각 x 332 그레이 스케일 이미지)