代码语言:javascript复制
from imageai.Prediction import ImagePrediction#导入ImageAI相关模块用于图像预测
import os#用于文件路径处理
import cv2
#获取当前目录
execution_path=os.getcwd()
print('当前目录是%s'%(os.getcwd()))
#初始化预测器
multiple_prediction=ImagePrediction()
#设置算法模型类型为ResNet
multiple_prediction.setModelTypeAsResNet()
#设置模型文件路径
multiple_prediction.setModelPath(os.path.join(execution_path,"C:/Users/xpp/Desktop/resnet50_weights_tf_dim_ordering_tf_kernels.h5"))
#加载模型
multiple_prediction.loadModel()
'''
预测速度调节功能
prediction_speed的值可为normal(默认值)、fast、faster、fastest
但调整速度模式时,为了确保预测的准确度,最好使用具有更高精度的模型(DenseNet or InceptionV3),
或是预测图像是标志性的(明显的)
multiple_prediction.loadModel(prediction_speed="fast")
'''
#创建一个数组
all_images_array=[]
#将所有要预测的图像的路径添加至数组
all_files=os.listdir(execution_path)
for each_file in all_files:
#查找工作目录下所有“.png”以及“.jpg”格式的图像文件,并添加至图像数组
if(each_file.endswith(".jpg") or each_file.endswith(".png")):
all_images_array.append(each_file)
img=cv2.imread('C:/Users/xpp/00.png',1)
cv2.imshow('img',img) #重新输出二值化图像
'''
调用predictMultipleImages()函数。解析包含图像路径的数组并执行图像预测,
最终输出3个预测的可能结果(result_count_per_image默认值为2)
'''
results_array=multiple_prediction.predictMultipleImages
(all_images_array,result_count_per_image=3)
#分组输出预测结果
for each_result in results_array:
predictions,percentage_probabilities =
each_result["predictions"],each_result["percentage_probabilities"]
for index in range(len(predictions)):
print(predictions[index] ":" str(percentage_probabilities[index]))
print("-----------------------")
cv2.waitKey(0)
当前目录是C:Usersxpp cloak:33.81323516368866 bonnet:24.079766869544983 feather_boa:4.112274944782257 shower_cap:22.91501760482788 bonnet:18.84213536977768 wig:2.87989005446434 bonnet:24.1892009973526 mask:9.700261056423187 cloak:6.6818080842494965 -----------------------
算法:多图像预测是通过多次调用predictImage()函数或一次调用predictMultipleImages()函数的方式来进行预测。