1

変わりたい:

int q[10] ;
double weight[10];

for ( int i = 0; i < 10; i ++ ) 
{
    q ++ ;
    weight[i] = 10;
}

cv::Mat 形式に変換したので、次のようにしました。

cv::Mat q = cv::Mat ( 1, 10, CV_8UC3 );
cv::Mat w = cv::Mat ( 1, 10, CV_8UC3 );    

for ( int i = 0; i < 10; i ++ )
{
    uchar* p = q.ptr ( i );
    *p += 1; 
}
    weight.setTo ( 10 );

コードはエラーなしでコンパイルされますが、結果を判断するための参照がないため、変更に誤りがある可能性があるとは思えません。それとも私はここですべてをやっていますか?ありがとうございました。

4

1 に答える 1

1

int q[10]に変更されますcv::Mat q = cv::Mat(1,10,CV_32SC1);

double w[10]に変更されcv::Mat w = cv::Mat(1,10,CV_64FC1);ます。

生のポインターには次のようにアクセスできます。

int* qPtr = q.ptr<int>();

double* wPtr = w.ptr<double>();

于 2012-10-04T07:11:36.487 に答える