2017-01-04 50 views
0

這個問題可能看起來含糊不清,但坦率地說,就是這些,我也無法調試這個問題。使用一些OpenCV功能時出現分段錯誤

我正在使用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因爲測試考慮中的.png文件確實有alpha通道。

當我嘗試使用轉置()時也會發生同樣的分段錯誤。這是我曾經寫過的另一個程序。同一個程序在另一臺機器上完美地工作。我一直認爲這個錯誤可能與圖像尺寸不匹配有關,但不幸的是,它不是。

我不確定其他函數返回這個錯誤。我已經卸載從源代碼構建的OpenCV,再次安裝,仍然錯誤仍然存​​在。我覺得唯一的選擇是留給我的是全新​​安裝的操作系統,但任何形式的幫助調試這個問題將不勝感激。

+1

您是否嘗試使用gdb來查看段錯誤的來源? –

+0

我剛纔做了,似乎這個問題是關係到OpenCL的。 Backtrace顯示了很多libOpenCL的東西。我記得有時玩過它,但奇怪,因爲我在編譯OpenCV時沒有提到OpenCL。所以我想我只需要擺脫OpenCL並重試。 –

+0

好吧,我會加入這個aswer,讓人們知道你是在良好的軌道:) –

回答

0

這可能與您的操作系統,Python或C++無關。我建議使用gdb當段錯誤發生追溯;這應該指向正確的方向。