分段错误 Opencv linux c++

Posted

技术标签:

【中文标题】分段错误 Opencv linux c++【英文标题】:Segmentation Fault Opencv linux c++ 【发布时间】:2017-09-28 23:00:06 【问题描述】:

我在 linux 终端(linux 中的 c++)中编译了以下代码,并且正在使用 OpenCv 3.3 在服务器上以 unsigned char * 的形式传入图片,我将其转换为 cv::Mat 如下:

Mat charToMat(unsigned char * bytes, int width, int height)
    return Mat(height, width, CV_8UC3, bytes);

然后我尝试了两种从 cv::Mat 转换为 IplImage * 的方法,但在每种情况下,都会发生分段错误。

一种方式:

int * ft(Mat ft, int width, int height, int countA4) 
        sourceImg = cvCreateImage(cvSize(ft.cols, ft.rows), 8, 3);
        IplImage im = ft; 
        cvCopy(&im, sourceImg); // Segmentation Fault

2路:

int * ft (Mat ft, int width, int height, int countA4) 
        IplImage im = ft;
        sourceImg = cvCloneImage(&im);// Segmentation Fault

如果有人知道解决方案?

【问题讨论】:

【参考方案1】:

我认为您将 Mat 转换为 Iplimage 是问题所在。

我会尝试这样的:

int * ft (Mat ft, int width, int height, int countA4) 
    IplImage* img = new IplImage(ft);
    sourceImg = cvCloneImage(im);

更多信息试试这个Converting cv::Mat to IplImage*

【讨论】:

感谢您的帮助,但仍然导致错误

以上是关于分段错误 Opencv linux c++的主要内容,如果未能解决你的问题,请参考以下文章

分段错误原因未知Opencv

opencv::mixchannels 分段错误

C++/openCV - 为啥显示图像会产生 linux 分段错误? (openCV 错误?)

简单的 C++ OpenCV imshow 示例因分段错误而崩溃

为 OpenCV 的 C++ createTrackbar 运行 C 包装器时出现编译分段错误(核心转储)

OpenCV中的分段错误