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

Segmentation fault when using some OpenCV functions

本文关键字:分段 错误 函数 OpenCV      更新时间:2023-10-16

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

我使用的是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通道。

当我尝试translate()时,也会发生同样的分段错误。这是我以前写的另一个节目。同样的程序在另一台机器上完美地工作。我一直认为这个错误可能与图像大小不匹配有关,但不幸的是,事实并非如此。

我不确定还有哪些函数返回此错误。我已经卸载了OpenCV,从源代码构建,再次安装,但错误仍然存在。我觉得剩下的唯一选择是重新安装操作系统,但如果能提供任何形式的帮助来调试这个问题,我将不胜感激。

这可能与您的操作系统、python或C++无关。我建议使用gdb来追溯segfault发生的位置;这应该会给你指明正确的方向。