簡體   English   中英

OpenCV Mat :: at 537行斷言失敗錯誤

[英]OpenCV Mat::at line 537 Assertion Failed Error

我在Mat :: at的537行中遇到斷言失敗錯誤

OpenCV錯誤:斷言失敗(尺寸<= 2 && data &&(unsigned)i0 <(unsigned)si ze.p [0] &&(unsigned)(i1 * DataType <_Tp> :: channels)<(unsigned)(size。 p [1] * channel s())&&(((((sizeof(size_t)<< 28)| 0x8442211)>>(((DataType <_Tp> :: depth)&&((1 << 3 -1))) * 4)和15)== elemSize1())在未知函數中,文件c:\\ users \\ tim \\ document s \\ code \\ opencv \\ build \\ include \\ opencv2 \\ core \\ mat.hpp,第537行

我正在嘗試填充將在函數cv :: remap中使用的矩陣。 導致此失敗的斷言的代碼部分如下:

void Functions::PopulatedMapY(Mat image)
{
    mapy.create(image.rows, image.cols, CV_32FC1);
    for (int j = 0; j<image.rows; j++)
    {   
        float a = (image.rows - 1) - gazey;
        float b = (image.cols - 1) - gazex;
        for (int i = 0; i<image.cols; i++)
        {       
            mapy.at<float>(j,i) = map2y.at<float>(a+j,b+i);
        }   
    }
}

矩陣map2y在MapCreator函數中定義如下:

void Functions::MapCreator(Mat image, float const_a, float const_b)
{
    map2x.create(2*image.rows, 2*image.cols, CV_32FC1);
    map2y.create(2*image.rows, 2*image.cols, CV_32FC1);

    for (int m = 0; m<2*image.rows; m++)
    {
        ty = image.rows - m;
        for (int n = 0; n<2*image.cols; n++)
        {
            tx = image.cols - n;
            map2x.at<float>(m,n) = n;
            map2y.at<float>(m,n) = m +const_b*exp(-pow(tx,2)/pow(const_a, 2))*Signum(ty);

    }
    }

}

任何幫助將非常感激!

從錯誤代碼中,您可以發現在Mat::at調用之后斷言為假,並且在以下情況下,您的代碼將為假:
一種。 Nr。 的頻道數少於2。
b。 數據為空
C。 (無符號)i0 <(無符號)size.p [0]
再加上其他一些。
我對您的建議是nr。 渠道。 CV_32FC1的意思是這樣的:
CV_ <位深度>(S | U | F)C <nr_channels>。 我想這是問題所在,模板參數或數據為空。
我的解決方案只是使用CV_32F代替。
作為參考,在這里看看:
OpenCV錯誤:斷言失敗,mat.cpp行537

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM