树莓派[raspbian2]上开发OpenCv_C++
- 背景故事
- 一.首先就是搭建环境了
- 1.该位置是环境下载地址
- 2.远程连接
- 3.安装OpenCV(如果使用的是上面的镜像,则不用安装)
- 二.代码示例
- 1.打开摄像头
- 2.采集图像
- 以上是2023-06-12的日志,接下来还有四天的实训!继续更新!
背景故事
最近刚好赶上学校的实训,学校请了一位大佬前来助阵,果然,有人带着你学比你自己闭门造车舒服多了,一直想学OpenCv,但是由于重重阻挠,Bug一个又一个,只看B站上的视频,让我两个多月只学会个搭环境!不说别的,linux树莓派上,OpenCV为啥打不开摄像头这个问题,我查遍了CSDN,百度,谷歌都没能找到问题,在老师这一句话就解决了,果然技术大牛很多,但是分享技术的大牛却很少,所以以后我要万分珍惜大佬分享的知识.
一.首先就是搭建环境了
1.该位置是环境下载地址
[该位置是环境下载地址,暂未上传,等抽出时间会上传到github上,此处为链接处]
以上为封装好的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
可以看到,图片已经生成!可以通过树莓派的文件图形化工具打开!