运行时Opencv HighGui错误 – “HIGHGUI ERROR:V4L / V4L2:VIDIOC_S_CROP”. Opencv交叉编译. Host = 64bit Ubuntu 12.04.目标= ARM-的Cortex-A9

我是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,Size(7,7),1.5,1.5);
        Canny(edges,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 / platform / 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静态

这是问题.当我尝试在目标上运行可执行文件“exe”时,我得到这个运行时错误

HIGHGUI错误:V4L / V4L2:VIdioC_S_CROP
OpenCV错误:未指定的错误(该函数未实现)使用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上,然后在函数cvNamedWindow中重新运行cmake或configure脚本

我重新安装了libgtk2.0-dev,pkg-config exists&重新编译了OpenCV,但这没有帮助.如果有人知道如何克服这个问题,请让我知道.提前致谢. 〜嗡

更多信息:
我弄清楚是什么导致这个问题,但还没有修复它?

从我的理解中,问题在于opencv的cmake脚本.它不承认GTK的存在,因此没有gtk支持的交叉编译.这确保在工具链的lib文件夹中存在基于arm的gtk库,并将其路径导出到系统路径.

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

如果没有,请从突触包管理器中安装v4l2ucp,v4l-utils和libv4l-dev.然后再重新制作.

这对我有用,但是我在Ubuntu 12.04上使用OpenCV与python绑定.

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...