我正在尝试使用nix软件包管理器运行OpenCV的hello world程序,但它一直报错:
OpenCV错误:未指定错误(该功能未实现。重新构建具有Windows、GTK+2.x或Carbon支持的库。如果您使用的是Ubuntu或Debian,请安装libgtk2.0-dev和pkg-config,然后重新运行cmake或配置脚本),在cvNamedWindow,文件/tmp/nix-build-opencv-2.4.13.drv-0/opencv-2.4.13-src/modules/highgui/src/window.cpp,第483行 终止调用后抛出'cv::Exception'一个实例,内容为 /tmp/nix-build-opencv-2.4.13.drv-0/opencv-2.4.13-src/modules/highgui/src/window.cpp:483: error: (-2) 该功能未实现。重新构建具有Windows、GTK+2.x或Carbon支持的库。如果您使用的是Ubuntu或Debian,请安装libgtk2.0-dev和pkg-config,然后重新运行cmake或配置脚本,在函数cvNamedWindow中。
我使用以下default.nix文件创建了一个nix-shell。
使用以下命令:
OpenCV错误:未指定错误(该功能未实现。重新构建具有Windows、GTK+2.x或Carbon支持的库。如果您使用的是Ubuntu或Debian,请安装libgtk2.0-dev和pkg-config,然后重新运行cmake或配置脚本),在cvNamedWindow,文件/tmp/nix-build-opencv-2.4.13.drv-0/opencv-2.4.13-src/modules/highgui/src/window.cpp,第483行 终止调用后抛出'cv::Exception'一个实例,内容为 /tmp/nix-build-opencv-2.4.13.drv-0/opencv-2.4.13-src/modules/highgui/src/window.cpp:483: error: (-2) 该功能未实现。重新构建具有Windows、GTK+2.x或Carbon支持的库。如果您使用的是Ubuntu或Debian,请安装libgtk2.0-dev和pkg-config,然后重新运行cmake或配置脚本,在函数cvNamedWindow中。
我使用以下default.nix文件创建了一个nix-shell。
with import <nixpkgs> {}; {
cimgEnv = stdenv.mkDerivation {
name = "cimgdev";
buildInputs = [ pkgconfig stdenv cimg xorg.libX11 boost opencv gnome.gtk ];
};
}
编译并运行以下代码
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main() {
Mat image;
image = imread("lena.jpg", 1);
if ( !image.data ) {
cout << "No image data" << endl;
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE);
imshow("Display Image", image);
waitKey(0);
return 0;
}
使用以下命令:
g++ `pkg-config --cflags opencv` opencvtest.cpp `pkg-config --libs opencv` -o opencvtest
代码编译成功了,但是在运行时遇到了之前的错误信息。
我尝试使用CMake,但结果相同。
libgtk2.0-dev
。 [也可以查看此答案](https://dev59.com/kV4b5IYBdhLWcg3wtjpA#30979195)。 - Ken Y-N