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

news2025/3/12 13:00:47

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

在这里插入图片描述
可以看到,图片已经生成!可以通过树莓派的文件图形化工具打开!
在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/640544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python怎样进行快速复制?

Python怎样进行快速复制&#xff1f; 如果你经常使用Python编程&#xff0c;那么你了解到实现复制粘贴操作的重要性。可以通过快速复制代码片段&#xff0c;提高您的生产力和效率。在这篇文章中&#xff0c;我们将讨论一些Python中的技巧和工具&#xff0c;以便您进行快速复制…

《剑指 Offer--LeetCode 学习计划》-- 链表

剑指 Offer 06. 从尾到头打印链表&#xff08;Easy&#xff09; 题目描述 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。限制&#xff1a;0 < 链表长度 < 10000。 举例说明 示例 1&#xff1a; 输入&#xf…

谈谈几个常见数据结构的原理

数组 数组是最常用的数据结构&#xff0c;创建数组必须要内存中一块 连续 的空间&#xff0c;并且数组中必须存放 相同 的数据类型。比如我们创建一个长度为10&#xff0c;数据类型为整型的数组&#xff0c;在内存中的地址是从1000开始&#xff0c;那么它在内存中的存储格式如…

【送书福利-第十期】清华社 IT BOOK 多得图书活动 ~!

大家好&#xff0c;我是洲洲&#xff0c;欢迎关注&#xff0c;一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我&#xff01; 本文目录 一、前言二、内容介绍三、抽奖方…

第一章JUC概述

文章目录 什么是JUC为什么学习好多线程很重要硬件来说软件来说存在的问题 Java多线程相关概念一把锁两个并三个程进程和程序的联系线程和进程的联系管程 用户线程和守护线程JAVA线程 什么是JUC 在 Java 5.0 提供了 java.util.concurrent &#xff08; 简称JUC &#xff09; 包…

Spring Cloud Alibaba - Sentinel源码分析

目录 一、Sentinel核心源码分析 1、Sentinel核心概念 1.1、Node之间的关系 2、Sentinel源码入口 2.1、SlotChain解析 2.2、NodeSelectorSlot解析 2.3、ClusterBuilderSlot解析 一、Sentinel核心源码分析 Sentinel是分布式系统的防御系统。以流量为切入点&#xff0c;通过…

001安装Jenkins

安装JenkinsJenkins 是一个开源自动化服务器http://www.jenkins.io/zh/doc/book/installing/#%E7%B3%BB%E7%BB%9F%E8%A6%81%E6%B1%82 docker docker run \-u root \--rm \-d \-p 8080:8080 \-p 50000:50000 \-v jenkins-data:/var/jenkins_home \-v /var/run/docker.sock:/va…

传感器融合概念及对比

1.多传感器融合的定义 传感器数据融合的定义可以概括为把分布在不同位置的多个同类或不同类传感器所提供的局部数据资源加以综合&#xff0c;采用计算机技术对其进行分析&#xff0c;消除多传感器信息之间可能存在的冗余和矛盾&#xff0c;加以互补&#xff0c;降低其不确实性…

记录好项目D2

记录好项目 你好呀&#xff0c;这里是我专门记录一下从某些地方收集起来的项目&#xff0c;对项目修改&#xff0c;进行添砖加瓦&#xff0c;变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个旅游门户网站 技术栈&#xff1a;JSPjQueryAjaxechartsSpringSpring…

第四章LockSupport与线程中断

文章目录 线程中断机制面试题什么是中断机制?实现三种中断方式通过一个volatile变量实现通过AtomicBoolean&#xff08;原子布尔型&#xff09;通过Thread类自带的中断api方法实现 API源码分析当前线程的中断标识为true&#xff0c;是不是线程就立刻停止&#xff1f;后手案例-…

Vector-常用CAN工具 - Vector Hardware Manager

本文提供了有关 Vector 用于配置 Vector 接口的新工具Vector 硬件管理器(vHardwareManager) 的一些一般信息。 常见问题 1、什么是vHardwareManager&#xff1f; 2、哪些接口支持vHardwareManager&#xff1f; 3、什么时候需要vHardwareManager&#xff1f; 4、哪里可以下…

chatgpt赋能python:Python如何截图运行效果?

Python如何截图运行效果&#xff1f; 如果你是一位有10年python编程经验的工程师&#xff0c;那么你一定知道在编写程序时调试和调整非常重要。为了更好地调试程序&#xff0c;Python提供了许多进行程序运行效果截图的方法。本文将介绍几种常用的Python截图方法以及它们的优缺…

chatgpt赋能python:Python如何截图运行结果

Python如何截图运行结果 介绍 Python是一种高级编程语言&#xff0c;非常流行。它具有许多有用的功能和库&#xff0c;使其成为许多开发人员的首选编程语言之一。但是&#xff0c;当您运行Python程序并需要与他人共享结果时&#xff0c;您可能需要截图运行结果。在本文中&…

编译3D渲染引擎Horde3D

Horde3D是Github上一款开源的轻量级3D渲染引擎&#xff0c;同时它还支持多个平台。今天我们准备在Mac平台上交叉编译至Android平台。如果需要同时能编译Sample&#xff0c;那么还需要SDL2库。默认情况下&#xff0c;编译Horde3D时不强制下载SDL2&#xff0c;你可以选择强制下载…

chatgpt赋能python:Python怎么快速入门?

Python怎么快速入门&#xff1f; Python是一种易学易用的编程语言。它被广泛应用于各种领域&#xff0c;例如数据科学、自动化、Web开发、游戏开发等等。无论你是从事什么领域&#xff0c;在Python的快速入门上花费越少的时间越好。在本文中&#xff0c;我们将介绍Python的基础…

工作二--注意!!!

1、激活单元格&#xff0c;做数据回显 2、单元格退出编辑模式时&#xff0c;让 实时保存 3、获取数据时&#xff0c;用getGIUID 给数据 唯一id&#xff0c;以防数据名重复 数据结构&#xff1a;是结合接口的id 等 和 组件的数据结构 4、父子结构 下拉框中的 :value 把value值 …

网络安全如何6个月成功上岸?

学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以后再来解…

Haproxy搭建Web高可用群集 【Keepalived+HAProxy 高可用 日志定义 内核优化】

Haproxy HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理&#xff0c;是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大&#xff08;并发达1w以上&#xff09;web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可…

Oracle 查询优化改写(第一章)

第一章 单表查询 1.查询空值 2.将空值转换为实际值 不采用nvl&#xff08;&#xff09;函数&#xff0c;而使用COALESCE函数语法为COALESCE(表达式1,表达式2,...,表达式n)&#xff0c;n>2,此表达式的功能为返回第一个不为空的表达式&#xff0c;如果都为空则返回空值。 注…

每日算法总结——回溯算法、 LeetCode 131. 分割回文串

LeetCode 131. 分割回文串 131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 什么是回溯算法&#xff1f; 回溯算法真的是解决排列问题的一大利器&#xff0c;其实很多时候自己不经意间就写出了回溯算法&#xff0c;但是一直没有一个系统的认识&#xff0c;今天做一…