树莓派[raspbian2]上开发OpenCv_C++
- 背景故事
- 一.首先就是搭建环境了
- 1.该位置是环境下载地址
- 2.远程连接
- 3.安装OpenCV(如果使用的是上面的镜像,则不用安装)
- 二.代码示例
- 1.打开摄像头
- 2.采集图像
- 以上是2023-06-12的日志,接下来还有四天的实训!继续更新!
- 今天遇到个很大的问题:使用MobaXterm连接A9开发板后,MobaXterm要么黑屏,要么就一直出现下面这样图片的情况,乱码的情况!
- 三,全部代码
背景故事
最近刚好赶上学校的实训,学校请了一位大佬前来助阵,果然,有人带着你学比你自己闭门造车舒服多了,一直想学OpenCv,但是由于重重阻挠,Bug一个又一个,只看B站上的视频,让我两个多月只学会个搭环境!不说别的,linux树莓派上,OpenCV为啥打不开摄像头这个问题,我查遍了CSDN,百度,谷歌都没能找到问题,在老师这一句话就解决了,果然技术大牛很多,但是分享技术的大牛却很少,所以以后我要万分珍惜大佬分享的知识.
一.首先就是搭建环境了
1.该位置是环境下载地址
链接:https://pan.baidu.com/s/1EXEf5NP7D_SWVZ7E6g_fjg
提取码:8n01
以上为封装好的raspbian2
,只需下载到电脑本地,然后在VM上,打开虚拟机
即可,里面的OpenCV环境也已配好(当然后面的内容也会提到安装OpenCV的命令)
2.远程连接
我是用XShell远程连接虚拟机,因为虚拟的使用起来不是很方便.
我们要做的就是修改密码
sudo passwd pi #修改 pi 密码
#建议 用户名和密码都改成pi,这样好记一些,毕竟这个是我们学习用的
3.安装OpenCV(如果使用的是上面的镜像,则不用安装)
sudo apt install libopencv-dev
二.代码示例
1.打开摄像头
#include<iostream>
#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){VideoCapture cam;cam.open(0);if(!cam.isOpened()){cout<<"Failed to open camera!"<<endl;return -1;}cout<<"Success to open camera!"<<endl;return 0;
}
#编译
#上面的代码我命名为test.cpp
g++ test.cpp -lopencv_videoio -lopencv_core -lopencv_highgui
执行—>
如果提示Failed to open camera!
,依照下面的红圈进行点击!
2.采集图像
#include<iostream>
#include<opencv2/opencv.hpp>using namespace std;
using namespace cv;int main(){VideoCapture cam;cam.open(0);if(!cam.isOpened()){cout<<"Failed to open camera!"<<endl;exit(-1);}cout<<"Success to open camera!"<<endl;Mat image;cam.read(image);if(image.empty()){cout<<"read picture is empty!"<<endl;exit(-2);}imshow("OpenCv",image);imwrite("./image.jpg",image);waitKey(0);return 0;}
#编译
#上面的代码我命名为test2.cpp
g++ test2.cpp -lopencv_videoio -lopencv_core -lopencv_highgui# 运行报错:缺少libopencv_imgcodecs.so.3.2的支持
/usr/bin/ld: /tmp/ccmqXUXR.o: undefined reference to symbol '_ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKSt6vectorIiSaIiEE'
/usr/bin/ld: //usr/lib/i386-linux-gnu/libopencv_imgcodecs.so.3.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status#重新编译,增加一项-lopencv_imgcodecs,成功编译!
g++ test2.cpp -lopencv_videoio -lopencv_core -lopencv_highgui -lopencv_imgcodecs
可以看到,图片已经生成!可以通过树莓派的文件图形化工具打开!
以上是2023-06-12的日志,接下来还有四天的实训!继续更新!
今天遇到个很大的问题:使用MobaXterm连接A9开发板后,MobaXterm要么黑屏,要么就一直出现下面这样图片的情况,乱码的情况!
这个问题,我通过百度,csdn,基维百科,等待,都查遍了,也没有答案呀!难道又要到此为止了吗?不,我在尝试了种种解决办法后依然没有得到解决,后来去问chatgpt,他给出了我两三解决办法,但是都没有用!不够还有最后一个解决办法!卸载端口COM3,这一步我不太敢,万一搞不好就把板子或电脑搞坏了,然后我又重启打开,重启打开,重复多次仍然没有解决,于是只能抱着试一试的心态,卸载了COM3.
(注:设备管理器在Win10中的位置: 控制面板->硬件和声音->设备管理器)
卸载COM3之后,把掉板子,将MobaXterm中连接过的记录彻底删除,然后再连接板子,重启板子,在设备管理器中:端口->右击:扫描检查硬件改动,将设备管理器关了重开,可以看到我们卸载的COM3又回来了!
可以看到板子可以正常使用了!
三,全部代码
代码地址