gpt4 book ai didi

opencv - 运行时 Opencv HighGui 错误 - "HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP"。 opencv交叉编译。主机=64 位 Ubuntu 12.04。目标=ARM-Cortex-A9

转载 作者:太空宇宙 更新时间:2023-11-03 20:40:15 27 4
gpt4 key购买 nike

我是 OpenCV 的初学者,正在尽最大努力让一个简单的应用程序在嵌入式平台上运行。我交叉编译了 OpenCV 2.4.4 并根据相机和 GUI 支持的需要构建了 WITH_GTK=ON、WITH_UNICAP=ON、WITH_V4L=ON。以下示例代码在主机上交叉编译:

#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if (!cap.isOpened()) // check if we succeeded
return -1;

Mat edges;
namedWindow("edges", 1);
for (;;) {
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if (waitKey(30) >= 0)
break;
}
return 0;
}

以这种方式编译静态链接:

arm-linux-gnueabi-g++ -mcpu=cortex-a9 -mfpu=neon -static opencv_camshow.cpp -o exe -I/home/om/OpenCV-2.4.4/platforms/linux/build_soft/install/include 目录-L/home/om/OpenCV-2.4.4/platforms/linux/build_soft/install/lib -L/home/om/OpenCV-2.4.4/platforms/linux/build_soft/3rdparty/lib -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_imgproc -lopencv_core -lopencv_contrib -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_flann -lopencv_photo -lopencv_videostab -pthread -lm -lrt -lzlib -static

这就是问题所在。当我尝试在目标上运行可执行文件“exe”时,出现此运行时错误:

HIGHGUI 错误:V4L/V4L2:VIDIOC_S_CROPOpenCV Error: Unspecified error (函数未实现。使用 Windows、GTK+ 2.x 或 Carbon 支持重建库。如果您使用的是 Ubuntu 或 Debian,请安装 libgtk2.0-dev 和 pkg-config,然后重新运行 cmake或配置脚本)在 cvNamedWindow,文件/home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp,第 652 行

在抛出“cv::Exception”实例后调用终止

what():/home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp:652: error: (-2) 函数未实现。使用 Windows、GTK+ 2.x 或 Carbon 支持重建库。如果您使用的是 Ubuntu 或 Debian,请安装 libgtk2.0-dev 和 pkg-config,然后重新运行 cmake 或在函数 cvNamedWindow 中配置脚本

我重新安装了 libgtk2.0-dev,存在 pkg-config 并重新编译了 OpenCV,但这并没有帮助。如果有人知道如何解决这个问题,请告诉我。提前致谢。 ~Om

更多信息:我弄清楚是什么导致了这个问题,但还没有解决它......

根据我的理解,问题出在opencv的cmake脚本上。它不承认 GTK 的存在,因此在没有 gtk 支持的情况下进行交叉编译。这是在确保基于 arm 的 gtk 库存在于工具链的 lib 文件夹中并且它的路径导出到系统路径之后。

最佳答案

执行cmake语句后验证cmake的输出是否包含以下文本:V4L/V4L2: Using libv4l

如果不存在,则从 synaptic 包管理器安装 v4l2ucpv4l-utilslibv4l-dev。然后 cmake 并再次构建。

这对我有用,但我在 Ubuntu 12.04 上使用 OpenCV 和 python 绑定(bind)。

关于opencv - 运行时 Opencv HighGui 错误 - "HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP"。 opencv交叉编译。主机=64 位 Ubuntu 12.04。目标=ARM-Cortex-A9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16287488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com