edgeboardFZ3A相关问题
FZ3A
Q:在程序make阶段,出现了串口库库文件缺失导致的函数定义未被实现的报错:
A:安装相关串口库,以下是相关文件
libserial-dev_1.0.0-4_arm64.deb
libserial1_1.0.0-4_arm64.deb
gcc-10-base_10-20200411-0ubuntu1_arm64.deb
libgcc-s1_10-20200411-0ubuntu1_arm64.deb
libc6_2.27-3ubuntu1_arm64.deb
libgccjit-7-dev_7.5.0-6ubuntu2_arm64.deb
gcc-7-base_7.5.0-6ubuntu2_arm64.deb
libgcc-7-dev_7.5.0-6ubuntu2_arm64.deb
libasan4_7.5.0-6ubuntu2_arm64.deb
libubsan0_7.5.0-6ubuntu2_arm64.deb
以上文件存在依赖关系,顺序已经忘了,请自行尝试。
并修改CMakeList.txt文件,加入:
set(SERIAL_LIBRARY “/usr/li ...
Predict.py的编写
你需要注意的是:
此文章仅为ChatGpt的回答,是本人用于理解paddle相应模块而CV过来的,并不一定具有实际效益
一种可行的Predict.py
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182import argparseimport osimport cv2import numpy as npimport paddlefrom paddle.vision.transforms import Compose, Normalizefrom paddledet.utils.logger import setup_loggerfrom paddledet.models.detectors import YOLOv3from paddledet.datasets.builder import build_datasetf ...
Paddle环境搭建
此文章以python的搭建为例
一、安装Anaconda
https://www.anaconda.com
注意勾选All User
这里最好是勾选第一个选项,其目的是将anaconda添加到系统变量中,这样我们可以直接通过cmd调用conda,更加方便
然后你就可以使用anaconda来设置不同的环境
比如这里我们建一个专门用于Paddle的环境(控制台输入)
conda create -n PaddleDetection python==3.7创建PaddleDetection环境,并要求其为python3.7版本
conda activate PaddleDetection进入所创建的PaddleDetection环境中

当目录左侧有(xxxxx)显示时,就表明你已进入该环境,可以基于该环境进行操作,pip install / pip uninstall的操作也只会影响该环境
注意:当左侧显示(base)时,这是默认环境
二、安装CUDA
你的显卡必须是NVDIA显卡!!!
你可 ...
百度Paddle模型训练
注意:本说明并没有详细谈及各参数的调整
对于多卡训练,只需要将python tools/trainxxxx改为:
python -m paddle.distributed.launch --selected_gpus 0,1,2,3 tools/trainxxxxxx
其中0,1,2,3参数是因为有4张卡,若是两张卡训练,此处应写0,1
你可以通过nvidia-smi查询显卡数量
以百度飞浆推出的PaddleDetection目标检测开发套件为例
项目架构
这是其Github项目文件
我们将要用到的基本架构如下:
对于数据集
其中,car_train是我们自己的数据集,这里的数据集格式为VOC
JPEGImages存放所有数据集图片,Annotations中存放所有标注文件
你可以通过labelimg软件进行数据的标注
当我们有了这样的数据集后,就可以准备进行模型训练了
模型训练前的准备
我们这里使用的是yolov3模型,你可以在克隆下来的PaddleDetection的:PaddleDetection/configs/中找到它
但是可以发现,在这些yml中,没有我们 ...
GMD09601-0.96OLED显示屏
GMD09601-0.96OLED显示屏
驱动芯片:SSD1306
支持接口:SPI/IIC
分辨率:128*64
接口定义
GND:电源地
VDD:电源正(3.3V ~ 5V)
SCK:时钟线
SDA:数据线
RES:复位线
DC:数据/命令
CS:片选
对于096 OLED屏幕接线
F207
GND 电源地
VCC 电源正(3.3~5V)
D0(SCL) SCK管脚
D1(SDA) MOSI管脚
RES(RST) 用来复位(低电平复位)
DC(D/C) 数据和命令控制管脚 1表示数据 0表示命令
CS(NSS) 片选管脚
1234567GND -> GNDVCC -> 3V3D0 -> PA5D1 -> PA7RES -> PA4DC -> PA6CS -> NONE
【LeetCode 1617】统计子树中城市之间最大距离
题目描述
给你 n 个城市,编号为从 1 到 n 。同时给你一个大小为 n-1 的数组 edges ,其中 edges[i] = [ui, vi] 表示城市 ui 和 vi 之间有一条双向边。题目保证任意城市之间只有唯一的一条路径。换句话说,所有城市形成了一棵 树 。
一棵 子树 是城市的一个子集,且子集中任意城市之间可以通过子集中的其他城市和边到达。两个子树被认为不一样的条件是至少有一个城市在其中一棵子树中存在,但在另一棵子树中不存在。
对于 d 从 1 到 n-1 ,请你找到城市间 最大距离 恰好为 d 的所有子树数目。
请你返回一个大小为 n-1 的数组,其中第 d 个元素(下标从 1 开始)是城市间 最大距离 恰好等于 d 的子树数目。
请注意,两个城市间距离定义为它们之间需要经过的边的数目。
示例 1:
输入:n = 4, edges = [[1,2],[2,3],[2,4]]
输出:[3,4,0]
解释:
子树 {1,2}, {2,3} 和 {2,4} 最大距离都是 1 。
子树 {1,2,3}, {1,2,4}, {2,3,4} 和 {1,2,3,4} 最大距离都为 2 ...
C语言学习相关
函数递归
函数递归,简单的理解就是,自己调用自己,直到遇到边界条件,停止递归
比如我们想实现一个阶乘函数
12345678910111213141516171819202122232425262728int n = 5;//求n! 这里是5!//不使用递归,一种可行的做法是这样int ans = 1;for (int i = 1; i <= n; i++) { ans *= i;}printf("%d! = %d", n, ans);//使用递归int _n(int x) { if (x == 0)return 1; return x * _n(x - 1);}printf("%d! = %d", n, _n(n));/*对于 _n(5),我们拆分一下它自己调用自己的过程↓_n(5) 5 * _n(4) 4 * _n(3) 3 * _n(2) 2 * _n(1) 1 * _n(0) 1达到边界,返回值为:5*4*3*2*1*1的 结果 (是,结果,不是 ...
STM32阵列按键
阵列按键
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182uint8_t Key_GetNum(void) { uint8_t keyNum = 0; /* 在Key_init()中 设置所有行为高电平,列为输入下拉模式(IPD) GPIO_SetBits(GPIOB, Key_ROW1 | Key_ROW2 | Key_ROW3 | Key_ROW4); GPIO_ResetBits(GPIOA, Key_Pin_A_All); GPIO_ResetBits(GPIOC, Key_Pin_C_All); */ GPIO_SetBits(GPIOB, Key_ROW4); GPIO_ResetBits(GPIOB, Key_ROW1); if (GP ...
CH32(F10X F20X)
对于WCH-link的接线
F103
1234567U -> 板上SWD区域Rx -> PA9(Tx)Tx -> PA10(Rx)GND -> GND3V3 -> VCCSWDIO-> PA13SWDLK-> PA14
F207
1234567U -> 板上SWD区域Rx -> TXDTx -> RXDGND -> GND3V3 -> VDDSWDIO -> SWIOSWDLK -> SWCK
对于096 OLED屏幕接线
F207
GND 电源地
VCC 电源正(3.3~5V)
D0(SCL) SCK管脚
D1(SDA) MOSI管脚
RES(RST) 用来复位(低电平复位)
DC(D/C) 数据和命令控制管脚 1表示数据 0表示命令
CS(NSS) 片选管脚
1234567GND -> GNDVCC -> 3V3D0 -> PA5D1 -> PA7RES -> PA4DC -> PA6CS -> NONE
最短路
最短的求解一般会遇到多种情况
有向无环图
权值为正
权值有负
有向有环图
权值为正
权值有负
负权边和负权环 Bellmon-Ford
权值非负的有向或无向图 Dijkstra
Dijkstra
Dijkstra本质上是一种贪心算法,通过不断调整每个点的“当前距离”最终得到最优结果
这种不断调整的过程,维基百科上面称为**“relax"(松弛)**
算法流程
对于求一点s到其他所有点的最短距离
对于每个点v均维护一个当前距离(dis[v])和 是否访问过(vis[v])。首先将dis[s]初始化为无穷,所有点访问状态(vis)置为未访问
对于一条边u->v,其边权为weight[u->v],我们存储在了v.first中(v为G[u]中的一个邻接点)
从所有未访问的点中,找出当前距离最小的,设为u,并将其标记为已访问的。
调整u的所有边(若是有向图则为出边)连接的并且未被访问过的点:
若weight[u->v] + dis[u] < dis[v], 则将dis[v]更新为dis[u]+weight[u->v],体现 ...