두 라이브러리를 사용하다보니 서로 변환할 일이 생겼다.. 그래서.. 구글 사마에게 물어보니 아래와 같은 답을 보여 주었다..

ARUint8 *dataPtr;
IplImage *image_opencv, *gray_opencv;

//ARToolkit→OpenCV
image_opencv = cvCreateImage(cvSize(arImXsize, arImYsize), IPL_DEPTH_8U, 4);
memcpy(image_opencv->imageData, dataPtr, image_opencv->imageSize);

//何らかの処理
gray_opencv = cvCreateImage(cvSize(arImXsize, arImYsize), IPL_DEPTH_8U, 1);
cvCvtColor(image_opencv, gray_opencv, CV_BGRA2GRAY);
cvAdaptiveThreshold(gray_opencv, gray_opencv, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY, 11, 10);
cvCvtColor(gray_opencv, image_opencv, CV_GRAY2BGRA);

//OpenCV→ARToolkit
dataPtr = (ARUint8*)(image_opencv->imageData);




void ARtoIpl(IplImage* ipl, ARUint8* arimg,int flag){

int width = ipl->width; //ARのImageも同じ幅とする
int height = ipl->height; //ARのImageも同じ高さとする
int ARWidthStep = width * 4;

for(int j = 0; j < height; j++)
{
 for(int i = 0; i < width; i++)
{
  t0 = ipl->widthStep * j + i * ipl->nChannels;
  t1 = ARWidthStep * j + i * 4;
  
  for(int c = 0; c <>nChannels; c++)
{
   if(flag == -1) arimg[t1 + c] = ipl->imageData[t0 + c];
   else ipl->imageData[t0 + c] = arimg[t1 + c];
  }
 }
}




  1. 시골아이 2013.01.26 15:29

    좋은 글 감사합니다

    ARUint8의 모든 내용을 파일로 옮겨서 살펴보니 4번째마다 0이 들어가 있었는데

    그 이유가 이런것이었군요...

ARToolkit + OpenVRML Setting 

다음 사이트를 참조..
http://calmarea.net/?p=167
  1. 조4 2010.08.17 22:12

    몇군데 올렸는데 아무도 답변이 없어서.. 혹시 아실까해서 올려봅니다.
    openvrml 연동에는 성공해서 애니메이션까지 잘 확인하긴했는데요.
    제가 메모장열어서 wrl 파일을 만들어서 하려니 잘안되네요.
    이를테면 아래와 같이 박스를 하나 만들고
    #VRML V2.0 utf8
    Shape {
    appearance Appearance {
    material Material { }
    }
    geometry Box {
    size 20.0 20.0 20.0
    }
    }

    이걸 wrl 로 저장한다음 실행하니..
    마커를 움직이면 마커에서 물체가 이상하게 슬라이딩 되는 현상이
    발견됩니다.
    어떻게 보정해줘야 하는거죠?
    그냥 오픈지엘에서 그린 물체들은 멀쩡하게 잘 붙어있던데..
    한번 해보세요..

+ Recent posts