こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

深度画像をクラスとして定義する方法について教えて

VS C++2010を用いて、kinect for Xboxから読み取った深度画像(IplImage *SdepthImg)の
データをクラスにする方法を教えていただけないでしょうか。
以下のソース[1]として定義しております。また、深度画像をこのクラスに入れて、以下のソース[2]を用いて深度画像の3次元座標情報を入手するつもりです。


クラスの定義は

[1]
class Object
{
private:
int regionNumber;
bool isTarget;
bool isNotTarget;
int probTarget;
char objectName[128];
char objectClassName[128];

//オブジェクトだけの画像
IplImage *ObjImg;
IplImage *ObjDepthImg;
IplImage *ObjMaskImg;
IplImage *ObjDepthMaskImg;
//シーンの中での画像
IplImage *maskImg;
IplImage *depthmaskImg;
//オブジェクトの3次元点群
float *X_points;
float *Y_points;
float *Z_points;

Vector3D center3D;
Vector3D center3D_R_CORD;
Vector3D volume3D;

std::vector<int> color;
std::vector<int> material;
std::vector<float> material_likely;
//std::map<int,float> material;
std::map<int,float> shape_primitive;
float roundness;
int position[4]; //↑ ↓ → ← の順に 最寄りの物体の領域 番号 ないかも知れない

void makeMask(IplImage*,IplImage*,int);
void calcCenterPoint(IplImage*);
void makeObjImg(IplImage*,IplImage*);
・・・・・


[2]
//extract 3d points
std::vector<Vector3D> Points;
Points.clear();
for(int y=0;y<this->ObjDepthMaskImg->height;y++){
for(int x=0;x<this->ObjDepthMaskImg->width;x++){
if(((uchar)this->ObjDepthMaskImg->imageData[this->ObjDepthMaskImg->widthStep * y + x]) > 0){
float X = this->X_points[ObjDepthImg->width * y + x]/100.0f;
float Y = this->Y_points[ObjDepthImg->width * y + x]/100.0f;
float Z = this->Z_points[ObjDepthImg->width * y + x]/100.0f;
if( Z > 0 ){
Points.push_back(Vector3D(X,Y,Z));
}
}
}
}

投稿日時 - 2012-04-17 13:06:38

QNo.7425886

すぐに回答ほしいです

質問者が選んだベストアンサー

もう少し日本語と用語を正確に書いて質問してください。
何度読み返しても意味が分かりません。

投稿日時 - 2012-04-17 14:49:26

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-