1

OpenCVfitLine()関数を使用しています。

次の例外がスローされることがあります。

..\opencv\modules\core\src\matrix.cpp:1219: error: (-215) 
dims == 2 && ((size[0] == sz.height && size[1] == sz.width) || (allocateVector 
&& size[0] == sz.width && size[1] == sz.height)) in function create 

また、いくつかのアサーションは失敗します:

OpenCV Error: Assertion failed (dims == 2 && ((size[0] == sz.height &&
size[1] == sz.width) || (allocateVector && size[0] == sz.width && 
size[1] == sz.height))) in create

誰かに似たような問題がありますか?ラインを合わせるにはポイントが悪すぎるのではないでしょうか?fitLine()関数のパラメーターを変更する必要がありますか?

コード

cv::Vec4f newLine;
if(temp.size() >= 2)
{
    qDebug()<<"Correcting line";
    std::vector<cv::Point2f> temp2;
    for(std::vector<std::pair<cv::Point2f,float> >::iterator i = temp.begin();
        i != temp.end(); i++)
    {
        temp2.push_back((*i).first);
    }
    qDebug()<<"temp2 size: "<<temp2.size();
    try{
        cv::fitLine(temp2,newLine,CV_DIST_HUBER,0,0.01,0.01);
    }
    catch(cv::Exception e)
    {
        qDebug()<<e.what();
    }

に変更Vec4f newLineしましたがstd::vector<float> newLine(4)、動作します。なんで?

4

2 に答える 2

0

これらのアサーションは、データのディメンションが正しいことを確認するためのものです(たとえば、2Dまたは3Dポイントのセット)。したがって、それらが発生した場合、おそらくデータを正しく初期化していない可能性がありますが、コードなしではわかりません

于 2012-11-06T10:53:47.853 に答える