自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OpenCV:10特征检测

特征检测是和中的一个概念。它是指使用计算机,决定每个图像的点是否属于一个图像特征。,这些子集往往属于孤立的点、连续的曲线或者连续的区域以拼图游戏为例来说明特征检测的应用流程因此:A、B(蓝色框)不是特征 ——> 不是唯一的C、D(黑色框)不是特指 ——> 不是唯一的E、F(红色框)是特征 ——> 唯一、可追踪、能比较图像特征就是值有意义的区域,具有独特性、易于识别性。...

2022-08-04 10:32:49 999 1

原创 OpenCV:09车辆统计项目

我们不可能对整幅图进行统计,那样太乱了,也有很多噪声——我们应该画一条线,对经过这条线的车辆进行统计。如果我们有完整的静止的背景帧,那么我们可以通过帧差法来计算像素差从而获取到前景对象。——>效果是动的东西(前景)会变成白色;当运动物体有阴影时,由于阴影也在移动,情况会变得更加复杂,为此引入。我们设置一个阈值,如果某一像素面积大于这个阈值,那么就说明这是🚗。从去背景例程中,我们可以发现有很多白点(噪声),因此我们需要。但是在大多数情况下,我们可能没有这样的图像,所以我们。关键API打开摄像头。......

2022-07-24 13:49:58 2324 1

原创 OpenCV:08图像金字塔

是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效且概念简单的结构。图像金字塔最初用于和,一幅图像的金字塔是一系列以金字塔形状排列的、且的。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低高斯金字塔固定了缩放比,即如果你是800×800的图,无法缩放成500×500我们将要学习用什么方法,如何去生成这些图像金字塔。......

2022-07-24 11:03:44 1139

原创 OpenCV:07图像轮廓

图像轮廓是具有相同颜色或灰度的连续点的曲线,轮廓在和中很有用处。

2022-07-18 20:31:21 2258 1

原创 OpenCV:06阈值与形态学

morphology什么是形态学?指一系列处理图像形状特征的图像处理技术形态学的基本思想是利用一种特殊的结构元(本质上就是卷积核,该卷积核只有0和1两个数字),通过0和1来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别这些处理方法基本是对二进制图像的处理,即黑白图像卷积核决定着图像处理后的效果形态学基本操作有膨胀和腐蚀开运算闭运算顶帽黑帽通俗地说,你想要获取图像中的任何部分(噪声、图形、轮廓…)形态学都能满足,这就是它的魅力。.....................

2022-07-17 15:39:22 1279

原创 OpenCV:05滤波器

图像卷积就是卷积核在图像上按行滑动遍历像素时不断地相乘求和的过程。

2022-07-15 16:15:54 1125

原创 OpenCV:04图像的基本变换

关键API:其中:结果:结果:可以看到xy轴都缩小了一半仿射变换是图像旋转、缩放、平移的总称。具体的做法是通过一个矩阵和原图片进行坐标运算,得到新的坐标,完成变换,所以仿射变换的关键就是这个矩阵仿射变换不会改变每个像素点上的RGB色彩,只会改变像素对应的位置 ——> 我们只要找出其中对应的数学关系,就可以用一个矩阵一次性地把所有的点变过去通过仿射变换,图像可以通过一系列的几何变换来实现平移、旋转等多种操作。该变换能够保持图像的平直性和平行性。平直性是指图像经过仿射变换后,直线仍然是直线;平行性是

2022-07-07 23:01:10 1401 4

原创 OpenCV:03图像的算数运算

关键API:的规则就是两个图对应的元素相加,如果超过255(像素点的大小0-255),则全部变成255图片还可以和单个数字进行运算,如每个和100进行加法运算,超过255的数字,会被截断,相当于减法运算关键API:的规则就是两个图对应的元素相减,如果小于0(像素点的大小0-255),则全部变成0乘法关键API:乘法的规则和加法一样:两个图对应的元素相乘,如果超过255(像素点的大小0-255),则全部变成255除法关键API:除法的规则和减法一样:两个图对应的元素相除,如果小于0(像素点

2022-06-30 23:38:14 882

原创 OpenCV:02基础知识和绘制图形

最常见的色彩空间就是,人眼也是基于的色彩空间去分辨颜色的OpenCV默认使用的是,和色彩空间的区别在于图片在色彩通道上的排列顺序不同显示图片时要注意适配图片的色彩空间和显示环境的色彩空间:比如传入的图片是BGR色彩空间,显示环境是RGB色彩空间,就会出现颜色混乱的情况 OpenCV用的最多的色彩空间就是方便OpenCV做图像处理.比如根据的值就可以判断背景颜色.和差不多在顶部是纯白的, 不管是什么颜色.和的区别理解:是一种颜色编码方法。常使用在各个视频处理组件中。 在对照片或视频编码时,考虑到人类的

2022-06-29 09:51:12 864

原创 OpenCV:01图片&视频的加载显示

窗口操作:'mat’表示展示的内容,0表示什么都不展示计算按键的值读取图片用其他插件来读取(以为例)先将图片存入我们的文件夹下,命名为注意:单独调用时可以不用创建窗口,opencv会自动生成函数的封装如果我们需要频繁地显示图片,那么我们可以把显示图片的方法封装成一个函数方便我们显示图片把这个函数放在一个文件里,需要使用的话就直接导入文件即可将函数保存为文件(命名为),放在我们的文件夹中想要调用函数时,我们导入文件即可注意:导入后必须先执行文件!使用函数保存图片:使用imw

2022-06-27 19:35:06 1758

原创 OpenMV与Arduino通信—串口

所有要进行串口通信的设备,必须相连 (共地)——>因为我们进行串口通信的设备是一个具有高电平和低电平的电压信号,所以进行通讯的设备必须接地,这样才有相应的高电平和低电平产生注意:Arduino的和引脚如果外接了别的设备,那么在我们上传代码到Arduino时是一定会失败的(上传时用到了这两个引脚),所以我们上传时要要先把导线移除掉在发送数据时,为了避免打断Arduino正在进行的工作,聪明的Arduino工程师选择把串口输入的数据放入Arduino的串行数据缓冲区中,等到Arduino完成工作后,就可以检测串

2022-06-24 13:37:49 11295 9

原创 OpenMV与Arduino通信——IIC

OpenMV-CodeArduino-CodeArduino通信用到了Arduino上的库功能:初始化连接,并作为主机或者从机设备加入总线当没有填写参数时,设备会以主机模式加入总线;当填写了参数时,设备以从机模式加入总线, 可以设置为0~127 中任意地址例子功能:主设备请求从设备一个字节,这个字节可以被主设备用 read()或available()接受使用后,从机端可以使用 注册一个事件以响应主机的请求;主机可以通过 和 函数读取这些数据参数功能:发出开始传输数据的信号,设定传输数据到指定

2022-06-22 22:35:44 3694

原创 OpenMV与I2C二线串行协议

在OpenMV的底层逻辑中,I2C被定义为一个类是一个设备间传输的二线串行协议。其物理层包括两条线:,分别为时钟和数据线。 OpenMV不再为SDA和SCL提供上拉,因此SDA和SCL需要外部上拉才能使I2C工作对象创建在特定总线上。可在创建时或创建后初始化。例子:其中的两个常量打印对象可以提供关于其配置的信息发送:接收:要接收数据,先创建一个:你可以指定一个超时时长(单位:毫秒):主机必须指定接收方地址主机也有其他方法构造函数在给定总线上构建一个对象。 可为2或4。在没有其他参数

2022-06-22 22:35:27 1322

原创 OpenMV与JSON编码

如果想快速尝试两个单片机通信的。推荐使用串口传输字符串!JSON是一种简洁高效的交换数据的格式。 它可以是这种简单的:注:我通过这种简单的字符串,把OpenMV中的色块的x,y坐标发送出去。也可以是这种复杂的:在python中表示多行字符串:我使用这种结构把OpenMV采集到的颜色信息发送到wifi中的服务器中。甚至于,可以像这样:注意:json的形式和Python很像,但是json是javascript的对象表达形式,和python的表达形式稍有不同。OpenMV内置的模块允许Python对象和J

2022-06-22 22:35:01 698

原创 OpenMV:25传感器扩展板控制三个舵机

今天讲解一下如何使用OpenMV本身来控制三个舵机(借助传感器扩展板)对于OpenMV或OpenMV4而言,我们可以使用P7P8P9三个PWM引脚来通过PWM来实现对舵机的控制,对于OpenMV2而言,只能使用P7或P8来实现两个舵机的控制,我们可以通过控制PWM的占空比来控制舵机的速度,或是直接控制舵机转动到某个角度,如sevor.angle(90)控制舵机转到90°的位置关于舵机的供电,我们推荐使用四节1.2V的镍氢电池(每节电池电压为1.2V)Servo(1) -> P7 (PD12)Servo

2022-06-21 14:15:52 1687 3

原创 OpenMV:24串口接受数据

因为Arduino Uno只有一个串口,一个用来接受,就没办法发送给电脑显示了。所以我们使用软件模拟串口,来进行串口转发程序。转发逻辑是这样的:OpenMV的数据发送给Arduino Uno的软串口,Arduino的串口连接到电脑并显示结果的。所以,在ArduinoMega的逻辑就是:,然后,。与星瞳串口助手通信运行下面的程序:......

2022-06-21 14:15:44 2465

原创 OpenMV:23串口发送数据

本节讲解如何使用OpenMV通过串口来发送数据OpenMV 是可以直接通过串口发送字符串的。为什么要用串口呢?因为要时候需要把信息传给其他MCU(单片机),串口简单,通用,基本每一个MCU都会有串口。TTL串口至少需要3根线:。,,。 连线的时候,需要。图示:基本上所有单片机都有串口,因此我们可以使用OpenMV的串口来给任何其他的单片机或者是设备来传输信息如果我们需要查看OpenMV上串口的信息,我们需要额外的设备(示波器或USB转串口模块)OpenMV有一个扩展板——>串口调试扩展板,它可以直接通过这个

2022-06-21 14:15:27 11843 2

原创 OpenMV:22电机扩展板控制直流电机

今天为大家讲解下OpenMV配套的电机扩展板我们需要自己焊接插针在使用电机扩展板时,我们的电机扩展板需要外接一个6V~12V的电源,来为电机供电;电机扩展板同时会使用LDO为OpenMV进行供电对于每个电机,电机驱动芯片需要两个引脚来设置其内部H桥的方向(这个方向可以控制我们电机的正反转)同时我们需要一个额外的引脚来进行PWM的控制,这样可以进行我们电机速度的控制我们的电机扩展板使用了,,所以我们的电机拓展板和PCA9685舵机拓展板是可以同时使用的,因为他们的引脚并不冲突打开星瞳科技官网,点击产品,找到电

2022-06-20 21:26:18 1567 2

原创 OpenMV:21控制多个舵机(需要模块PCA9685)

今天我们来学习下OpenMV的舵机拓展板来控制多个舵机同时使用如果我们想控制三个以上的舵机,就需要用到舵机拓展板PCA9685PCA9685使用的是,我们可以直接使用PCA9685舵机拓展板来控制八个舵机舵机的供电采用的是,我们可以用四节~五节干电池来进行供电(一节干电池就是1.2V的电压) ——不能使用3.7V的锂离子电池供电!对于电源的供电,我们直接将电源连接到OpenMV的VCC和GND两个引脚即可将电机拓展板PCA9685插到OpenMV上,电源(4.8V~6V)连接到右侧的VCC和GND上一个

2022-06-20 20:15:27 3736 2

原创 OpenMV:20追踪其他物体的云台

和追踪小车的原理是一样的首先获得目标物体的x,y坐标,然后通过目标物体的xy坐标来控制我们云台的两个舵机的pid运动无论追踪什么物体,都是通过物体的x,y坐标来控制云台的运动,对于云台的舵机来说,它只知道传给它的是x,y坐标,并不知道OpenMV传给它的是小球的xy坐标还是人脸的xy坐标所以我们只需要修改main.py中的函数即可搜索函数:记得要,并且寻找小球的函数和寻找人脸的函数的返回值是不一样的!追踪AprilTags的云台搜索函数:追踪圆形的云台搜索函数:注意要用到,加在我们的sensor

2022-06-20 13:55:44 7562 3

原创 OpenMV:19OpenMV4 Plus训练神经网络进行口罩识别

注意: 只有可以自己训练神经网络,其他版本的性能不够本节讲解如何使用网站来自行训练神经网络模型,进而实现机器学习的功能是一个在线网站,是一个为嵌入式产品非常快速地生成嵌入式上面使用的神经网络的模型,非常地易用且快速,大概只需要5min左右就可以训练出一个OpenMV4 Plus上使用的模型机器学习有什么用? 利用机器学习我们可以知道OpenMV里面的图像是什么,比如图像里有没有人(进行人检测),或者是知道我们图像里的人是否有戴口罩(进行口罩识别),也可以利用机器学习来分辨一些其他物品和图片(是水杯还是矿泉水

2022-06-17 00:27:18 6943 2

原创 OpenMV:18数字识别

Lenet是一种卷积神经网络,可以用来识别打印的、手写的数字我们之前就有讲到过利用OpenMV的NCC模板匹配算法来进行数字识别,模板匹配需要我们实现保存需要匹配的数字或者字母的模板图片比如你要识别0、1、2、…、8、9,那么你就需要保存十张图片来进行数字识别,并且模板匹配对于模板图片的大小和角度是有一定要求的:如果我们的数字大小稍微有所变化或角度稍微有所变化,那么我们的模板图片也需要相应地更改,这也是模板匹配的一定局限性而Lenet数字识别:我们只需要提前保存Lenet数字识别的神经网络模型文件到我们Op

2022-06-17 00:26:46 7591 4

原创 OpenMV:17笑脸检测

首先在OpenMV的视野图像中找到人脸(寻找人脸用的是haar算子)然后再调用函数来进行人脸的检测,检测结束后我们在人脸的roi区域内来进行笑脸的匹配如果我们人脸中微笑的程度与我们训练好的模型近似度二者"相似"的话,那么我们认为它是一个笑脸,反之则是一个哭脸在运行代码前我们需要先将也就是我们的神经网络模型保存在我们的SD卡中,如果不进行保存,在我们运行程序时会提示无法找到此文件3.6.5及以后固件删除此例程,OpenMV4 Plus使用TensorFlow Lite替代nn库被删除了,我们只能自己去训练神经

2022-06-17 00:25:21 1081

原创 OpenMV:16神经网络

OpenMV内置了好几个有关神经网络的模型,我们可以利用它们来进行基本物体的识别以及笑脸检测,数字识别等,这一节主要讲解下利用cifar_10进行识别cifar_10是一个用于普适物体识别的数据集,"10"的意思是它可以分辨十种不同的物体,比如飞机、船、汽车、鸟、猫、狗、青蛙、路、卡车等等…cifar_10由6万张32*32的RGB彩图构成,共有10个分类,一共有5万张的训练以及1万张的测试用于交叉验证这个数据集最大的特点在于将数据集迁移到了普适的物体上,而且应用于多分类,他的一个子类数据集cifar_10

2022-06-17 00:20:23 7826 2

原创 OpenMV:15追踪其他物体的小车

其中car.py和pid.py与"追小球的小车"中一致,不需要更改需要更改的地方追踪AprilTags的小车其中car.py和pid.py与"追小球的小车"中一致,不需要更改需要更改的地方追踪模板的小车其中car.py和pid.py与"追小球的小车"中一致,不需要更改需要更改的地方.........

2022-06-14 11:58:31 1539

原创 OpenMV与PID控制

PID,就是“比例P(proportional)、I积分(integral)、D微分(derivative)”,是一种很常见的控制算法。在某些需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等),PID都会派上大用场。PID 算法因为其实现简单且效果拔群的特性,而被广泛使用,比如温度控制元件、无人机飞行姿势、机器人控制等。在控制系统理论体系中,会根据系统是否有反馈将系统分为开环系统与闭环系统,而 PID 算法是闭环系统中常用的算法,为了方便理解,这里举个具体的例子来解释开环系统与闭环系统:

2022-06-12 20:21:34 4222

原创 OpenMV:14巡线小车

“巡线小车”的原理和“追小球的小车”是差不多一样的,其中car.py和pid.py完全一样,改动的就只有主函数main.py采用的是颜色识别算法,调用的是函数采用的是线性回归算法,调用的是函数:快速线性回归,返回视野中的一条回归直线,该函数可以得到直线的斜率、角度(或者说是偏移的距离),然后我们就可以用直线返回来的角度来控制我们的小球进行运动:如果我们在OpenMV视野中看到的直线正好是竖直的,说明我们看到的是一条位于正前方的直线,那么我们就可以控制小车的两个电机转速一样,往前跑如果我们在OpenMV视

2022-06-11 22:32:37 11533 2

原创 OpenMV:13分辨不同人脸

本节分享一下使用LBP特征分辨不同的人脸。我们需要先建立自己的图像库。我们先在OpenMV的U盘(注意一定要插sd卡)中新建一个文件夹,命名为singtown,然后在singtown文件夹中再新建n个名为s1,s2,s3…sn的子文件夹,其中n为整个图像库中的人数。如下图:然后,我们可以运行以下代码来采集不同的人脸样本。注意采集时尽量让背景均匀,并且让人脸尽量充满整个画面。人脸可以微笑,不笑,正脸,歪头,戴眼镜,不戴眼镜等。可以选择每人10-20张图片。保存图像到U盘中.py拍摄结束后OpenMV U

2022-06-11 20:34:11 731

原创 OpenMV:12算法的组合使用

在同一段代码中我们可以进行多次设置sensor的像素格式,也就是说我们可以在同一段代码中多次地设置为彩图模式或者灰度图模式-RGB565彩图模式进行颜色识别+形状识别2.不同色彩模式颜色识别(彩图)+模板匹配(灰度图)......

2022-06-11 00:21:09 708

原创 OpenMV:11人眼检测和瞳孔检测

人眼检测.py瞳孔检测.py

2022-06-10 21:05:37 1936 1

原创 OpenMV:10特征点检测

特征点检测.py特征点保存在OpenMV的U盘中.py

2022-06-10 20:40:33 1403

原创 OpenMV:09扫码识别

条形码识别.py二维码识别.py

2022-06-05 13:19:50 1028

原创 OpenMV:08人脸检测

main.py跟踪人脸的云台

2022-06-05 13:18:39 1974

原创 OpenMV:07形状识别

scan.py

2022-06-05 13:16:39 7631 5

原创 OpenMV:06wifi无线图传(需要模块)

scan.py

2022-06-05 13:14:37 1680

原创 OpenMV:05AprilTags测距

AprilTags测试代码.pyAprilTags3D测距.py

2022-06-05 13:13:29 912

原创 OpenMV:04测距、测大小

测距.py测大小.py

2022-06-05 13:11:25 2956

原创 OpenMV:03追小球的小车

car.pymain.py

2022-06-05 13:09:54 1539

原创 OpenMV:02追小球的云台

pid.py(直接在网上复制即可)main.py

2022-06-05 13:09:25 1865 2

原创 OpenMV:01LCD显示屏

lcd.py

2022-06-05 13:07:49 2483 2

空空如也

空空如也

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

TA关注的人

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