[英]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.