这个问题可能看起来很模糊,但坦率地说,这就是我所拥有的,我也无法调试这个问题。
我使用的是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发生的位置;这应该会给你指明正确的方向。