使用某些OpenCV函数时出现分段错误

时间:2017-01-04 07:03:49

标签: python c++ linux opencv segmentation-fault

这个问题可能看起来很模糊,但坦率地说,这就是我所有的,我也无法调试这个问题。

我正在使用Linux Mint并且现在使用OpenCV很长一段时间了。一切都很好,直到几个星期前。现在,当我尝试进行一些基本的转换,比如转置或cvtColor时,会弹出一个分段错误。我真的不知道何时或如何开始发生。这是最小的python脚本,它返回错误:

import cv2
im1 = cv2.imread("test.png", cv2.IMREAD_UNCHANGED)
im2 = cv2.cvtColor(im1, cv2.COLOR_RGBA2BGR)

我在C ++中也做了同样的事情,以防万一:

#include <opencv2/imgproc/imgproc.hpp>                                          
#include <opencv2/highgui/highgui.hpp>                                          

int main() {                                                                    
    cv::Mat im1, im2;                                                           
    im1 = cv::imread("test.png", cv::IMREAD_UNCHANGED);                                               
    cv::cvtColor(im1, im2, cv::COLOR_RGBA2BGR);                                 
    return 0;                                                                   
} 

请注意我正在使用COLOR_RGBA2BGR,因为正在考虑的test.png文件确实有alpha通道。

当我尝试transpose()时也会发生相同的分段错误。这是我在某个时候写过的另一个程序。同一个程序在另一台机器上完美运行。我一直认为这个错误可能与图像大小不匹配有关,但不幸的是,它不是。

我不确定其他函数会返回此错误。我已经卸载了OpenCV,从源代码构建,再次安装,但仍然存在错误。我觉得唯一的选择就是全新安装操作系统,但是非常感谢您调试此问题的任何形式的帮助。

1 个答案:

答案 0 :(得分:0)

这可能与您的操作系统,python和C ++无关。我建议使用gdb追溯发生段错误的位置;这应该指向正确的方向。