多语言展示
当前在线:958今日阅读:91今日分享:37

在pycharm上完成基于opencv的图片目标识别

下面简单介绍实现过程。下面这个链接是模型和库安装包 百度云链接:https://pan.baidu.com/s/1ua9WSJgXdmmcLloW0saoQg 提取码:yhib
工具/原料
1

python 3.7

2

pycharm

3

电脑

代码第2行到第4行:

首先建立好一个python工程,引入本项目需要的库。 如果numpy库没有,在命令提示符中键入 pip install numpyopencv库一样,键入 pip install opencv opencv库安装失败的话,我的百度云盘中有opencv的安装包,在命令提示符中键入 pip install “后接安装包的文件目录”之后安装包会自动安装完毕。END

代码第7行到第16行:

库 无误地载入完毕后,之后的代码的python强大的解析器,意思就是一种对应关系。如:  ap.add_argument('-i', '--image',default='D:/images/example_13.jpg')意思就是之后代码中的“image”就相当于'D:/images/example_13.jpg'图片地址。  ap.add_argument('-c', '--confidence', type=float, default=0.1,)意思就是之后代码中的'confidence'就相当于浮点型的 0.1END

代码第18行到第23行:

是CLASS类别,里面写入的就是之后目标输出的类别,飞机,自行车之类。注:这些类别的顺序不要更改,顺序后之后的输出有对应关系。  颜色随机生成。END

代码第26行到第35行:神经网络的输入和输出

代码第26行到第35行:神经网络的输入和输出 net = cv2.dnn.readNetFromCaffe(args['prototxt'], args['model'])在opencv3.3版本之后,库里自带了一个用于训练的DNN(深度神经网络)用于训练的模型prototxt和model 在我百度云连接中有,下载,在代码解析器处键入自己的连接就可以啦。 image = cv2.imread(args['image'])输入需要目标识别的图片 blob = cv2.dnn.blobFromImage该函数是从图片中提取二进制像素数据,存放在blob 变量中,用于后面神经网络输入。 detections = net.forward()detections 存储着DNN的输出信息。END

详细讲解一下 detections变量

详细讲解一下 detections里面有什么,怎么提取数据。detections数组的构成,存储了可疑的几个被检出出来的东西,这些可疑的东西是组成了数,这些数组中从第二位开始是有效数据,第二个数据是标签,对应class里面的物体名第三个是可信度,可信度越高,越准确第四个到第七个数据是这个物体在图片中的位置 所以detections[0, 0, 1, 1] 为第一个可疑目标的标签       detections[0, 0, 1, 2] 为第一个可疑目标的置信度       detections[0, 0, 1, 3:7] 为第一个可疑目标的在图片中的位置,起点的 x y坐标,终点的x y坐标END

代码第41行到第57行:判断可疑目标的置信度

for i in np.arange(0, detections.shape[2]):进行循环的开始,detections.shape[2]变量是有几个可疑目标循环检测置信度是否超过设定的阈值args['confidence']超过就框处目标物。 confidence = detections[0, 0, i, 2] 提取置信度idx = int(detections[0, 0, i, 1]) 提取标签box = detections[0, 0, i, 3:7]提取位置信息 cv2.rectangle  在目标物上绘制方框cv2.putText 在方框上放置文字说明END

最后的结果展示
注意事项

图片路径和模型路径一定要写对,路径中不能有中文字符

推荐信息