栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号