对YOLOv3模型调用时候的python接口详解
作者:NcepuKZH 发布时间:2023-05-31 00:58:57
标签:YOLOv3,python
需要注意的是:更改完源程序.c文件,需要对整个项目重新编译、make install,对已经生成的文件进行更新,类似于之前VS中在一个类中增加新函数重新编译封装dll,而python接口的调用主要使用的是libdarknet.so文件,其余在配置文件中的修改不必重新进行编译安装。
之前训练好的模型,在模型调用的时候,总是在
lib = CDLL("/home/*****/*******/darknet/libdarknet.so", RTLD_GLOBAL)这里读不到darknet编译生成的.so文件,导致直接的报错;之前以为是文件路径的问题,稀里糊涂的;由于很久不写c文件了,所以最后直接在python接口后在py文件中修改的画框、标置信度等操作,一次次的尝试后终于成功
(1)将项目中python文件下的darknet.py文件拷贝到根目录,和/libdarknet.so在同一个目录下
(2)整个demo程序都是用绝对路径;
实现yolov3模型加载,批量读取文件夹下的照片到库函数变量,最终处理结果存入在另外新建文件夹
###2019.04.03 by ylxb
def showPicResult(image,peoplecar,outimage):
img = cv2.imread(image)
out_img =outimage
cv2.imwrite(out_img, img)
for i in range(len(peoplecar)):
x1=peoplecar[i][2][0]-peoplecar[i][2][2]/2
y1=peoplecar[i][2][1]-peoplecar[i][2][3]/2
x2=peoplecar[i][2][0]+peoplecar[i][2][2]/2
y2=peoplecar[i][2][1]+peoplecar[i][2][3]/2
im = cv2.imread(out_img)
cv2.rectangle(im,(int(x1),int(y1)),(int(x2),int(y2)),(255,255,0),3)
text = listpeoplecar[i][0]
# 在图片上添加文字信息
if(text=="people"):
carcol=(55, 55, 255)#颜色显示
else:
carcol = (255, 55, 55)
cv2.putText(im, text, (int(x1), int(y1)), cv2.FONT_HERSHEY_SIMPLEX,
0.8, carcol, 1, cv2.LINE_AA)
#This is a method that works well.
cv2.imwrite(out_img, im)
###2019.04.03 by ylxb
filenames = os.listdir(picDir)
i = 0
num = 0#目标个数
car_num = 0#car个数
people_num = 0#people个数
car = "car" # car元素
people = "people" # people元素
for name in filenames:
filename=os.path.join(picDir,name)
#print(filename)
listpeoplecar = detect(net, meta, filename)
print(listpeoplecar)
i = i + 1
#save_picpath = out_img+str(filename).split("/")[-1].split(".")[0] + ".png"
out_img=out_img1+str(i)+'.png'
showPicResult(filename,listpeoplecar,out_img)
for item in listpeoplecar:
#print(item)
car_num = car_num + item[0].count(car)#car个数
people_num = people_num + item[0].count(people)#people个数
num = num + 1#目标个数
print('car个数: ' + str(car_num))
print('people个数: ' + str(people_num))
print('共检测出目标个数: ' + str(num))
print('共检测照片个数:'+ str(i))
放其中一个照片测试照片:
来源:https://blog.csdn.net/NcepuKZH/article/details/89151858
0
投稿
猜你喜欢
- 我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图。下面以识别图片中的行人,并绘制热力图为例进
- 每天不同时间段通过微信发消息提醒女友简介有时候,你很想关心她,但是你太忙了,以至于她一直抱怨,觉得你不够关心她。你暗自下决心,下次一定要准时
- 1、PIL介绍以及图片分割Python 3 安装: pip3 install Pillow1.1 image 模块Image模块
- 一、网络请求在uni中可以调用uni.request方法进行请求网络请求需要注意的是:在小程序中网络相关的 API 在使用前需要配置域名白名
- 1、 下载MYSQL5.1.48源码,CMAKE,VS2008 2、 安装CMAKE和VS2008,解压MYSQL5.1.48到D:\mys
- 根据微软论坛作者的英文解释,.NET framework 4.0 安装失败回滚貌似是因为“msvcr100_clr0400.d
- 1.通过pip安装python第三方模块paramikopip install paramiko2.创建脚本##导入paramiko、tim
- 许多网站缺乏针对性和友好的导航设计,难以找到连接到相关网页的路径,也没有提供有助于让访客/用户找到所需信息的帮助,用户体验非常糟糕。本期薯片
- 这个格式是我自创的,经常有人问我为什么,这里做个简单总结:1、分类,一个模块或者同类功能定义为一类定义,每类定义之间用段落隔开。2、分级,每
- 1. 引入messages模块from django.contrib import messages2. 把messages写入view中@
- 一、引入方式from itertools import cycle二、使用方法我们先来看看它的源码cycle它接收一个可迭代对象,可以将一个
- 代码如下:ALTER proc [dbo].[sp_common_paypal_AddInfo] ( @paypalsql va
- 通过exec可以执行动态Python代码,类似Javascript的eval功能;而Python中的eval函数可以计算Python表达式,
- 如下所示:import timedef date_compare(item1, item2): t1 = time.mktime(time.
- 实例如下:#!/usr/bin/env python# -*- coding: utf-8 -*-import socket#创建一个soc
- python openvc 裁剪图片下面是4个坐标代码:import cv2#裁剪图片路径input_path,四个裁剪坐标为:y1,y2,
- 按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2)
- 在现代的 web 框架里面,基本都有实现了依赖注入的功能,可以让我们很方便地对应用的依赖进行管理,同时免去在各个地方 new 对象的麻烦。比
- 如何让我的网页自动适应客户端的屏幕分辨率?然后用下列办法进行自动推送:<% @language="vbscript
- 0.配置依赖环境,如果不进行这步可能会出现一些问题中间可能有多余空格,去除下再运行,一般都能安装成功,如果不能可以先更新下sudo apt-