一月ほど開いてしまったが、締め切りが迫ってしまい、少しお尻に火がつき始めた。
わけがあり、Intel Perceputual Computing SDK (PERC SDK)を触ることになったが、情報がいまひとつ少ない。depth imageがほしいだけなので、PERCとOpenCVのブリッジを作成し、OpenCVで処理することとした。
PERCでは、MatにあたるクラスがPXCImageとなる
ようやくRGBの変換方法がわかった。エラー処理は抜いている。
UtilPipeline pp;
PXCImage* pImage;
PXCImage::ImageData imageData;
cv::Mat matRGB = cv::Mat(cv::Size(640, 480), CV_8UC3);
pp.EnableImage(PXCImage::COLOR_FORMAT_RGB24, 640, 480);
pp.Init();
pp.AcquireFrame(true);
if (pImage->AcquireAccess(PXCImage::ACCESS_READ, PXCImage::COLOR_FORMAT_RGB24, &imageData) >= PXC_STATUS_NO_ERROR)
{
memcpy(matRGB.data, (uchar*)imageData.planes[0], 640*480*3*sizeof(uchar));
}
pp.ReleaseFrame();
これで、matRGBにカラーデータが格納される
複数からアクセスされることを想定しているため、イメージのリソースにアクセスする前に、調停を行い、アクセス権を取得しなければいけない。また、アクセス権は、短時間で開放しないといけないので、1フレーム毎に、アクセス権が必要となる。
少しめんどくさいし、アクセス権取得のオーバヘッドはどれくらいなのだろうか?
また、他のアプリは想定していないので、アクセス権が取れない場合を想定していないが、まじめに考えるとエラー処理が必要となる。
0 件のコメント:
コメントを投稿