Linux学习之路计算机杂谈C++

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

2018-05-27  本文已影响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也可以跑摄像头了!!娃哈哈!!

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

正文之后

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

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

上一篇下一篇

猜你喜欢

热点阅读