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

本文探讨了在树莓派上使用OpenCV 3.4.1时遇到的段错误问题,分析了destroyAllWindows函数导致的问题,并提供了解决方案。虽然修改函数调用方式可以暂时解决问题,但作者指出此方法可能并非根本解决之道。
摘要由CSDN通过智能技术生成

学习记录

OpenCV学习

背景

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

代码

#include <iostream>
#include <string>
#include <sstream>
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();

补充

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值