簡體   English   中英

從 unsigned char 數組創建 cv::Mat 時出現分段錯誤

[英]Segmentation Fault in creating a cv::Mat from unsigned char array

我不明白為什么以下最小代碼輸出分段錯誤和 cv::Mat 值未正確打印:

#include <opencv2/opencv.hpp>

int main()
{
    unsigned char out[1280*720*3/2] = {100};
    cv::Mat dummy_query = cv::Mat(1, 1280*720*3/2*sizeof(unsigned char), CV_8UC1, (void *)out);
    cv::Size s = dummy_query.size();
    std::cout << s << "\r\n";
    for(int i = 0; i < 1280*720*3/2; i++)
    {
        std::cout << i << "ss" << int(out[i]) << ":";
        std::cout << dummy_query.at<int>(0,i) << " ";
    }
}

您已經在cv::Mat中定義了 uchar 數據類型,但在這一行訪問為 int std::cout << dummy_query.at<int>(0,i) << " ";

所以你的程序可能會在循環結束時崩潰,例如

// create a 100x100 8-bit matrix
Mat M(100,100,CV_8U);
// this will be compiled fine. no any data conversion will be done.
Mat_<float>& M1 = (Mat_<float>&)M;
// the program is likely to crash at the statement below
M1(99,99) = 1.f;

檢查這個打開的簡歷參考

暫無
暫無

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

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