9.10 创建一个对象识别器

#定义一个类来处理图像提取标签
class ImageTagExtractor(object):
    def __init__(self,model_file,codebook_file):
        with open(model_file,'rb') as f:
            self.erf = pickle.load(f)
        with open(codebook_file,'rb') as f:
            self.kmeans,self.centroids = pickle.load(f)
    # 用训练好的模型来预测输出
    def predict(self,img,scaling_size):
        img = bf.resize_image(img,scaling_size)
        feature_vector = bf.BagOfWords().construct_feature(img,self.kmeans,self.centroids)
        print(self.erf.classify(feature_vector))
        image_tag = self.erf.classify(feature_vector)[0]
        return image_tag

主程序

import argparse
import pickle as pickle
import cv2
import numpy as np
from python_machine_learn.c9 import build_feature as bf
from python_machine_learn.c9.train import ERFTrainer

from sklearn.ensemble import ExtraTreesClassifier
from sklearn import preprocessing
from sklearn.cluster import KMeans
  • 在pycharm里编辑输入信息 方便调试
if __name__=='__main__':
    input_image = 'image/car_2.jpg'
    model_file = 'model/train_1.pkl'
    codebook_file = 'codebook/9_8.pkl'
    input_image = cv2.imread(input_image)

    scaling_size = 200
    print("\nOutput:", ImageTagExtractor(model_file,codebook_file).predict(input_image, scaling_size))
  • 命令行的方式
#定义一个参数解析器
def build_arg_parser():
    parser = argparse.ArgumentParser(description='Extracts features from each line and classifies the data')
    parser.add_argument('--input-image',dest='input_image',required = True,help = 'Input image to be classifed')
    parser.add_argument('--model-file',dest='model_file',required =True,help= 'Input file containing the trained model')
    parser.add_argument('--codebook-file',dest='codebook_file',required = True,help = 'Input the containing the codebook')
    return parser


if __name__=='__main__':
    args = build_arg_parser().parse_args()
    model_file = args.model_file
    codebook_file = args.codebook_file
    input_image = cv2.imread(args.input_image)

    scaling_size = 200
    print("\nOutput:", ImageTagExtractor(model_file,codebook_file).predict(input_image, scaling_size))

结果

car_2.jpg
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,224评论 1 19
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,637评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,993评论 2 59
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,239评论 2 33
  • 先说,请月嫂这个事全家开始就我一个人在坚持,包括我妈我老公在内七大姑八大姨所有人在生孩子前都认为这是浪费钱的...
    念念小七阅读 506评论 0 0