我想将cv::Mat数据保存到线性数组中,但不知道为什么会有bug。图像颜色为灰度(CV_8UC1
)。这是代码:
uchar* imgToArray(cv::Mat& img)
{
int n = img.rows;
int m = img.cols;
uchar* res = new uchar(m * n);
for(int row = 0; row < m; row++)
{
for(int col = 0; col < n; col++)
{
res[row * n + col] = img.at<uchar>(row, col);
}
}
return res;
}
提到的调试信息,
Program received signal SIGSEGV, Segmentation fault.
0x000055555555c0e9 in imgToArray (img=..., n=512, m=512) at ../conversion.cpp:10
10 res[row * n + col] = img.at<uchar>(row, col);
我对此很困惑。感谢任何提前提供建议的人!
最佳答案
您已创建一个值为 m * n
的 int 对象
uchar* res = new uchar(m * n);
不是数组,应该是
uchar* res = new uchar[m * n];
关于c++ - 我无法将 cv::Mat 保存到一维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47870057/