作者:busyboxs

API 介绍

通用物体与场景识别支持超过 10 万类常见物体和场景识别,接口返回图片内 1 个或多个物体的名称,并可获取百科信息。适用于图像或视频内容分析、拍照识图等业务场景。

支持识别动物、植物、商品、建筑、风景、动漫、食材、公众人物等10万个常见物体及场景,接口返回大类及细分类的名称结果。

接口描述

该请求用于通用物体及场景识别,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的多个物体及场景标签。

请求说明

请求 url

https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general

请求参数

返回说明

返回参数

返回实例

{"log_id": "1418961236584752678","result_num": 5,"result": [{"score": 0.764778,"root": "商品-电脑办公","baike_info": {"baike_url": "http://baike.baidu.com/item/%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91/213561","image_url": "http://imgsrc.baidu.com/baike/pic/item/63d0f703918fa0ec125a44b4269759ee3c6ddbed.jpg","description": "笔记本电脑(NoteBook Computer,简称为:NoteBook),亦称笔记型、手提或膝上电脑(英语:Laptop Computer,简称为Laptop),是一种小型、可方便携带的个人电脑。笔记本电脑的重量通常重1-3千克。其发展趋势是体积越来越小,重量越来越轻,而功能却越来越强大。像Netbook,也就是俗称的上网本。笔记本电脑跟PC的主要区别在于其便携带性。"},"keyword": "笔记本电脑"},{"score": 0.526428,"root": "商品-电脑办公","keyword": "电脑"},{"score": 0.354558,"root": "商品-电脑办公","keyword": "笔记本"},{"score": 0.181704,"root": "商品-数码产品","keyword": "台式电脑"},{"score": 0.008778,"root": "商品-数码产品","keyword": "平板电脑"}]
}

接口调用实现

获取 access_token

要调用百度 AI API 的接口,需要创建对应的应用并获取 access_token.

创建应用

首先登陆百度 AI 控制台( https://console.bce.baidu.com/?fromai=1#/aip/overview ),然后点击右侧导航栏里面的 “图像识别”。

然后点击创建应用

填好“应用名称”和“应用描述”后点击“创建应用”。

创建好应用之后,进入“应用列表”,就能看到应用的相关信息,我们需要的是 API Key 和 Secret Key。

import requests
from utils import pic_base64, draw_zh, get_token_keyclass General(object):def __init__(self, image_base64, token_key, baike_num=0):self.image_base64 = image_base64self.token_key = token_keyself.baike_num = baike_numself.data = self.get_data()def get_data(self):request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general"params_d = dict()params_d['image'] = str(self.image_base64, encoding='utf-8')params_d['baike_num'] = self.baike_numaccess_token = self.token_keyrequest_url = request_url + "?access_token=" + access_tokenres = requests.post(url=request_url,data=params_d,headers={'Content-Type': 'application/x-www-form-urlencoded'})data = res.json()assert 'error_code' not in data, f'Error: {data["error_msg"]}'return datadef get_result_num(self):return self.data['result_num']def get_log_id(self):return self.data['log_id']def get_result(self):return self.data['result']def parse_data(self):result_num = self.get_result_num()result = self.get_result()res = list()for i in range(result_num):if i < self.baike_num:res.append((result[i]['keyword'], result[i]['score'], result[i]['baike_info']))else:res.append((result[i]['keyword'], result[i]['score'], None))return resdef detect(image_name, color):token_key = 'your token key'# image_name = 'images/001.png'image = cv2.imread(image_name)image_base64 = pic_base64(image_name)general = General(image_base64, token_key, 1)obj = ObjectDetect(image_base64, token_key)general_data = general.parse_data()bbox = obj.parse_data()name = general_data[0][0]score = general_data[0][1]baike = general_data[0][2]image = obj.draw_bbox(image, color)# draw_zh(image, name, bbox[0], bbox[1] - 16, color)cv2.cvtColor(image, cv2.COLOR_BGR2RGB, image)return image, name, score, baike

QT 实现界面展示

首先使用 qtdesigner 设计好界面,同时创建好按钮的槽函数,界面的设计如下图所示:

然后将 .ui 文件通过 PyUIC 转换为 .py 文件,并在生成的 .py 文件中添加槽函数的实现,具体的代码如下:

”上传图像“按钮对应的代码

def on_upload_clicked(self):self.groupBox.setVisible(False)self.pushButton.setEnabled(False)fname = QtWidgets.QFileDialog.getOpenFileName(QtWidgets.QWidget(), 'Open file', self.file_path,'Image file (*.jpg *.gif *.png)')if fname[0] != '':self.file_path = os.path.dirname(fname[0])self.imagePath = fname[0]pixmap = QtGui.QPixmap(self.imagePath)height, width = pixmap.height(), pixmap.width()if width > height:pixmapscared = pixmap.scaledToWidth(800)else:pixmapscared = pixmap.scaledToHeight(600)self.label_img.setPixmap(pixmapscared)# self.label_img.setScaledContents(True)self.detect.setEnabled(True)self.pushButton_2.setEnabled(True)

“图像识别”按钮对应的代码 ,该代码实现了图像通用物体与场景识别。

def on_recognition_clicked(self):self.isbaike.setVisible(True)str_warm = '未查到相关信息'img, name, score, baike = detect(self.imagePath, self.color)pixmap = QtGui.QPixmap(self.imagePath)height, width = pixmap.height(), pixmap.width()if width > height:pixmapscared = pixmap.scaledToWidth(800)else:pixmapscared = pixmap.scaledToHeight(600)self.label_img.setPixmap(pixmapscared)self.groupBox.setVisible(True)# self.label_img.setScaledContents(True)self.cls.setText(name)self.score.setText(str(score))self.detect.setEnabled(True)if baike:self.description.setText(baike['description'])self.baikeurl.setText(baike['baike_url'])self.picurl.setText(baike['image_url'])else:self.description.setText(str_warm)self.baikeurl.setText(str_warm)self.picurl.setText(str_warm)

“主体检测”按钮对应的代码 ,该代码实现了图像主体检测

def on_detect_clicked(self):self.groupBox.setVisible(False)self.groupBox_2.setVisible(False)self.pushButton_2.setEnabled(False)self.isbaike.setVisible(False)self.cls.setText(" ")self.score.setText(" ")img, name, score, _ = detect(self.imagePath, self.color)height, width, bytesPerComponent = img.shapebytesPerLine = bytesPerComponent * widthQimg = QtGui.QImage(img.data, width, height, bytesPerLine, QtGui.QImage.Format_RGB888)pixmap = QtGui.QPixmap.fromImage(Qimg)if width > height:pixmapscared = pixmap.scaledToWidth(800)else:pixmapscared = pixmap.scaledToHeight(600)self.label_img.setPixmap(pixmapscared)# self.label_img.setScaledContents(True)self.detect.setEnabled(False)self.pushButton.setEnabled(True)

“边框颜色”按钮对应的代码, 该代码实现了改变主体检测中主体边框的颜色

def on_choose_color(self):self.groupBox.setVisible(False)color = QtWidgets.QColorDialog.getColor()self.color = color.getRgb()[:3]from detectimage import detectimg, name, score, _ = detect(self.imagePath, self.color)height, width, bytesPerComponent = img.shapebytesPerLine = bytesPerComponent * widthQimg = QtGui.QImage(img.data, width, height, bytesPerLine, QtGui.QImage.Format_RGB888)pixmap = QtGui.QPixmap.fromImage(Qimg)if width > height:pixmapscared = pixmap.scaledToWidth(800)else:pixmapscared = pixmap.scaledToHeight(600)self.label_img.setPixmap(pixmapscared)# self.label_img.setScaledContents(True)self.cls.setText(" ")self.score.setText(" ")

实例运行效果图


代码打包

可以使用 pyinstaller 将代码打包

首先安装 pyinstaller

pip install pyinstaller
然后将代码打包

pyinstaller ruun.py
最终会在主文件下生成 dist 文件夹和 build 文件夹,可执行文件在 dist 文件夹下。

源码地址

源代码:https://github.com/busyboxs/qt-baidu-image-recognizition
可执行文件链接:https://pan.baidu.com/s/11J09VeWzl2W2pcNeHz0Ovw 提取码:tm9i
可执行文件路径 ~/BaiDuDetect/dist/ruun/ruun.exe

百度大脑通用物体识别使用攻略相关推荐

  1. 通用物体识别使用攻略

    作者:让天涯 一.需求描述 大家在出去旅游的时候,往往会对景点里的特色事物感兴趣,而一般情况下,如果没有导游的介绍,我们不太清楚这个景区里的特色景点是什么,有时候即使看到了一个事物,都不认识它,只能等 ...

  2. 详细功能描述及代码带您快速接入百度大脑通用文字识别

    作者:才能我浪费99 1.功能描述: 基于深度学习及大规模图像训练,准确识别图片中的物体.场景信息.可以应用于: 相关内容及广告推荐:对用户浏览网页中图片进行分析,识别图片内容给出相关内容推荐或广告展 ...

  3. 国航APP接入百度大脑OCR身份证识别技术,让机票购买更便捷!

    价值成果 中国国航APP通过接入百度大脑OCR身份证识别技术,实现了旅客线上自助修正错购机票信息的功能.购票信息错误的旅客只需在中国国航APP上传身份证照片,即可进行购票身份认证,并立即修正错误信息. ...

  4. Unity 接入百度AI - 通用物体和场景识别

    接口介绍: 可识别超过10万类常见物体和场景,接口返回大类及细分类的名称,并支持获取识别结果对应的百科信息:还可使用EasyDL定制训练平台,定制识别分类标签.广泛适用于图像或视频内容分析.拍照识图等 ...

  5. 百度大脑体检测与属性识别使用攻略

    作者:让天涯 一.功能介绍 对于输入的一张图片(可正常解码,且长宽比适宜),检测图像中的所有人体并返回每个人体的矩形框位置,识别人体的静态属性和行为,共支持20余种属性,包括:性别.年龄阶段.衣着(含 ...

  6. 快速接入百度大脑出租车票识别

    作者:才能我浪费99 1.功能描述: 支持识别全国各大城市出租车票的6个关键字段,包括发票号码.代码.车号.日期.时间.金额.使用出租车票识别技术,实现对发票号码.日期.时间.金额等信息的自动识别和录 ...

  7. 百度云免费SSL证书申请攻略

    免费SSL证书申请攻略 今天给大家分享如何免费申请SSL证书,我是在百度智能云申请的,就以百度云平台为例,感兴趣的可以去试试-- 如何下单免费证书 1.搜索百度智能云官网,登录右上角管理控制台. 2. ...

  8. 百度大脑地表识别使用攻略

    作者:wangwei8638 细粒度图像识别 (fine-grained image recognition),即 精细化分类 . 识别出物体的大类别(比如:花.草.狗等)较易,但比如区分月季和玫瑰, ...

  9. 百度大脑营业执照识别使用攻略

    作者:wangwei8638 OCR卡证照识别又升级了,营业执照识别支持2019最新版,效果如何先来看看. 一.平台接入 此步骤比较简单,不多阐述.可参照之前文档: https://ai.baidu. ...

  10. 百度大脑驾驶证识别使用攻略

    作者:wangwei8638 一.平台接入 此步骤比较简单,不多阐述.可参照上篇文档: https://ai.baidu.com/forum/topic/show/943028 二.分析接口文档 1. ...

最新文章

  1. 从大麦网架构学到的东西
  2. 判断图有无环_萧阳环保教你判断布袋除尘器是否合格记住这3点
  3. python 装饰器入门
  4. linux 查询 lib信息,怎么查看linux是否使用 libarchive
  5. hapi常用插件(持续更新)
  6. 1.15-1.16 sqoop action
  7. matplotlib简单使用
  8. Java内存管理(一)--内存分区
  9. 738. 单调递增的数字
  10. Object-C---gt;Swift之(十一)属性观察者
  11. 一个令你颤抖的flutter动画:Basic Animations
  12. 51CTO技术沙龙网管工具分享之工具包、PPT、视频
  13. 尾纤SC、ST、FC、LC区分
  14. t分布em参数估计matlab,参数估计的MATLAB实现.ppt
  15. C#用NPOI控件把MySQL数据库中查询符合条件的数据导出到EXCEL
  16. sourcetree添加gitignore不生效解决方案
  17. 考试行测常识判断法律知识备考误区提示
  18. 使用一键hidpi脚本二级logo变大,手动定制,支持Monterey
  19. 用Python制作可视化GUI界面,一键实现证件照背景颜色的替换
  20. android水波纹动画制作,Framer之事件 | 如何制作安卓点击水波纹效果?

热门文章

  1. oracle官网一体机,沃趣科技-最新活动-oracle一体机|沃趣oracle一体机QData
  2. 技嘉B460M小雕板win2012 R2安装网卡驱动
  3. rocketdock 打不开 有进程
  4. 使用python实现win10系统和arduino usb串口通信
  5. 网络管理员学习笔记_第三章 局域网技术与综合布线_003_局域网基础03
  6. reboot流程简述
  7. linux该专接本还是工作_专升本还是继续工作?
  8. 【逆向】【Binary Bomb Lab】二进制拆弹的解说
  9. el-upload手动上传图片并限制图片数量、大小和格式
  10. 用java制作扑克牌_JAVA入门第三季-简易扑克牌程序-个人编写-源代码(含截图)...