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

这篇具有很好参考价值的文章主要介绍了树莓派(raspbian2)上开发OpenCv_C++。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景故事

最近刚好赶上学校的实训,学校请了一位大佬前来助阵,果然,有人带着你学比你自己闭门造车舒服多了,一直想学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

执行—>
树莓派(raspbian2)上开发OpenCv_C++
如果提示Failed to open camera!,依照下面的红圈进行点击!
树莓派(raspbian2)上开发OpenCv_C++

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

树莓派(raspbian2)上开发OpenCv_C++
可以看到,图片已经生成!可以通过树莓派的文件图形化工具打开!
树莓派(raspbian2)上开发OpenCv_C++

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

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

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

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

三,全部代码

代码地址文章来源地址https://www.toymoban.com/news/detail-491680.html

到了这里,关于树莓派(raspbian2)上开发OpenCv_C++的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv_c++学习(六)

    对以上实例解释如下: 若读取的为本地视频,则filename为视频名称,若读取的是摄像头数据,则为int类型的摄像头id。 视频属性可以通过get()函数获取。 见文末案例 对以上实例进行解释: filename:保存视频的地址和文件名,包含视频格式; fourcc:压缩帧的4字符编解码器代码,

    2024年02月03日
    浏览(26)
  • opencv_c++学习(三)

    CV Assert(mylmage.depth() == CV 8U); CV_Assert()函数判断图像数据的类型是否为uchar类型,不满足则抛出异常。 Mat.ptr(int i=0)获取像素矩阵的指针,索引i表示第几行,从0开始计行数。 Mat.ptr(int i=0)获取像素矩阵的指针,索引i表示第几行,从0开始计行数。 获取当前像素点P(row, col)的像素值

    2024年02月03日
    浏览(24)
  • opencv_c++学习(二十一)

    轮廓检测函数: image:输入图像,数据类型为CV_8U的单通道灰度图像或者二值化图像。contours:检测到的轮廓,每个轮廓中存放着像素的坐标。 mode:轮廓检测模式标志。 method:轮廓逼近方法标志。 offset:每个轮廓点移动的可选偏移量。这个函数主要用在从ROI图像中找出的轮廓并基于

    2024年02月06日
    浏览(32)
  • opencv_c++学习(二十二)

    图中左侧为边缘检测的效果,中间为图像经过二值化的效果,右图为凸包检测效果。 points:输入的2D点集。 hull:输出凸包的顶点。 clockwise:方向标志,当参数为true时,凸包顺序为顺时针方向,否则为逆时针方向。 returnPoints:输出数据的类型标志,当参数为true时第二个参数输出的

    2024年02月06日
    浏览(56)
  • opencv_c++学习(二十五)

    1、海瑞斯角点不可能出现在图像平滑的区域(上图1); 2、图像边缘的支线出不可能出现海瑞斯角点(上图2); 3、海瑞斯角点会出现在顶点处。(上图3); 上图中的下半部分红色圆圈内就是海瑞斯角点常出现的地方。 如上图第一个式子,海瑞斯角点就是将窗口移动后的数

    2024年02月07日
    浏览(29)
  • opencv_c++学习(二十七)

    上图为针孔相机成像原理,蓝色坐标中的O即为镜头光心。成像原理与小孔成像相同。 单目相机映射关系如下: 将上式进行变换,就可以从三位空间映射到2维平面的公式。 相机的畸变公式如下: objectPoints:世界坐标系中3D点的三维坐标。 rvec:世界坐标系变换到相机坐标系的旋

    2024年02月06日
    浏览(42)
  • opencv_c++学习(二十三)

    拟合含义如上图,即为通过已知点去拟合一条直线或者一个多边形。 直线拟合函数: points:输入待拟合直线的2D或者3D点集。 line:输出描述直线的参数,2D点集描述参数为Vec4f类型,3D点集描述参数为Vec6f类型。 distType: M-estimator算法使用的距离类型标志。 param:某些类型距离的数

    2024年02月06日
    浏览(29)
  • opencv_c++学习(二十八)

    如上图所示,根据图像的情况反推相机的运动情况。 如实现上述功能则需要拍摄当前物体的图像,然后拍摄一段时间之后物体的图像,然后联合两张图像则可以获取两个时刻的相机位姿关系。 位姿估计函数: objectPoints:前一时刻世界坐标系中的3D点的三维坐标。 imagePoints: 3

    2024年02月07日
    浏览(30)
  • 【优秀毕设】基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发、可基于树莓派)

    【优秀毕设】基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发、可基于树莓派) 该系统利用Harr级联检测和LPBH进行人脸检测和训练、识别 利用Tkinter完成界面搭建 利用Flask+HTML完成网络实时图像推流及控制 利用captcha.image 完成验证码功能 利用xlsxwriter将数据保存

    2024年02月06日
    浏览(52)
  • OpenCV开发实战 --(C++/Python) 进行视频中的简单背景估计-附源码

    在许多计算机视觉应用中,您可以使用的处理能力较低。在这种情况下,我们必须使用简单但有效的技术。 在这篇文章中,我们将介绍一种这样的技术,用于在相机静态且场景中存在一些移动物体时估计场景的背景。这种情况并不少见。例如,许多交通和监控摄像头都是固定

    2024年02月16日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包