这个问题可能看起来很模糊,但坦率地说,这就是我所知道的,我也无法调试这个问题。
我正在使用 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 channel 。
当我尝试 transpose() 时也发生了同样的段错误。这是我以前写的另一个程序。同样的程序在另一台机器上运行完美。我一直认为这个错误可能与图像大小不匹配或其他原因有关,但不幸的是,事实并非如此。
我不确定还有哪些其他函数会返回此错误。我已经卸载了 OpenCV,从源代码构建,再次安装,但错误仍然存在。我觉得留给我的唯一选择是全新安装操作系统,但非常感谢任何形式的调试此问题的帮助。
最佳答案
这可能与您的操作系统、python 或 C++ 无关。我推荐使用 gdb
来回溯发生段错误的地方;那应该会为您指明正确的方向。
关于python - 使用某些 OpenCV 函数时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41458022/