0

私は現在、OpenCv を使用した Intel Perceptual カメラに取り組んでいます。カメラから画像を取得して cv::Mat 型に変換し、スキンと深度フィルターを適用します。
ここで、openCV の「convexHull」関数を使用して凸包を計算したいのですが、ヒープが破損します。

コードの興味深い部分は次のとおりです。

Mat skin = curr.GetSkin() 
vector<Point> points;


for(int i=0; i<skin.rows; i++)
{
    for(int j=0; j<skin.cols; j++)
    {

            if ((int) skin.at<unsigned char>(i,j) > 0 )
            {
                Point pt ;
                pt.x = j ;
                pt.y = i ;
                points.push_back(pt);

            }
        }
    } 
    Mat img(skin.rows, skin.cols, CV_8UC3);
    vector<int> hull;

    convexHull(Mat(points), hull, true);

skin は、255 と 0 の値で満たされたマトリックスです。

NB : これはループ内にあります。
なにか提案を ?

PS:PCLを使用して同じ問題が発生しました:法線を計算しようとするとすぐに、ヒープの破損が発生しました。

4

2 に答える 2

0

同じ問題があります。ベクターハルが破壊されたときにメモリ破損が発生しました。

 vector<int>* hull = new  vector<int>();
 convexHull(Mat(points), *hull, true);
 delete hull; //memory corrupted

ハルが最初にサイズを調整すると、この問題は解決します

vector<int> hull;
hull.resize(points.size());
convexHull(Mat(points), hull, true);
于 2015-02-25T01:07:33.303 に答える