我正在通过创建一个 50x50 单 channel 矩阵来测试 Mat 类功能,该矩阵在显示后应该会产生黑色图片。不幸的是,我的程序在以下代码的第 3 行崩溃了:
cv::Mat projImg = cv::Mat::zeros(50, 50, CV_8U);
cv::namedWindow( "Test");
cv::imshow("Test", projImg);
出现错误下级停止,因为它收到了来自操作系统的信号。信号名称:SIGABRT。这很奇怪,因为这段代码非常简单。
我正在运行带有 Qt 4.0.2 的 Ubuntu 16.04 64 位。
注意即使将 projImg 设置为常规图像,我也会遇到同样的错误
cv::Mat projImg = cv::imread("/home/is/Downloads/test.jpg");
最佳答案
您的基本 OpenCV
功能不太可能有问题。因此,您的 OpenCV
可能未配置为使用 Qt
支持构建。
list :
- 消除所有
highgui
方法以确保核心OpenCV
工具正常工作。您可以将namedWindow
和imshow
替换为imwrite
。 - 再次检查您的
OpenCV
构建过程并查找特定的Qt
选项。如果您使用的是CMake
,请查找With Qt
开关和相关的Qt
路径。
关于c++ - OpenCV Mat 导致 SIGABRT 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38157681/