APP下载

基于机器视觉的数字识别技术研究及实现*

2019-11-29王冉孟磊

汽车实用技术 2019年22期
关键词:视频流灰度边缘

王冉,孟磊

(西安职业技术学院,陕西 西安 710077)

前言

随着城市人口的增加,学校、医院、社区、商场等人流量比较大场合,安全问题成为重点的研究方向,视频监控成为主流趋势,视频监控的关键技术之一即为物体及人体检测及识别,本文就识别技术中的图像处理、视频流处理、数字识别等关键技术加以分析和验证。

1 相关技术及软件介绍

图像识别技术主要针对获取的图片进行:(1)图片的获取(2)样本图片及非样本图片的分类(3)图片的预处理(4)特征提取(5)建立模型对图片中的目标物体(本文所列举的就是手写数字)进行识别。本文应用的软件包括Pycharm、Anaconda 等,应用到的库包括python3.6、numpy、tensorboard、tensorflow 等。

2 图片处理技术

2.1 图形绘制

图形绘制可以使用import<库名>as<库别名>,代码如下:

import cv2

import numpy as np

newtInfo=(500,500,3)

dst=np.zeros(newtInfo,np.uint8)

cv2.rectangle(dst,(50,100),(200,300),(0,0,255),-1)

cv2.circle(dst,(250,250),(50),(255,0,0),2)

cv2.ellipse(dst,(256,256),(150,100),0,0,180,(0,2 55,0),-1)

points = np.array([[150,50],[140,140],[200,170], [250,250],[150,50]])

points = points.reshape((-1,1,2))

cv2.polylines(dst,[points],True,(0,255,255),5)

cv2.imshow("tutu",dst)

cv2.waitKey(0)

绘制图形效果如图1 所示。

图1 绘制图形示例

2.2 图片边缘检测技术

边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点,本文中图片边缘检测代码如下:

import cv2

import numpy as np

img = cv2.imread("q.jpeg",1)

imgInfo = img.shape

height = imgInfo[0]

width = imgInfo[1]

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

dst = cv2.Canny(img,50,50)

cv2.imshow("dst",dst)

cv2.waitKey(0)

检测的样本图形为图2,经过处理的图形为图3。

图2 图片边缘检测原图

图3 图片边缘检测示例

3 视频流的提取及处理技术

3.1 视频流的获取

视频的获取有很多种方法,网络获取、自由拍摄,为了测试的准确性需要视频尽可能的清晰,将获取的视频再进行分解为图片,就可以获取测试所需要的样本。

3.2 视频流分解为图片

视频流分解为图片的代码如下:

import cv2

cap = cv2.VideoCapture("q.mp4")

isOpened = cap.isOpened

print(isOpened)

fps = cap.get(cv2.CAP_PROP_FPS)

width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))

height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

print(fps,width,height)

i = 0

while(isOpened):

if i == 13:

break;

else:

i = i+1

fileName = "image"+str(i)+".jpg"

print(fileName)

if flag == True:

cv2.imwrite(fileName, [cv2.IMWRITE_JPEG_QUALITY, 100])

print("end")

其运行结果即将视频分解为13 张待测试的图片,在某些情况下也需要将图片合成为视频。

4 数字识别技术

4.1 建立训练集和测试集

在做数据的训练前,应该找出测试集,MNIST 可以帮助我们完成这项任务。为了测试的速度和准确率,在识别手写数字是0~9 中的某一个数前,先设定识别数字“5”和非“5。

4.2 分类器设置

MNIST 数据集是手写0 到9 的灰度图像,输入图像数据28 * 28 的灰度图,形状是[1, 28, 28],如果图像是32*32 的彩色图,那么输入的形状是[3,32,32],因为灰度图只有一个通道,而彩色图有RGB 三个通道。

4.3 提高准确率

例如要识别数字“5”,出现以下请况(1)将数字“5”识别为数字“5”;(2)将其他数字识别为数字“5”,“3”“6”“8”这些和“5”相近的数字都有可能被识别为数字“5”;(3)将数字“5”没有识别出来,这种错误的原因就是将所有类似“5”的数字划分为非“5”。经过分析,在数字识别的过程中,尽可能的识别为真,进而再根据易混淆数字的特征进行下一级分类器的设置,进而提高分析的准确率。

5 总结

为了智能识别数字本文进行了研究和测试,为进一步研究如何统计高密度人群提供研究基础,研究教师、实验室、医院、幼儿园等的人口数量,以及外来人口检测实现智能监控及预警是我们下一步的研究工作。

猜你喜欢

视频流灰度边缘
航空滤光片阵列多光谱图像条带灰度调整算法
采用改进导重法的拓扑结构灰度单元过滤技术
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
铁路货场智能大门集装箱全景图像采集方法研究
基于视频流的图像识别技术发展与应用
一张图看懂边缘计算
基于手机APP、GIS、OLAP的移动运营商网格集中管理中心系统的设计与实现
在边缘寻找自我
走在边缘