美文网首页Linux学习之路计算机杂谈C++
【OpenCV】树莓派和Ubuntu遇到的OpenCV运行问题

【OpenCV】树莓派和Ubuntu遇到的OpenCV运行问题

作者: 张照博 | 来源:发表于2018-05-27 12:49 被阅读134次

    正文之前

    今天终于可以畅快的玩玩传说中的OpenCV了。。。美滋滋!!

    但是!!

    此处敲桌!!我太天真了!人人谈之色变的OpenCV怎么可能这么容易被我得手呢?!!不存在的!!

    正文

    实战中遇到了几个问题,主要是因为昨晚用的是python,今天用的我大C++,所以有点差别,昨晚没发现!~~今天一弄,问题就出来了。。。

    我的OpenCV学习笔记(11):启动摄像头

    首先,是编译不通过~ 你看,别人家的代码毛问题都没有!!但是只要我按照常规手法去操作,不变的代码,千样的GG~~~!!!!!!!

    别人家的代码 别人家的效果

    然而我的呢?!!!我的呢?!!!

    呵呵哒

    全线飘红啊!!!惨不忍睹啊!!!我一定要把报错给你们看!!

    /tmp/ccFjv3cQ.o:在函数‘main’中:
    opencvtest1.cpp:(.text+0x2b):对‘cv::VideoCapture::VideoCapture(int)’未定义的引用
    opencvtest1.cpp:(.text+0x3a):对‘cv::VideoCapture::isOpened() const’未定义的引用
    opencvtest1.cpp:(.text+0x81):对‘cv::VideoCapture::operator>>(cv::Mat&)’未定义的引用
    opencvtest1.cpp:(.text+0xe9):对‘cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)’未定义的引用
    opencvtest1.cpp:(.text+0x190):对‘cv::GaussianBlur(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_<int>, double, double, int)’未定义的引用
    opencvtest1.cpp:(.text+0x20a):对‘cv::Canny(cv::_InputArray const&, cv::_OutputArray const&, double, double, int, bool)’未定义的引用
    opencvtest1.cpp:(.text+0x26d):对‘cv::imshow(cv::String const&, cv::_InputArray const&)’未定义的引用
    opencvtest1.cpp:(.text+0x295):对‘cv::waitKey(int)’未定义的引用
    opencvtest1.cpp:(.text+0x2dd):对‘cv::VideoCapture::~VideoCapture()’未定义的引用
    opencvtest1.cpp:(.text+0x3ba):对‘cv::VideoCapture::~VideoCapture()’未定义的引用
    /tmp/ccFjv3cQ.o:在函数‘cv::String::String(char const*)’中:
    opencvtest1.cpp:(.text._ZN2cv6StringC2EPKc[_ZN2cv6StringC5EPKc]+0x54):对‘cv::String::allocate(unsigned long)’未定义的引用
    /tmp/ccFjv3cQ.o:在函数‘cv::String::~String()’中:
    opencvtest1.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0x14):对‘cv::String::deallocate()’未定义的引用
    /tmp/ccFjv3cQ.o:在函数‘cv::Mat::~Mat()’中:
    opencvtest1.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39):对‘cv::fastFree(void*)’未定义的引用
    /tmp/ccFjv3cQ.o:在函数‘cv::Mat::release()’中:
    opencvtest1.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x4b):对‘cv::Mat::deallocate()’未定义的引用
    collect2: error: ld returned 1 exit status
    

    去他大爷的!!!还能好好玩耍吗???然后,千方百计之下。。总算还是找到了解决方案了!!

    我找了一篇博客,然后内容如下:


    我一直以为是C++11或者g++版本的原因,看到:

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

    这样会编译失败,而

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

    这样就会成功。试了一下果然如此。真是奇怪。


    我就一点都不奇怪。。。。有啥好奇怪的??不变的系统,流水的bug,习惯就好。。why it don't work?? It work!! but Why?千年疑问,别指望自己能回答,乖乖的照就好!!

    一点就通,按照一些大佬说的,貌似是因为C++要指定动态库链接???opencv这个小bitch真是让人不省心啊!!

    到了一这一步,在树莓派上就可以愉快的跑起来了。。

    但是在ubuntu上。。呵呵,年轻!!吃我一记bug!!!

    error while loading shared libraries: libopencv_highgui.so.3.4: cannot open
    
    盗图,我的已经解决了~

    借鉴博客来源: OpenCV编译遇到的一个常见错误-./bin: error while loading shared libraries: libopencv_highgui.so.3.2: cannot open

    他的分了很多步骤,但是我觉得没必要。。所以给你放福利。。。一条命令搞定它!!当然,要知道具体情节,还是去那个博客看啊哈!

    sudo echo "include /usr/local/lib" >> /etc/ld.so.conf && sudo ldconfig && sudo echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig " >> /etc/bash.bashrc  &&  echo "export PKG_CONFIG_PATH  " >> /etc/bash.bashrc &&  source /etc/bash.bashrc
    

    这一句就是他整个博客的浓缩,尽管拿去,中间会要你输入密码。。不过应该就一次了!!

    然后你就发现,ubuntu也可以跑摄像头了!!娃哈哈!!

    有点惊悚哈。。别介意~~ 我溜了

    正文之后

    唉。我初中班主任的儿子老是不爱学习。。被他妈妈一骂就闹气,要中考了还不学习。。。我在这儿苦口婆心的劝。。真的是。。头疼。。

    现在的小孩怎么就没一点危机感呢?未来这个世界是要“人吃人的”,不趁着社会给你相对公平发展的机会去挤压更多人的生存空间,就这么甘做社会的螺丝钉???真是,幼稚!

    相关文章

      网友评论

        本文标题:【OpenCV】树莓派和Ubuntu遇到的OpenCV运行问题

        本文链接:https://www.haomeiwen.com/subject/kfrbjftx.html