ImageAI续-DeepStack(二) 使用Python快速简单实现物体检测

一. 简介

DeepStack的简介及安装运行准备等
参见第一篇文章:
ImageAI续-DeepStack(一) 使用Python快速简单实现人脸检测、人脸匹配、人脸比较

二. 物体检测

1. 启动

上一篇人脸识别 使用了VISION-FACE功能 这一次物体检测需要VISION-DETECTION

#linux
docker run -e VISION-DETECTION=True -e MODE=High -v localstorage:/datastore -p 8080:5000 deepquestai/deepstack

#windows
deepstack --VISION-DETECTION True --PORT 8080

2. 运行

2.1 通过url调用
import requests
from PIL import Image
import matplotlib.pyplot as plt
import cv2

def useUrl():
    host = "http://192.168.0.101:8080"
    # 加载待测图片
    image_data = open("1.jpg","rb").read()
    img = cv2.imread("1.jpg")
    
    # 调用 http://192.168.0.101:8080/v1/vision/detection 检测图片内物体
    response = requests.post(host+"/v1/vision/detection",files={"image":image_data}).json()
    # 将检测结果在图片内框出标注
    font = cv2.FONT_HERSHEY_SIMPLEX
    for obj in response["predictions"]:
        print(obj)
        conf = obj["confidence"]*100
        label = obj["label"]
        y_max = int(obj["y_max"])
        y_min = int(obj["y_min"])
        x_max = int(obj["x_max"])
        x_min = int(obj["x_min"])
        pt1 = (x_min,y_min)
        pt2 = (x_max,y_max)
        cv2.rectangle(img,pt1,pt2,(255,0,0),2)
        cv2.putText(img,'{} {:.2f}'.format(label,conf),(x_min,y_min-15),font,1,(255,0,0),4)
    plt.imshow(img)
    plt.axis('off')
    plt.show()

请添加图片描述
请添加图片描述

2.1 通过python sdk调用
from deepstack_sdk import ServerConfig, Detection
def pythonsdk():
    config = ServerConfig("http://192.168.0.101:8080")
    detection = Detection(config)
    
    ##检测图片中物体
    response=detection.detectObject("2.jpg",output="2_output.jpg")
    for obj in response:
        print("Name: {}, Confidence: {}, x_min: {}, y_min: {}, x_max: {}, y_max: {}".format(obj.label, obj.confidence, obj.x_min, obj.y_min, obj.x_max, obj.y_max))

请添加图片描述

Name: person, Confidence: 0.5288314, x_min: 195, y_min: 220, x_max: 464, y_max: 816
Name: horse, Confidence: 0.5871692, x_min: 135, y_min: 220, x_max: 475, y_max: 821
Name: dog, Confidence: 0.9199933, x_min: 105, y_min: 496, x_max: 350, y_max: 819

请添加图片描述
当前支持检测的物体类型

person, bicycle, car, motorcycle, airplane,
bus, train, truck, boat, traffic light, fire hydrant, stop_sign,
parking meter, bench, bird, cat, dog, horse, sheep, cow, elephant,
bear, zebra, giraffe, backpack, umbrella, handbag, tie, suitcase,
frisbee, skis, snowboard, sports ball, kite, baseball bat, baseball glove,
skateboard, surfboard, tennis racket, bottle, wine glass, cup, fork,
knife, spoon, bowl, banana, apple, sandwich, orange, broccoli, carrot,
hot dog, pizza, donot, cake, chair, couch, potted plant, bed, dining table,
toilet, tv, laptop, mouse, remote, keyboard, cell phone, microwave,
oven, toaster, sink, refrigerator, book, clock, vase, scissors, teddy bear,
hair dryer, toothbrush.

完整代码

import requests
from PIL import Image
import matplotlib.pyplot as plt
import cv2

def useUrl():
    host = "http://192.168.0.101:8080"
    image_data = open("1.jpg","rb").read()
    img = cv2.imread("1.jpg")
    
    response = requests.post(host+"/v1/vision/detection",files={"image":image_data}).json()
    font = cv2.FONT_HERSHEY_SIMPLEX
    for obj in response["predictions"]:
        print(obj)
        conf = obj["confidence"]*100
        label = obj["label"]
        y_max = int(obj["y_max"])
        y_min = int(obj["y_min"])
        x_max = int(obj["x_max"])
        x_min = int(obj["x_min"])
        pt1 = (x_min,y_min)
        pt2 = (x_max,y_max)
        cv2.rectangle(img,pt1,pt2,(255,0,0),2)
        cv2.putText(img,'{} {:.2f}'.format(label,conf),(x_min,y_min-15),font,1,(255,0,0),4)
    plt.imshow(img)
    plt.axis('off')
    plt.show()
        
    
    
from deepstack_sdk import ServerConfig, Detection
def pythonsdk():
    config = ServerConfig("http://192.168.0.101:8080")
    detection = Detection(config)
    
    ##检测图片中物体
    response=detection.detectObject("2.jpg",output="2_output.jpg")
    for obj in response:
        print("Name: {}, Confidence: {}, x_min: {}, y_min: {}, x_max: {}, y_max: {}".format(obj.label, obj.confidence, obj.x_min, obj.y_min, obj.x_max, obj.y_max))

    

    
useUrl()
pythonsdk()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值