![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
项目
文章平均质量分 84
_(*^▽^*)_
个人水平有限,如果有写错的地方,或者可以改进的地方,希望网友能够批评指正!
展开
-
树莓派视觉小车 -- OpenCV巡线(HSL色彩空间、PID)
(一)、试错试错1:形态学处理一开始用的形态学处理,自行改变阈值,调试之后,进行处理,发现效果不是太好,于是改成了HSV色彩空间。试错2:HSV色彩空间之前没注意到,HSV色彩空间很难识别白色:HSV:不难看出,如果寻白色线的话,HSV色彩空间不是一个很好的选择,下面引入HSL色彩空间:HSL:所以,如果是巡白色的话,建议用HSL色彩空间。注意:巡线小车的摄像头不能太低,如果太低了,可能让小车自己的影子会阻碍光线。...原创 2022-01-28 17:38:45 · 20109 阅读 · 19 评论 -
深度学习 -- TensorFlow(项目)验证码生成与识别(多任务学习)
目录基础理论一、生成验证码数据集1、生成验证码训练集1-0、判断文件夹是否为空1-1、创建字符集(数字、大小写英文字母)1-2、随机生成验证码(1000个,长度为4)2、生成验证码测试集代码二、获取数据(训练集、测试集)1、获取数据和标签1-1、获取训练集数据和标签(路径和标签)1-2、获取测试集数据和标签(路径和标签)1-3、数据组合(图像路径和标签)2、打乱数据3、处理每条数据4、自定义重复周期和批次大小5、处理每批数据6、获取一批原创 2021-11-02 22:28:18 · 6127 阅读 · 18 评论 -
Yolo(3)(项目)Yolo v3 目标检测(85分类)
图像被划分成3个图像:图像在多次卷积压缩后,小物体容易消失,所以我们分别用52*52、26*26、13*13的网格检测小物体、中物体、大物体。(猫是大物体,所以用13*13的网格检测)import cv2import numpy as np# 读取文件def ReadFile(): global name_list name_list = [] # 1、读取文件 with open('coco.names') as f...原创 2021-10-25 12:42:26 · 4001 阅读 · 1 评论 -
TensorFlow(9)(项目)人马图像分类(卷积神经网络)
由于是二分类,所以最后会用到sigmoid激活函数。一、准备数据# 1、准备数据from tensorflow.keras.preprocessing.image import ImageDataGenerator1、创建两个数据生成器# 1-1、创建两个数据生成器train_data_gen = ImageDataGenerator(rescale=1/255)test_data_gen = ImageDataGenerator(rescale=1/255)...原创 2021-10-06 10:24:59 · 1571 阅读 · 0 评论 -
深度学习--TensorFlow(项目)识别自己的手写数字(基于CNN卷积神经网络)
目录基础理论一、训练CNN卷积神经网络1、载入数据2、改变数据维度3、归一化4、独热编码5、搭建CNN卷积神经网络5-1、第一层:第一个卷积层5-2、第二层:第二个卷积层5-3、扁平化5-4、第三层:第一个全连接层5-5、第四层:第二个全连接层(输出层)6、编译7、训练8、保存模型代码二、识别自己的手写数字(图像)1、载入数据2、载入训练好的模型3、载入自己写的数字图片并设置大小4、转灰度图5、转黑底白字、数据归一化..原创 2021-10-15 12:23:56 · 23119 阅读 · 22 评论 -
深度学习--TensorFlow(项目)Keras手写数字识别
目录成果展示基础理论一、数据准备1、载入数据集2、数据处理2-1、归一化2-2、独热编码二、神经网络拟合1、搭建神经网络2、设置优化器、损失函数3、训练三、预测1、备份图像数据集2、预测分类3、显示结果(plt)总代码成果展示训练1次:训练30次:基础理论本次手写数字识别,采用的是MNIST数据集。http://yann.lecun.com/exdb/mnist/这里输出层用到了softma...原创 2021-10-11 21:31:55 · 2003 阅读 · 1 评论 -
树莓派视觉小车 -- 小球追踪(颜色追踪)(OpenCV色彩空间HSV)
目录基础理论(HSV)为什么用HSV空间而不是RGB空间?HSV1、Hue(色相)2、Value(明度)3、Saturation(饱和度)效果展示一、初始化滑动条初始化1、创建回调函数2、窗口设置(名称)3、滑动条设置代码二、运动函数三、舵机控制四、在HSV空间下获取二值图1、获取滑动条的值2、转HSV(三通道:H、S、V)3、转二值图(单通道阈值处理)4、结合HSV三个通道,得到最终二值图代码五、图像处理(总)..原创 2021-09-21 00:06:18 · 25756 阅读 · 22 评论 -
树莓派视觉小车 -- 物体跟踪(OpenCV)
一、物体跟踪效果展示原创 2021-09-16 22:54:01 · 16933 阅读 · 13 评论 -
OpenCV(项目)车牌识别4 -- 总结篇
目录一、效果1、成功案例2、经典失败案例(单字符识别成类似字符)3、其他失败案例二、总结三、车牌识别总代码一、效果1、成功案例2、经典失败案例(单字符识别成类似字符)3、其他失败案例二、总结前面字符提取比较成功的,大多数的识别都没太大问题,但是字符提取不到位,后面的识别工作自然也很难进行。这次的测试失败有很多都是前面的工作没有做好,尤其是第一步的车牌提取,个人感觉车牌提取是本次项目最困难的...原创 2021-09-06 11:25:12 · 5575 阅读 · 4 评论 -
OpenCV(项目)车牌识别3 -- 模板匹配
目录一、基础理论1、思想2、大致过程二、详细过程1、首先需要模板库2、得到模板3、原图限定大小4、模板匹配5、匹配所有子文件夹,保存最佳得分(最匹配项)三、大致过程(细分类,节省时间)1、汉字匹配2、英文字符匹配3、数字/英文匹配4、显示模板匹配总代码车牌识别总代码及效果成功案例经典失败案例(单字符识别成类似字符)其他失败案例参考资料一、基础理论1、思想把提取到的每一张字符,和模板库中的所有字符进行对比。..原创 2021-09-06 11:19:32 · 9381 阅读 · 4 评论 -
OpenCV(项目)车牌识别2 -- 车牌字符分割(直方图)
一、车牌字符提取需要把字符揉成一团,这样才能提取轮廓。0、试错一开始采取的是膨胀提取车牌字符,发现很多情况无法兼顾。0-1、没有膨胀/膨胀过小:无法连接上单个字符。可以看到,一些没有连接上的汉字,轮廓提取就把它们当成了多个字符。0-2、膨胀过大:错误连接相邻字符。给予膨胀之后,膨胀又太大了,虽然同一个字符的不同笔画连接成功,但是又错误地把两个字符连接在了一起。上面的算法感觉很难行得通了,除非借助其他分割算法。下面是优化...原创 2021-09-03 17:29:11 · 10666 阅读 · 0 评论 -
OpenCV(项目)车牌识别1 -- 车牌提取(形态学)
一、车牌提取1、读取图片,转灰度图# 1、读取图片,转灰度图 img = cv.imread('Resource/car.jpg') gray = cv.cvtColor(img, cv.COLOR_RGB2GRAY) cv.imshow('gray', gray)2、提取轮廓(Sobel算子提取y方向边缘)为什么对Y方向取边缘:让图像变“瘦”,便于把车牌揉成一团。# 2、提取轮廓(Sobel算子提取y方向) y = cv.Sob...原创 2021-09-02 21:10:43 · 17562 阅读 · 6 评论 -
数据结构与算法(6-5)二叉树的应用--哈夫曼树与哈夫曼编码
目录哈夫曼编码(最优二叉树)优势:缩短电文长度思想:过程:图解实现过程:总代码哈夫曼编码(最优二叉树)一、优势:缩短电文长度二、思想:获取每个字符出现的频率,用一个大小为[256]的数组保存(因为ASCII码是256个),最后作为每个字符的权重。权重越大,意味着出现频率越大,希望它的码长越短,这样总体电文最小。最后把这些字符(不重复部分)、权重依次放入结点中,把这些结点作为一个个元素,从小到大依次组成哈夫曼树。三、过程:先统...原创 2021-08-02 15:39:48 · 1029 阅读 · 0 评论 -
数据结构与算法(3-1)栈(顺序栈、两栈共享空间、链栈、栈的计算器)
目录一、顺序栈存储结构总代码二、两栈共享空间存储结构:总代码:三、链栈存储结构:总代码:一、顺序栈存储结构:栈:先进后出,后进先出。(特殊的线性表)入栈时在栈顶添加元素,出栈时在栈顶删除元素。(无论进出都始终在栈顶进行操作)总代码://顺序栈//先进先出,入栈时在栈顶加入元素,出栈时在栈顶删除元素(主要是s.top标志移动即可)#include <stdio.h>#define MAXSIZE 3int i =...原创 2021-08-01 16:38:25 · 392 阅读 · 0 评论 -
OpenCV(项目)二维码识别(二维码、条形码)
一、检测图片中的二维码/条形码# 检测图像中的码(解码)def Read_Decode_Pic(): img = cv2.imread('Resource/qrcode.jpg') # 遍历解码 for code in decode(img): print("条形码/二维码:", code) print("条形码/二维码数据:", code.data.decode('utf-8')) #解码数据注:要解码数据的话,必须在for循环..原创 2021-08-23 17:00:47 · 14666 阅读 · 0 评论 -
OpenCV(项目)人脸检测(图片、摄像头)
一、基础理论我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像〈不含面部的图像)来训练分类器。我们需要从其中提取特征。下图中的 Haar特征会被使用,就像我们的卷积核,每一个特征是一个值,这个值等于黑色矩形中的像素值之和减去白色矩形中的像素值之和。1、Haar分类算法Haar特征:(核)(切片)Haar特征值反映了图像的灰度变化情况。例如︰脸部的一些特征能由矩形特征简单的描述,眼睛要比脸颊颜色要深,鼻...原创 2021-08-22 18:41:17 · 59029 阅读 · 5 评论