AI训练营第四天——车辆损伤鉴定

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 阿里云python SDK ,通过阿里云视觉解决生活中车辆损伤如何判定

服务端

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkobjectdet.request.v20191230.RecognizeVehicleDamageRequest import RecognizeVehicleDamageRequest
import json
import oss2


class req(object):
    def __init__(self):

        self.info = open('myinfo.json','r')
        self._json = json.load(self.info)
        self.info.close()

    def push_img(self):

        auth = oss2.Auth(self._json['accesskey'], self._json['secret'])
        bucket = oss2.Bucket(auth,'http://oss-cn-shanghai.aliyuncs.com','current-cloud-oss')
        bucket.create_bucket(oss2.models.BUCKET_ACL_PRIVATE)

        try:
            bucket.delete_object('car/car.jpg')
            bucket.put_object_from_file('car/car.jpg', 'car.jpg')
        except Exception as e:
            print(e)
            exit(-1)

    def ApiFindDamage(self, url):

        client = AcsClient(self._json['accesskey'], self._json['secret'], 'cn-shanghai')

        request = RecognizeVehicleDamageRequest()
        request.set_accept_format('json')
        request.set_ImageURL(url)
        self.response = client.do_action_with_exception(request)
        # python2:  print(response)
        return str(self.response, encoding='utf-8')

    def get_url(self):
        from viapi.fileutils import FileUtils
        file_utils = FileUtils(self._json['accesskey'], self._json['secret'])
        oss_url = file_utils.get_oss_url("http://xxx.oss-shanghai.jpg", "jpg", False)
        return oss_url

其中包括了连接oss,上传本地图片,生成oss链接,调用API实现对图片的鉴定。
视图

# from PySide2.QtWidgets import QDialog, QLabel, QGroupBox, QTextEdit, QPushButton, QCheckBox
from PIL import Image
from PySide2.QtWidgets import *
from PySide2.QtGui import *
from qtObj.widgetPickServer import *
from sofulan import req
import requests


class GUI(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(600,400)
        self.setWindowTitle('车辆定损')
        self.mainlayout = QVBoxLayout()

        self.set_widgt()
        self.service = req()
        self.setLayout(self.mainlayout)
        self.show()
        self.filter = {1: '轻微刮擦', 2: '重度刮擦', 3: '轻度变形', 4: '中度变形', 5: '重度变形', 6: '未知损伤', 7: 'crack破损孔洞', 8: '翼子板保险杠缝隙', 9: '未知损伤', 10: '位置损伤'}

    def set_widgt(self):
        self.textarea = QTextEdit(self)
        self.textarea.setText('请输入url')
        self.textarea.resize(200,100)

        self.commitbutton = QPushButton(self)
        self.commitbutton.setText("确定")
        self.commitbutton.clicked.connect(self.get_req)



        self.mainlayout.addWidget(self.textarea)
        self.mainlayout.addWidget(self.commitbutton)

    @staticmethod
    def cropImage(name, boxs):
        box = tuple(boxs)
        img = Image.open('resouce.jpg')
        cropped = img.crop(box)
        cropped.save(name+'.jpg')

    def get_req(self):

        url = self.textarea.toPlainText()
        with open('resouce.jpg','wb') as f:
            res = requests.get(url)
            f.write(res.content)
        text = self.service.ApiFindDamage(url)
        # 创建水平布局
        widget = QWidget()
        new_widget_layout = QHBoxLayout()

        # widget.setLayout()

        # 取值
        text = json.loads(text)
        data = text['Data']
        elements = data['Elements']
        for i in elements:
            crack_type = i['Type']
            score = i['Scores']
            box = i['Boxes']


            print(self.filter[int(crack_type)],end='\t')
            # print(score)
            for j in range(len(score)):
                if score[j] > 0:
                    label = QLabel(self)
                    print('损伤可能性:{}'.format(score[int(j)]))
                    self.cropImage(self.filter[int(crack_type)]+str(score[int(j)]), box)
                    # 添加子控件图片
                    pix = QPixmap(self.filter[int(crack_type)]+str(score[int(j)])+'.jpg')
                    label.setPixmap(pix)
                    label.resize(pix.width(),pix.height())

                    # label.setText(self.filter[int(crack_type)]+"  可能性"+str(score[int(j)]))
                    # ls.append(self.label)
                    new_widget_layout.addWidget(label)
        widget.setLayout(new_widget_layout)
        self.mainlayout.addWidget(widget)


if __name__ == '__main__':
    app = QtWidgets.QApplication([])
    gui = GUI()
    sys.exit(app.exec_())

利用pyside2制作的窗口程序,根据box进行图片裁剪,展现损伤位置。
image.png(脚本截图)

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
人工智能
视觉AI训练营-DAY 5 车辆类型识别
视觉AI训练营-DAY 5 车辆类型识别
993 0
视觉AI训练营-DAY 5 车辆类型识别
zbm
|
编解码 人工智能 JSON
视觉AI训练营-DAY 5 车辆保险应用
创意日-你的图像识别项目
zbm
569 0
视觉AI训练营-DAY 5 车辆保险应用
zbm
|
人工智能 对象存储 Python
视觉AI训练营-DAY 4 车辆保险应用
视觉平台搭建车辆识别
zbm
415 0
视觉AI训练营-DAY 4 车辆保险应用
|
人工智能 Java
视觉AI训练营-DAY 4 车辆保险应用
视觉AI训练营-DAY 4 车辆保险应用
658 0
视觉AI训练营-DAY 4  车辆保险应用
|
存储 人工智能 Java
|
JSON 人工智能 文字识别
视觉AI五天训练营 Day04 车辆保险系统搭建
视觉AI五天训练营 Day04 车辆保险系统搭建
915 0
视觉AI五天训练营 Day04 车辆保险系统搭建
|
人工智能 Java Maven
阿里云视觉AI 5天实践训练营-day04-车辆保险应用
经过两天的案例学习,终于迎来了自己动手写的日子。本文将展示菜鸟的车辆保险应用,因能力和时间有限,前后端交互暂时未做,后面有时间会补上。
阿里云视觉AI 5天实践训练营-day04-车辆保险应用
|
存储 人工智能 API
ai视觉能有多强?第四章-车辆保险应用
使用阿里云实现车辆保险应用开发
725 0
ai视觉能有多强?第四章-车辆保险应用
|
人工智能 文字识别 达摩院
达摩院特别版-视觉AI训练营-Day4-作业日-车辆保险应用
阿里云“在家实践”全新企划,阿里巴巴达摩院技术专家精心策划。大师授课配合钉群专人指导,五天时间完成身份证识别、人脸+表情识别、车辆保险等云上项目,快速入门视觉AI,为求学升职加分。你的AI第一课,阿里云陪你完成。
1013 0