zoukankan      html  css  js  c++  java
  • opencv学习笔记

    1.从官网(http://opencv.org/)上下载源码,编译安装,编译通过,未发现错误。

    2.编写了如下测试程序:

    //showImage.cpp
    #include "highgui.h" int main( int argc, char **argv ) { IplImage *img = cvLoadImage( argv[1] ); cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE); cvShowImage("Example1", img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("Example1"); return 0; }

    编译:根据网上的文档,使用如下参数编译

    g++  `pkg-config --cflags --libs opencv` showImage.cpp -o showImage

    提示错误,函数未定义:

    showImage.cpp:(.text+0x1d): undefined reference to `cvLoadImage'
    showImage.cpp:(.text+0x35): undefined reference to `cvNamedWindow'
    showImage.cpp:(.text+0x49): undefined reference to `cvShowImage'
    showImage.cpp:(.text+0x55): undefined reference to `cvWaitKey'
    showImage.cpp:(.text+0x61): undefined reference to `cvReleaseImage'
    showImage.cpp:(.text+0x6d): undefined reference to `cvDestroyWindow'
    collect2: ld 返回 1

    解决办法:必须指定链接目录和库。`pkg-config --cflags --libs opencv`貌似不起作用

    g++ showImage.cpp -o showImage -I /usr/local/include/opencv -lopencv_highgui -lopencv_core

    编译成功。

    3.运行程序,发现出错

    OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow................略

    解决办法:根据提示安装libgtk2.0-dev,并且重新编译opencv的源码。然后再编译此程序,运行成功。

    4.编译另一个播放AVI视频的程序:

    //showAVI.cpp
    #include "highgui.h"
    
    int main(int argc, char** argv)
    {
        cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE);
        CvCapture* capture = cvCreateFileCapture(argv[1]);
        IplImage* frame;
    
        while(1)
        {
            frame = cvQueryFrame(capture);
            if(!frame)
              break;
            cvShowImage("Example2", frame);
            char c = cvWaitKey(33);
            if(c == 27)
              break;
        }
    
        cvReleaseCapture(&capture);
        cvDestroyWindow("Example2");
        return 0;
    }

    编译后,运行出错:

    Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap"

    解决办法:

    sudo apt-get install gtk2-engines-pixbuf

    重新编译opencv源码和此程序,发现能运行,但是无法读取avi视频,也无错误信息输出。

    gdb跟踪调试后发现cvCreateFileCapture()函数返回NULL,再次google之后发现缺少ffmpeg。于是

    sudo apt-get install ffmpeg

     重新编译后还是如此。cmake生成Makefile的时候认真阅读了输出信息,发现缺少很多依赖。

    目前在逐一补充所需依赖...

    真不明白为什么缺少这么多文件还可以完全opencv的源码编译....

  • 相关阅读:
    POJ1470 Closest Common Ancestors(LCA入门)
    POJ1330 Nearest Common Ancestors(倍增LCA算法求无边权树的模板)
    HDU3078 Network (倍增LCA算法求树链)
    HDU2874 Connections between cities(并查集+倍增LCA算法求森林最短路)
    HDU2586 How far away?(倍增LCA算法求带边权树上最短路)
    POJ1062 昂贵的聘礼
    HDU4725 The Shortest Path in Nya Graph(堆优化的dijkstra算法)
    数据仓库详解:包括概念、架构及设计
    利用行为标签构建用户画像
    Spark SQL深度理解篇:模块实现、代码结构及执行流程总览(2)
  • 原文地址:https://www.cnblogs.com/dvwei/p/3087286.html
Copyright © 2011-2022 走看看