树莓派(raspbian2)上开发OpenCv_C++

树莓派[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
#include

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!,依照下面的红圈进行点击!
树莓派(raspbian2)上开发OpenCv_C++_第1张图片

2.采集图像

#include
#include


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

在这里插入图片描述
可以看到,图片已经生成!可以通过树莓派的文件图形化工具打开!
树莓派(raspbian2)上开发OpenCv_C++_第2张图片

以上是2023-06-12的日志,接下来还有四天的实训!继续更新!

今天遇到个很大的问题:使用MobaXterm连接A9开发板后,MobaXterm要么黑屏,要么就一直出现下面这样图片的情况,乱码的情况!

树莓派(raspbian2)上开发OpenCv_C++_第3张图片
这个问题,我通过百度,csdn,基维百科,等待,都查遍了,也没有答案呀!难道又要到此为止了吗?不,我在尝试了种种解决办法后依然没有得到解决,后来去问chatgpt,他给出了我两三解决办法,但是都没有用!不够还有最后一个解决办法!卸载端口COM3,这一步我不太敢,万一搞不好就把板子或电脑搞坏了,然后我又重启打开,重启打开,重复多次仍然没有解决,于是只能抱着试一试的心态,卸载了COM3.
树莓派(raspbian2)上开发OpenCv_C++_第4张图片
(注:设备管理器在Win10中的位置: 控制面板->硬件和声音->设备管理器)

卸载COM3之后,把掉板子,将MobaXterm中连接过的记录彻底删除,然后再连接板子,重启板子,在设备管理器中:端口->右击:扫描检查硬件改动,将设备管理器关了重开,可以看到我们卸载的COM3又回来了!
树莓派(raspbian2)上开发OpenCv_C++_第5张图片
可以看到板子可以正常使用了!

你可能感兴趣的:(树莓派,opencv,c++,linux)