首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行时Opencv HighGui错误- "HIGHGUI错误: V4L/V4L2: VIDIOC_S_CROP“。Opencv交叉编译。Host=64bit Ubuntu12.04。目标=ARM-Cortex-A9

运行时Opencv HighGui错误- "HIGHGUI错误: V4L/V4L2: VIDIOC_S_CROP“。Opencv交叉编译。Host=64bit Ubuntu12.04。目标=ARM-Cortex-A9
EN

Stack Overflow用户
提问于 2013-04-29 20:19:30
回答 3查看 25.2K关注 0票数 11

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

代码语言:javascript
复制
#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=皮层-a9 -mfpu=neon -static opencv_camshow.cpp -o exe -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_CROP OpenCV错误:未指定的错误(该函数未实现)。使用Windows、GTK+ 2.x或碳支持重新构建库。如果您在Ubuntu或Debian上,安装libgtk2.0-dev和pkg-config,然后在/home/om/OpenCV-2.4.4/modules/highgui/src/window.cpp,第652行cvNamedWindow中重新运行cmake或配置脚本)。

在引发'cv::Exception‘实例后调用终止

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

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

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

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

EN

回答 3

Stack Overflow用户

发布于 2014-09-18 05:38:43

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

如果不存在,那么从synaptic管理器安装v4l2ucpv4l-utilslibv4l-dev。然后cmake并重新构建。

这对我起了作用,但我在Ubuntu12.04上使用了OpenCV和python绑定。

票数 11
EN

Stack Overflow用户

发布于 2014-05-13 11:10:53

为了交叉编译,您需要告诉pkg-config查找正确的路径(默认情况下,这将是您的主机配置/..pc文件!)

来自pkg-config网站

  • 搜索$PKG_CONFIG_PATH中列出的目录
  • 当指定$PKG_CONFIG_LIBDIR时,它将覆盖默认目录(例如/usr/lib/pkgconfig)中编译的目录和PKG_CONFIG_PATH。请注意,当指定PKG_CONFIG_LIBDIR时,PKG_CONFIG_PATH将完全忽略PKG_CONFIG_PATH中的内容,即使文档声明了不同的内容。
票数 2
EN

Stack Overflow用户

发布于 2016-12-13 09:12:53

Opencv高误差

必须使用cmake重新安装opencv

代码语言:javascript
复制
git clone https://github.com/Itseez/opencv.git
cd ~/opencv 
mkdir release 
cd release 
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_IPP=OFF ..
make -j4 sudo 
make install
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16287488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档