树莓派OpenCV引起Segmentation fault (core dumped)(待续)

文章目录

  • 学习记录
    • 背景
    • 代码
    • 现象
    • 原因
    • 解决方案
    • 补充

学习记录

OpenCV学习

背景

  1. 树莓派3B
  2. OpenCV-3.4.1

代码

#include 
#include 
#include 
using namespace std;

#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
using namespace cv;

//const int CV_GUI_NORMAL = 0x10;

int main(int argc, const char** argv)
{
    Mat lena = imread("../a.jpg");
    Mat gray = imread("../a.jpg", 0);
    
    int lRow = lena.cols;
    int lCol = lena.rows;

    imwrite("../b.jpg", gray);

    namedWindow("dog", CV_GUI_NORMAL);
    namedWindow("gd", CV_GUI_EXPANDED);

    moveWindow("dog", 10, 10);

    imshow("dog", lena);
    imshow("gd", gray);
    
    cout<<lRow<<","<<lCol<<endl;
    
    resizeWindow("gd", 255, 255);

    waitKey(0);
    
//  destroyWindow("dog");

//  while(1);
    destroyAllWindows();
    
    cout<<"program end>>>---------------------"<<endl;
    return 0;
}

现象

程序能够正常运行,但程序运行结束后会打印Segmentation fault (core dumped)

原因

产生原因为destroyAllWindows();
这个函数本身的目的是为了关闭imshow()函数打开的图像窗口。

解决方案

destroyAllWindows();改为cv::destroyAllWindows();

补充

解决方案好像有问题,有时还会出现报错。但既然程序能正常运行,问题后续再议。有知道的道友麻烦告知一下

你可能感兴趣的:(OpenCV)