自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 python单线程异步编程asyncio

asyncio是python中的一个内置库,主要用来编写单线程并发代码,它是用过协程来实现底,提供了基于事件的并发模型。

2025-03-25 10:47:59 154

原创 TCS34725颜色识别模块踩坑记录

如果买过这个模块的小伙伴就会知道,TCS34725厂家给的颜色识别例程写的就是一坨,一点都不准。这里,我来给大家提供一些思路。

2025-03-17 16:44:35 908

原创 基于Zigbee的Z-STACK组网

通过手机、平板等智能终端安装相应的控制应用程序,与 Zigbee 协调器连接,在应用程序中对已接入的设备进行命名、分组等配置操作,实现对设备的远程控制和自动化场景设置。该设备向父节点发送加入请求,父节点将请求转发给协调器(若父节点不是协调器),协调器批准后,由父节点为其分配网络地址,从而实现设备加入网络。连接网关:使用 Zigbee 协调器创建网络后,将协调器连接到家庭网络中的路由器或网关,使 Zigbee 网络与外部网络(如互联网)进行通信,以便实现远程控制等功能。初始化一个网络或者加入一个网络。

2025-03-14 16:39:58 979

原创 Darknet YOLOv3模型训练和推理

根据前两章的介绍,我们已经搭建好了需要的环境,并准备好了用来训练的数据集,接着我们将进行模型的训练。

2025-03-13 11:11:57 268

原创 关于iar烧录和串口调试时的报错及解决办法部分

像这种无法找到该文件的,一般是我们设置的路径有问题,应该把文件放在英文路径下即可解决,但如果是初始化通信失败,请检查连接和硬件,就应该查看一下仿真器连接是否正确,第二步可以试下仿真器的复位键,第三,把程序烧录到第一块板子,调试完记得按红色的❌结束调试,再打开第二块板子烧录,

2025-03-13 10:28:42 453

原创 针对rk3588环境初始化失败问题的一些解决

参考文章:https://github.com/rockchip-linux/rknn-toolkit2/issues/242他这里是RK3588S开发板rknnlite-1.4升级到1.5.2时遇到的问题,我出现这个报错信息是RK3588开发板rknnlite-1.6.0和rknnlite-2.0.0时出现的问题init_runtime()时加了target='rk3588’都会报上述错误,直接删掉就好了,至于为什么会这样我也不知道哈,如果又大佬知道还请赐教~ ~

2025-03-12 15:52:09 364

原创 IAR的安装及注册

5,点击 l accept the terms of the license agreement继续next。7,然后next,按照上边把Licenese number 和 Licenese Key复制粘贴上去,2,鼠标右键以管理员身份打开第一个可执行文件EW8051-EV-Web-8101.exe。6,来到这一步,打开 IAR kegen Parta.exe,name 自己随便去一个。11,点击 install。4,然后一直点击next。

2025-03-11 08:57:57 472

原创 Darknet YOLOv3数据及配置文件准备

上一篇我们已经安装好了环境,下面我们将介绍模型如何使用如图:train_images和val_images 存放的是我们需要训练图片的文件夹;trainImageId.txt和valImageId.txt为遍历train_images和val_images文件夹下所有图片名,形如:trainImagePath.txt和valImagePath.txt为遍历图片路径文件,形如:可以使用以下脚本生成:根据需要修改下面文件夹的路径。

2025-03-07 13:59:58 688

原创 Darknet YOLOv3模型环境构建及问题解决

先下载编译darknet工程,具体见官网 https://pjreddie.com/darknet/yolo/,可以在github上下载压缩包,这里还是推荐使用git下载进入darknet文件夹后,修改Makefile文件,根据你的电脑配置修改;如果是用的GPU训练的,就需要将GPU和CUDNN的值改为1,如果是用CPU训练的则不需要更改,修改完后运行make。

2025-03-07 10:31:03 400

原创 基于opencv的hsv色块检测

这段代码主要用来调试hsv至指定范围,对特定色块进行检测,是图像检测中非常简单的方法。自动驾驶中识别交通标志或车道线,机器人追踪特定颜色的物体、医学影像中分割病变组。织,卫星图像中提取植被或水体、检测产品颜色是否符合标准,或识别缺陷区域等等。

2025-03-06 20:30:16 381

原创 基于RKNN的嵌入式深度学习开发(2)

上一个章节我们介绍的RKNN模型的模型转换和模型的推理,这一章节我们将介绍模型的量化和评估部分。

2025-03-02 18:00:19 474

原创 基于RKNN的嵌入式深度学习开发(1)

4. 构建RKNN模型,运行在PC上,通过模拟器运行模型,需要调用 build 接口构建RKNN模型,然后可以导出RKNN模型或者初始化运行环境进行推理等操作;2. 导入非RKNN模型,如果是运行在PC上,通过模拟器运行模型时使用load_caffe、load_tensorflow 等接口导入对应的非RKNN模型。3. 导入非RKNN模型,运行在PC上,通过模拟器运行模型时使用 load_caffe、load_tensorflow 等接口导入对应的非RKNN模型;5. 导出RKNN模型。

2025-03-01 17:58:35 712

原创 WSL安装以及和VM的冲突解决

如果你安装了 VMware,又恰好版本低于16.0,VM和WSL就会冲突,让你VM直接报废,下面我将介绍如何关闭WSL的虚拟机服务。执行完上述操作后,直接重启,VM就又可以用了。此时再用wsl -l -v 则无法查到任何虚拟机状态。默认安装在C盘中,如果C盘内存不够,可以移动到其他盘。解决2:关闭WSL相关的虚拟机服务。1. 控制面板->程序和功能->启用或关闭win。2. 控制面板->程序和功能->启用或关闭win。3. 控制面板->程序和功能->启用或关闭win。虚拟机平台 的勾选。

2025-02-28 16:13:32 670 1

原创 【Python】

Pyserial是一个用于串口通信的Python库。它允许Python程序与串口设备进行通信,如传感器、控制器、嵌入式系统等。Pyserial提供了一些函数和类来实现串口通信的各种操作,如打开和关闭串口、读取和写入数据、设置串口的参数等。需要注意的是,在进行串口操作时需要确保串口设备已经连接到计算机上,并且串口的参数与程序中设置的参数一致。获取缓冲区字符数量——count = ser.inwaiting()清空缓冲区——ser.flushInput()

2024-07-12 16:50:38 651

原创 【PyQt】

通过QtDesigner创建如下图所示的界面ui,并用UIC工具转成对应的py文件。案例一代码通过线程实现点击按钮向线程传输地址,程序等待20秒后,返回结果。通过QtDesigner创建如下图所示的界面ui。案例二通过线程实现用按钮控制进度条。

2024-07-11 16:48:43 520

原创 【PyQt5】

通过将耗时的任务放在子线程中执行,可以避免阻塞UI主线程,保持用户界面的流畅性。同时,通过使用异步任务或线程池等机制,还可以实现多个耗时任务并行执行,提高应用程序的整体性能。在应用程序中,主线程负责处理用户的输入事件、更新UI元素和响应系统的回调,而耗时的任务(例如网络请求、数据库访问、图像处理等)会在子线程中执行。如果将耗时的任务放在UI主线程中执行,会导致UI线程被阻塞,用户界面无法及时响应用户的操作,造成界面卡顿、无响应的现象,降低了用户的体验。

2024-07-09 17:05:02 333

原创 【计算机视觉(11)】

像梯度计算的是图像变化的速度,一般情况下,图像的梯度计算是图像的边缘信息。如果想要得到两个方向的梯度变化的组合图,应分别进行x和y方向上的梯度运算,然后使用组合函数进行组合,这是因为直接进行image = cv.Sobel(image, cv.CV_32F, 1, 1)的效果并没有分别进行x和y方向上的梯度运算二者融合的好。为了计算梯度幅度,通常 dx 和 dy 分别设置为 1 和 0,或者 0 和 1,然后计算两个方向的梯度,最后通过组合这两个方向的梯度来得到最终的梯度幅度。ddepth: 图像的深度。

2024-06-19 17:42:44 1281

原创 【计算机视觉(10)】

方框滤波的原理是利用方框函数来对邻域内的像素值进行加权,使得离中心像素更近的像素具有更大的权重,从而使图像变得更加平滑。中值滤波的原理是利用邻域内像素值的中值来替代该像素的值,从而有效地去除图像中的椒盐噪声和其他类型的噪声。高斯滤波的原理是利用高斯函数来对邻域内的像素值进行加权,使得离中心像素更近的像素具有更大的权重,从而使图像变得更加平滑。sigmaColor:参与计算的颜色范围,这个值是像素颜色值与周围颜色值的最大差值,只有颜色值之差小于这个值时,周围的像素才进行滤波计算。

2024-06-14 17:38:15 1100

原创 【计算机视觉(9)】

腐蚀操作是通过将图像中所有的像素点与结构元素进行逻辑“与”运算,来减小图像中边缘和细节的尺寸。黑帽操作基于原始图像和经过闭操作(Closing Operation)后得到的图像,通过求差运算来突出暗的小区域。顶帽操作基于原始图像和经过开操作(Opening Operation)后得到的图像,通过求差运算来突出亮的小区域。它基于图像的形状和大小特征,通过对图像进行特定的数学运算和变换来实现对图像的分割、腐蚀、膨胀、细化等操作。开运算可以用于去除图像中的噪点和细小的干扰物,同时保持图像的整体形状和轮廓特征。

2024-06-07 17:16:09 1084

原创 【计算机视觉(8)】

它将图像的像素亮度值按照不同的亮度等级进行计数,并以直方图的形式呈现出来。图像直方图可以显示图像中每个亮度级别的像素数量,从而用于分析图像的亮度分布情况。[channels]: 用于计算直方图的通道,这里使用灰度图计算直方图,所以就直接使用第一个通道,多幅图像相当于多通道;ranges: 表示直方图中各个像素的值,[0.0, 256.0]表示直方图能表示像素值从 0.0 到 256 的像素。Mask: 与原图维度相同,被计算的区域,1 计算,0 不计算,不使用该参数用 None。

2024-06-06 17:43:01 519

原创 【计算机视觉(7)】

cv2.THRESH_BINARY:二值化阈值处理,大于阈值的像素点的灰度值设定为maxValue(如8 位灰度值最大为255),灰度值小于阈值的像素点的灰度值设定为0。阈值是图像处理中非常重要的概念,可以把阈值看作是图像的标准线,像素值与这条“标准线”进行比较,最后得到3种结果:像素值比阈值大、像素值比阈值小或像素值等于阈值。cv2.THRESH_BINARY_INV:反二值化阈值处理,大于阈值的像素点的灰度值设定为0,而小于该阈值的设定为maxValue。maxValue:阈值处理采用的最大值。

2024-06-04 17:11:26 760 2

原创 【计算机视觉(6)】

Pos1和pos2:原图4个点坐标和透视后的四个点的坐标,例如:[[0, 0], [1, 0], [0, 1],[1, 1]]。在实际的应用中最常使用的是图像的旋转,OpenCV提供了getRotationMatrix2D方法自动计算旋转图像的M矩阵。图像透视变换的本质是将图像投影到一个新的视平面,从不同的角度观察物体,会看到不同的变形画面。M:一个2行3列的矩阵,根据此矩阵的值变换原图中的像素位置,决定做哪种变换。M:一个3行3列的矩阵,根据此矩阵的值变换原图中的像素位置。

2024-05-31 17:18:57 489

原创 【计算机视觉(5)】

cv2.INTER_LINEAR:双线性插值(默认方法) ,cv2.INTER_AREA, cv2.INTER_NEAREST,cv2.INTER_CUBIC,interpolation:可选参数。在图像缩小或放大时需要删减或补充像素,该参数可以指定使用哪种算法对像素进行增减。几何变换是指改变图像的几何结构,例如大小、角度和形状等,让图像呈现出缩放、翻转、映射和透视效果。dsize:输出图像的大小,格式为(宽,高),单位为像素,例如:(640, 640)。flipCode:翻转类型,类型为整数。

2024-05-30 17:32:01 365

原创 【计算机视觉(4)】

色彩空间是人们为了表示不同频率的光线的色彩而建立的多种色彩模型。常见的色彩空间有RGB、HSV、HIS、YCrCb、YUV、GRAY,其中最常用的是RGB、HSV、GRAY。彩色图像RGB在机器中的颜色显示,是基于三基色而言的,三基色指的是红色、绿色和蓝色。

2024-05-28 17:09:34 346

原创 【计算机视觉(3)】

cv2.FONT_HERSHEY_TRIPLEX:正常大小的有衬线字体,比FONT_HERSHEY_COMPLEX更复杂。cv2.FONT_HERSHEY_DUPLEX:正常大小的无衬线字体,比FONT_HERSHEY_SIMPLEX更复杂。cv2.FONT_HERSHEY_COMPLEX_SMALL:FONT_HERSHEY_COMPLEX的小版本。cv2.FONT_HERSHEY_SCRIPT_COMPLEX:更复杂的手写风格字体。cv2.FONT_HERSHEY_PLAIN:小号无衬线字体。

2024-05-24 17:11:44 910

原创 【计算机视觉(2)】

视频是由一系列连续的图像帧组成的。每一帧都是视频中的一张静止图像,它们以非常快的速度连续播放,给人一种连续运动的感觉。视频的帧率指的是每秒钟播放的帧数,常见的帧率有24帧/秒、30帧/秒和60帧/秒等。帧率越高,视频播放越流畅。视频的处理就是通过循环将视频流中的所有的帧进行处理。对于 MJPG, FourCC 的代码作为 cv.VideoWriter_fourcc(‘M’,‘J’,‘P’,‘G’) 或。ret:bool类型,判断是否读取到帧,成功为True,否则为False。frame:读取到的帧。

2024-05-23 17:49:47 921

原创 【计算机视觉(1)】

计算机视觉是人工智能 (AI) 的一个领域,是指让计算机和系统能够从图像、视频和其他视觉输入中获取有意义的信息,并根据该信息采取行动或提供建议。如果说人工智能赋予计算机思考的能力,那么计算机视觉就是赋予发现、观察和理解的能力。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。

2024-05-21 17:46:55 396

原创 Python入门(八)

典型的面向过程语言,如C语言,有很完善的模块系统。选择环境变量,在其中添加PYTHONPATH的新变量,然后设置这个变量的值,即想要搜索的路径。为了减少代码的冗余,减轻我们的工作量,我们常常将代码分块编写,在Python中更是如此,那么我们怎么在一个新的程序文件中调用我们已经编写好程序文件的函数,我们使用import。借着import语句,我们可以在second.py中使用first.py 中定义的laugh()函数。如果你是自定义的模块,则可以放在合适的地方,然后修改PYTHONPATH这个环境变量。

2024-03-31 09:13:09 473 1

原创 Python入门(七)

栈最显著的特征是“后进先出”当我们往箱子里存放一叠书时,先存放的书在箱子底部,后存放的书放在箱子顶部。这就是“后进先出”。且函数内部使用的是自己内部的那一份,所以函数内部对info的操作不会影响到外部变量info。上面的解法使用了递归(Recursion),即在一个函数定义中,调用了这个函数自身。递归的关键是说明紧邻的两个步骤之间的衔接条件。它还会寻找函数外部,也就是 Python 的主程序(其实是.py程序模块中构成的模块)中定义了的变量。因此,在一个函数内部,我们能“看到”函数外部已经存在的变量。

2024-03-25 01:21:30 295

原创 Python入门(六)

只不过,在包裹关键字传递的时候,数据容器不再是一个元组,而是一个字典。参数名成为元素的键,而数据成为元素的值。为了提醒,参数all_arguments是包裹关键字传递所用的字典,因此在all_arguments前加**。为了提醒Python参数all_arguments是包裹位置传递所用的元组名,我们在定义package_position()时要在元组名all_arguments前加*号。注意:普通传参和关键字传参可混合使用,但需要注意的是,在混合使用的过程中,所有的位置参数需要出现在关键字参数前。

2024-03-25 00:53:07 490

原创 python入门(五)

当然,对于max()是Python中的内置函数,所以其函数文档是已经准备好的,那么对于我们自己定义的函数我们要怎么添加,我们看下一个例子:给函数square_sum加上简单的注释,然后我们使用help()函数来查询一下:结果如下:注意:通常要将文档写的尽可能详细,特别是参数和返回值。

2024-03-24 11:37:17 1129

原创 Python入门(四)

Python先检测if的条件,如果发现if的条件为假,则跳过隶属于if 的程序块,检测 elif的条件;在whil的隶属程序中,我们不断改变参与条件判断的变量i,直到它变成10,以至于还不满足条件而终止循环。进一步缩进的程序隶属于内层的if。Python与C语言、Java语言等不太相同的是,Python用缩进来表明代码的从属关系,所以缩进是强制的。但有的时候,我们只是想简单地重复特定的次数,不建立序列,可以使用range()函数。当然,C语言也可以使用缩进,但是与不缩进没有任何区别,得到的是相同的结果。

2024-03-17 23:17:15 559

原创 Python入门(三)

所以,在列表中,由于能够改变数据,就可以通过下标对单个元素进行赋值。序列中的元素是有序排列的,所以我们可以根据每个元素的位置找到对应的元素,元素的位置索引称为下标。比如下面的例子中,"tom"对应11,"sam"对应57,"lily"对应100。由于键值之间的一一对应关系,所以词典的元素可以通过键来引用。序列是有顺序的数据集合。序列包含的一个数据被称为元素,序列可以由一个或多个元素组成,也是可以没有任何元素的空序列。除此之外,序列的元素不仅可以是基本类型的数据,还可以是另一个序列,即在序列中嵌套序列。

2024-03-17 22:17:41 383

原创 python入门(二)

python的安装很方便,我们这里就不再进行讲解,大家可以自己去搜索视频。下面分享一下Python的入门知识点。

2024-03-17 00:53:00 882

原创 python入门(一)

提到编程,那么对于“封装”一词我想大家并不陌生,那么要说什么是封装,其实就是把执行特殊功能的指令打包成程序块,再给这个程序块取一个好查询的名字,方便查询调用。OpenCV自发布起便得到广泛应用,其中包括在安保以及工业检测系统,网络产品以及科研工作,医学、卫星和网络地图(例如,医学图像的降噪,街景图像或者航空图像的拼接及其扫描校准等),汽车自动驾驶,相机校正等。编程对于我的理解来说,就是人与机器的互动,人用机器明白的语言操纵机器,让机器按照人的想法来工作,达到人想要的效果。image:返回的是读取到的图像。

2024-03-11 00:54:27 976

原创 AI入门笔记(四)

对于隐藏层的神经元会用3×3(通常是5×5)的方阵去扫描输入层的数据,主动去探索其需要的偏好,再利用相似整合为一个神经单元的信号和,就得到了卷积层,卷积层再通过这个方法得到池化层,最终通过相似度得出最后的结果。实际上,在隐藏层中,有很多层,不停的卷积简化,由一个很大的输入层最后得到一个值,而通过层层卷积,这就是“深”就是深度学习,而这个结构组成的就是卷积神经网络。当输入层接收到数据后,经过卷积到隐藏层中的卷积层,卷积层简化后到池化层,最终到输入层进行输出。图像的像素为单色二值。我们以一个例题为例。

2024-03-10 23:34:03 340

原创 STM32单片机基本原理与应用(十一)

此实验采用STM32核心板+ LD3320模块,通过初始化LD3320并写入待识别关键词,对麦克风说出相应关键词,实现实训平台上的流水灯相应变化的效果。LD3320 是一颗基于非特定人语音识别 (SI-ASR:Speaker-Independent Automatic Speech Recognition)技术的语音识别/声控芯片。提供了真正的单芯片语音识别解决方案。

2024-03-10 22:31:03 1139

原创 STM32单片机基本原理与应用(十)

JPEG 是 Joint Photographic Experts Group(联合图像专家组)的缩写,文件后辍名为“.jpg” 或“.jpeg”,是最常用的图像文件格式,由一个软件开发联合会组织制定,同 BMP 格式不同, JPEG 是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤(BMP 不会,但是 BMP 占用空间大)。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP 文件所占用的空间很大,但是没有失真。

2024-03-03 23:12:59 1372

原创 AI入门笔记(三)

神经网络又是如何工作的呢?我们用一个例子来解释。我们看下面这张图片,我们要识别出这些图片都是0并不难,要怎么交给计算机,让计算机和我们得出同样的结果?难点就在于模式识别的答案不标准,正如以下几种情况都将识别为手写数字0。

2024-03-03 18:44:02 310

原创 AI入门笔记(二)

紧接着上一篇幅,点火条件的图形表示如下。利用单位阶跃函数可表示点火的式子:y=u(w1x1+w2x2+w3x3-θ)因为u表示的是单位阶跃函数,那么一般化点火的式子可以表示为:y=a(w1x1+w2x2+w3x3-θ),此处的a表示激活函数,x1、x2、x3 是模型允许的任意数值,与上面不同的是,抛出了生物的限制,y 是函数 a 能取到的任意数值,不止于取0或1,这里涉及到了神经元与神经单元的不同。神经元是基于生物上的,而神经单元是我们抽象化、简化后的神经元数学模型。

2024-02-27 18:06:14 276

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除