簡體   English   中英

與其大小無關地訪問cv :: Mat

[英]Accessing a cv::Mat independently from its size

我需要訪問cv::Mat ,但是我不必知道Matrix的sizeof ,因此有沒有辦法訪問所有大小的cv::Mat的元素? 我的意思是不對矩陣的類型進行切換。

這就是我所擁有的:

int image_type = image.type();
switch (image_type)
{
case CV_32F :
    return image.at<float>(i,j);
case CV_8U :
    return (float)image.at<uchar>(i,j);
.
.
.
default:
    std::string msg = "Exception : cannot access IMAGE of type : " + image_type;
    throw std::exception(msg.c_str());
    break;
}

我正在做的是訪問矩陣的數據,然后將其轉換為浮點數(因為我使用最大32F的矩陣),此代碼工作正常,但我正在尋找類似的東西:float x = image.at (i,j); 但這適用於矩陣8U和其他...

謝謝 !

這將滿足您的要求,但是顯然您只想一次調用convertTo() ,而不是每次訪問都調用一次。

Mat  dst;
image.convertTo(dst, CV_32F);
return dst.at<float>(i,j);

您應該閱讀文檔:

  • Mat中的元素數量由Mat::total()

  • 行數,列數和通道數分別由Mat::rowsMat::colsMat::channels()

  • 矩陣保存的數據類型在type()

... 等等。

閱讀文檔,並查看有關如何訪問矩陣元素的本教程除非您使用C ++ 11 類型推導或類似的方法)。

編輯:

如果不將switch語句放在某處,就無法訪​​問未知類型的Mat。

暫無
暫無

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

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