精华内容
下载资源
问答
  • logo识别项目

    2016-10-11 17:05:54
    logo识别项目
  • 针对深度学习框架下Logo识别任务中可训练样本稀疏的问题,提出了一种基于上下文的Logo数据合成算法,该算法综合利用了Logo对象内部、Logo周围邻域、Logo与其他对象之间以及Logo所处场景等多种类型的上下文信息指导...
  • 基于opencv的logo识别

    2020-05-08 09:06:45
    基于opencv的logo识别 首先环境为visual studio 2012+opencv3.2.0. 大家尽量采用此环境,opencv对于环境要求较高,环境不同会一堆报错很难处理。 1、opencv安装配置环境(此节略过后续会补充在博客) 2、开始做...

     基于opencv的logo识别

    首先环境为visual studio 2012+opencv3.2.0.  大家尽量采用此环境,opencv对于环境要求较高,环境不同会一堆报错很难处理。

     

    1、opencv安装配置环境(此节略过后续会补充在博客)

    2、开始做logo识别。一个logo大致步骤,先通过颜色区别将logo从整体环境中剥离出来。此处以美的logo做解释;

     

     

     

     

     

     

     

     

    图一为原图,图二为经过opencv 里的hsv变换的图片,图三为针对蓝色做颜色过滤。经过此部分操作即可得到logo。

    3、然后针对logo部分转为轮廓化,进行轮廓比对识别。

     

     图一为过滤出来的logo黑白二值图,图二为轮廓图,图三为logo中字母轮廓,图四为用来比对的轮廓。黑色xin文字为相似度,值越小代表相似度越高。

    至此即实现logo的检测及比对,详细代码如下:

    // opencv.cpp : 定义控制台应用程序的入口点。
    //
    #include "stdafx.h"
    #include <opencv2/opencv.hpp>
    
    
    #include <opencv2/core.hpp>
    #include <opencv2/highgui.hpp>
    #include <opencv2/imgproc.hpp>
    #include <opencv2/imgproc/imgproc_c.h>
     
    #include <iostream>
    #include <vector>
    using namespace std;
    using namespace cv;  
    
    /*int main()  
    {  
        //the path of test image
        Mat img=imread("C:\\Users\\14675\\Desktop\\扫码枪教程\\无标题h.png"); 
        namedWindow("dog");  
        imshow("dog",img);  
        waitKey(6000); // window closed after 6000 ms
    }
    */
    
    
    
    
    
    int main()
    {
    
    	/*
    	//VideoCapture cap(0);
    
    	while (true)
    	{ //Mat matSrc;
    	 //cap >> matSrc;
    
    
        //Mat matSrc=imread("D://程序工程/opencv/x64/Debug/2.jpg",IMREAD_UNCHANGED);
    	 
    	resize(matSrc, matSrc, Size(), 0.5, 0.5);
    	Mat matHsv;
    	//waitKey(2000);
    	cvtColor(matSrc,matHsv,COLOR_BGR2HSV);
    
    
    	Mat a,b,c,d,e;
    	inRange(matSrc,Scalar(0, 0, 0),Scalar(180, 255, 46),a);
    	medianBlur(a,b,3);
    	medianBlur(b,c,5);
    
    	Mat element = getStructuringElement(MORPH_ELLIPSE, Size(2 * 1 + 1, 2 * 1 + 1), Point(1, 1));
    	Mat element1 = getStructuringElement(MORPH_ELLIPSE, Size(2 * 3 + 1, 2 * 3 + 1), Point(3, 3));
    
    		erode(c, d, element);//腐蚀  
    
    
     imshow("显示灰度图",matSrc);
     imshow("显示灰度图1",matHsv);
     
     int ca = waitKey(100);//按ESC则退出当前视频
       if ((char)ca == 27)
       {
        break;
       }
    
    	}*/
    	
    	//图片初始化
    	Mat matSrc=imread("D://程序工程/opencv/x64/Debug/3.jpg",IMREAD_UNCHANGED);
    	Mat matSrc2=imread("D://程序工程/opencv/x64/Debug/4.jpg",IMREAD_UNCHANGED);
    
    	//尺寸归一化 
    	resize(matSrc, matSrc, Size(300,300), 1, 1);
    	resize(matSrc2, matSrc2, Size(300,300), 1, 1);
    	//imshow("显示灰度图1",matSrc);
    	//hsv通道
    	Mat matHsv,matHsv2;
    	cvtColor(matSrc,matHsv,COLOR_BGR2HSV);
    	cvtColor(matSrc2,matHsv2,COLOR_BGR2HSV);
    	//imshow("显示灰度图2",matHsv);
    	//过滤蓝色二值化
    	Mat lan,lan2;
    	inRange(matHsv,Scalar(35, 43, 46),Scalar(124, 255, 255),lan);
    	inRange(matHsv2,Scalar(35, 43, 46),Scalar(124, 255, 255),lan2);
    	imshow("显示灰度图3",lan);
    
    	Mat fu,peng,fu2,peng2;
    	Mat element = getStructuringElement(MORPH_ELLIPSE, Size(2 * 1 + 1, 2 * 1 + 1), Point(1, 1));
    	erode(lan,fu, element);//腐蚀  
    	dilate(lan, peng, element);//膨胀
    	erode(lan2,fu2, element);//腐蚀  
    	dilate(lan2, peng2, element);//膨胀
    	peng-=fu;
    	peng2-=fu2;
    	
    	lan=peng;
    	lan2=peng2;
    	imshow("形态学1",lan);
    	//提取轮廓
    	CvSeq *test_seqs;
    	CvSeq *mode_seqs;
    	vector<Vec4i> hierarchy,hierarchy2;
    	vector<vector<Point>> contours,contours2;
    
        findContours(lan,contours,hierarchy,RETR_TREE,CHAIN_APPROX_SIMPLE,Point());//提取轮廓元素
    	findContours(lan2,contours2,hierarchy2,RETR_TREE,CHAIN_APPROX_SIMPLE,Point());//提取轮廓元素
    	//绘制轮廓
    	drawContours(matSrc,contours, 1, Scalar(115), 3, 8, hierarchy);
    	drawContours(matSrc2,contours2,3, Scalar(115), 3, 8, hierarchy2);
    	imshow("形态学2",matSrc);
    	imshow("形态学对比模板",matSrc2);
    	double zhixin=matchShapes(contours[1],contours2[3],CV_CONTOURS_MATCH_I3,1.0);
    
    	
    
    	printf("轮廓一数目:%d  轮廓二数目:%d   xin:%f",contours.size(),contours2.size(),zhixin);
    	//cvMatchShapes(lan,lan2,1);
    
    	//imshow("显示灰度图1",matSrc);
        //imshow("显示灰度图2",matSrc2);
    	//Canny(lan, lan, 3, 9, 3);
    	//Canny(lan2, lan2, 3, 9, 3);
    	//imshow("显示灰度图3",lan);
       // imshow("显示灰度图4",lan2);
    	waitKey();
    }
    
    
    
    

     

    展开全文
  • 刚接触MATLAB不久的我,老师让我实现MATLAB中利用hausdorff算法实现汽车logo识别,当前我已尝试过好多遍,不过仍然未果,希望大神能给予帮助。
  • 笔者在weblogic中运行一个应用,按照SDK文档中写的代码,识别图像的logo,几乎全照抄,并没有什么创新,但是自己写main方法测试类,程序好使,能够识别logo,但是一旦程序在weblogic里面整体运行,就不好使了。...

    笔者在weblogic中运行一个应用,按照SDK文档中写的代码,识别图像的logo,几乎全照抄,并没有什么创新,但是自己写main方法测试类,程序好使,能够识别logo,但是一旦程序在weblogic里面整体运行,就不好使了。百度返回这个{“error_code”:“SDK108”,“error_msg”:“connection or read data time out”}
    ,控制台报的错完全就是误导,什么已经连接了(already connected ,can’t reset之类的),浪费了好长时间去搜索报错,发现全都是徒劳。一开始真的没想到会和weblogic有关,直到把sdk的源码下载下来一行一行调测,发现,在AipHttpClient的这一行

    URL console = new URL(url);获取到的是

    weblogic.net.http.SOAPHttpsURLConnection:https://aip.baidubce.com/oauth/2.0/token

    而自己写的测试类,好使的时候,正常应该获取到这个才对

    sun.net.www.protocol.https.DelegateHttpsURLConnection:https://aip.baidubce.com/oauth/2.0/token

    之所以报错是因为这个原因,所以根据网上查的资料,
    http://www.cnblogs.com/garinzhang/p/Java_Weblogic_SOAPHttpsURLConnection_HttpsURLConnection.html

    修改了百度的jar包,把代码改成了这样,程序就好使了。

    URL console = new URL(null,url,new com.sun.net.ssl.internal.www.protocol.https.Handler());

    下面这个是百度的说明文档中调用的例子。

    public class Sample {
    //设置APPID/AK/SK
    public static final String APP_ID = “你的 App ID”;
    public static final String API_KEY = “你的 Api Key”;
    public static final String SECRET_KEY = “你的 Secret Key”;

    public static void main(String[] args) {
    // 初始化一个AipImageClassifyClient
    AipImageClassifyClient client = new AipImageClassifyClient(APP_ID, API_KEY, SECRET_KEY);

    // 可选:设置网络连接参数
    client.setConnectionTimeoutInMillis(2000);
    client.setSocketTimeoutInMillis(60000);

    // 可选:设置代理服务器地址, http和socket二选一,或者均不设置
    client.setHttpProxy(“proxy_host”, proxy_port); // 设置http代理
    client.setSocketProxy(“proxy_host”, proxy_port); // 设置socket代理

    // 可选:设置log4j日志输出格式,若不设置,则使用默认配置
    // 也可以直接通过jvm启动参数设置此环境变量
    System.setProperty(“aip.log4j.conf”, “path/to/your/log4j.properties”);

    // 调用接口
    String path = “test.jpg”;
    JSONObject res = client.objectDetect(path, new HashMap<String, String>());
    System.out.println(res.toString(2));

    }
    }

    展开全文
  • 颜值评测 https://www.xsshome.cn/xai/rest/face/index 图像识别 请访问小程序     微信小程序直接体验

    颜值评测 https://www.xsshome.cn/xai/rest/face/index

    图像识别 请访问小程序

     

     

    微信小程序直接体验

    展开全文
  • 这篇文章是2015年发表的文章:Logo localization andrecognition in natural images using homographic class graphs。检测自然场景中logo效果很好。  为了理解,本文较长。重要的部分或者改进用红色标注。欢迎大家...

       这篇文章是2015年发表的文章:Logo localization andrecognition in natural images using homographic class graphs。检测自然场景中logo效果很好。

       重要的部分或者改进用红色标注。欢迎大家讨论~

    背景

         检测logo有很多挑战,比如视角变化、弯曲、形状和颜色的变化、遮挡、背景变化等。文章提出了一种在自然图像中定位和分类logo的方法。为了解决视角变化,同一类logo实例的SIFT关键点之间进行单映射匹配。为了解决颜色变化,构建了一个logo互连的加权图,以提取潜在的某个类的多个类实例。通过将各个训练图像映射到中心图像上构建一个类模型。对于彩色反转logo,通过反转第一个类模型的特征方向获得第两个类模型,这将大大提高准确率。

         logo是包含了颜色、形状、特征等信息的图形实体。它的定位和识别是目标检测的一个子问题,在现实生活中有很多用处:

       (1)在汽车行业,自动的logo识别可以用于营销研究,允许生产者通过分析其运输模式更好地了解客户;在法医学中还补充了车牌识别。

       (2)正式文件中logo的识别可以提高分类和处理效率。

       (3)在体育领域,logo显示的持续时间和位置很重要,例如赞助商需要保证其logo一定程度的可见度。

       (4)一般广告业采用logo检测评估营销活动的影响。

       (5)企业收集类似现有logo的证据,发现不正当或未授权使用其logo的侵权等。

    方法

    1. 特征提取

        SIFT特征是很好的描述图像特征的描述子。它对尺度、方向等具有不变性。在自然图像中,logo通常都十分小。若是直接提取SIFT特征,可能提取不到或者只能提取到几个特征点,这对检测是十分不利的。因此在训练图像中,首先剪切出只含有logo的部分作为“训练logo块”,然后再提取SIFT特征

        为了更好地描述logo做了两方面的修改。首先,将SIFT中DoG的边缘阈值从10提高至100。这能够保证在不引入无用的特征点的同时,提取到更多的特征点来描述logo。其次,也是为了提高获得的特征点个数。数据集中测试图像中的logo过于微小,受[2]启发,在测试时,将任何一维小于200像素的测试图像扩大一倍,这将提高准确率。其中200像素是一个经验值。

    2. 图像匹配

        图像匹配的目的是通过寻找到两张图像的合适的映射关系,揭示图像对之间的空间对应关系。这里的映射关系指的是单应性,即评估将一张图像映射到另一张图像平面的单应性矩阵。(图像拼接)

       2.1 单应性矩阵

        单映性变换是相同场景的两个图像之间的一种连接,记为H。它可以将第一张图像中平面上的点(a,b)映射到第二张图上的(x,y)点:

    ,        

      给H乘以一个系数z,就变成把原来的(a,b,1)映射成(zx,zy,z)。该点实际上和(x,y,1)是同一个点,可以令z=1/h33,则h33=1。所以H中只有8个自由元素,至少需要4对图像对即可解出一个矩阵H

        2.2 RANSAC

        迭代地随机选择4对特征对应关系,用直接线性变换(DLT)确定单应性矩阵H[3]。迭代次数越多,寻找到的匹配关系越准确。如果一次正确匹配的概率是pi,则nn次迭代之后得到正确匹配关系的概率是:

       

    其中r是每次迭代时提取的图像对数。在本文中,r=4。

        因为logo很小,所以较小。为了提高得到正确匹配关系的概率,将RANSAC的迭代次数从500提升至200,000次。这将导致匹配的时间变长,而且测试阶段有很大可能找不到测试图像和类模型图像的单应性关系,这种情况下不需要进行全部的迭代过程。所以规定在测试阶段,如果匹配点数少于20,系统自动认为两张图像有很大的可能性找不到单应性关系,直接结束。

    3. 互连图

        在训练图像完成所有可能的连接之后,以的形式展示所创建的连接。

        假设训练集共有n张图像,理论上一共会产生n(n-1)/2个有联系的图像对。然而实际上,由于遮挡、颜色反转等,并不是所有的图像对之间都有足够的信息而产生一个正确的映射关系。但这并不是一个问题,因为任何两张图像之间都可以通过其他的图像构建联系,即所有图像都可以以直接或间接的方式存在连接。如图所示。


        形成图之后,可以很方便地找到与其他图像连接数最多的“中心图像”/“核心图像”。在上图中,img7就是中心图像。与[4]中不同,在本文中为每一条边赋予了权重,权重大小与匹配的点对数数量成反比。

    4. 类模型

        训练的目的是在同一个平面中,联合所有代表性的关键点和它们对应的描述子。联合特征指的是将所有的特征(关键点和描述子)映射到某一张图像上。只有关键点需要计算,描述子不需要再进行计算。使用之前得出的H,所有图像均可以映射到中心图像上。这里存在一个问题,对于直接连接的图像,直接应用单应性转换即可。对于那些间接连接的图像,比如图像1和图像n没有直接连接,需要通过以下公式完成映射:

        由于映射会引入少量的误差,所以为了尽可能地减少误差,需要为间接相连的图像选择合适的映射路径。明显地,路径越长,引入的误差越多。因为边缘权重与匹配的点对数数量成反比,这使权重和最小的路径有最多的匹配点对数,能够更好地描述特征,即引入了更少的误差。

    5. 错误图谱

        为了避免过多的不相关的信息影响最终的类模型,引入一个关键点的预过滤过程。对于每一对映射关系,构建一个错误图谱,它能将正确的和错误的匹配分隔开。图谱的值与区域的匹配正确性有直接关系,过程和[5]中相似。

        这个图谱能够区分某个区域是正确的映射区域还是遮挡或者形变的区域。下图显示了一个错误图谱的例子。(c)是这个映射产生的错误图谱,其中深色区域显示了正确的匹配,浅色的部分显示了遮挡或logo的不同之处。

    6. 类的描述

        在建立类模型时,提取出的特征点有很多相似的,映射到中心图像后,会有很多位置和描述都十分相近的关键点,这会减慢我们的匹配效率。所以进行描述子的量化,从而得到唯一的关键点和特征描述。[6]中,作者提到采用K-D树能够完成最大限度的量化,减少计算时间。

    7. 光照反转logo模型

        logo图像可能是在不同的光照条件下拍摄的,如下图所示。一般的SIFT描述符是去计算等效灰度图的特征点,能够很好地描述物体的形状信息,但它不能解决不同光照条件的问题。由于SIFT描述符仅计算等效灰度图像的事实,反转实际上指灰度/亮度水平的反转; 然而RGB颜色的反转在很小的程度上意味着灰度级别的反转。


        对于具有不同光照条件的logo图像,在训练阶段,互连图形成了两个不同的集群。具有差不多相同亮度的训练集中的图像将能够通过单映射彼此匹配,而具有反相亮度级别的其他图像将聚集在另一个单独的集群中。

        训练集中,有的类需要构建光照反转logo模型,而有的类一个模型就能达到较好的识别效果。为了自动检测需要反转模型的类,我们使用类紧凑性标准- 通过分析类的图:如果识别了两个单独的连接组件,那么该类必须有两个类模型。 由于中央图像被认为是具有最多连接的中心图像,所以这意味着该类的主要模型由图中最大的连接分量描述。如果图的其他集群中的图像一旦亮度反转,就能与类模型相匹配,那意味着实际上类将需要一个反向亮度模型。

        如果某类需要构建反转模型,就从第二个集群中选择一个“次要中心图像”。如果按照与第一个模型完全相同的步骤来构建类的另一个模型将导致该类的弱描述,因为该集群包含的图像少于主体,因此信息较少。之前的第一个模型具有很高的描述力,反转之后是对类的中的反转部分进行适当表示。这一次只需要创建关键点的SIFT向量,位置保持不变,而SIFT的8个方向则必须进行相应反转。如下图所示。


    实验

        实验采用FlickrLogos-32[7],BelgaLogos[8]两个关于logo的数据集。正确检测的标准有两个:logo的确存在在该张图像,并且和GroundTruth的交叉联合大于50%[9]。

        在FlickrLogos-32的检测中,18类能够达到100%,27类能达到90%以上。全部的32类logo的准确率高达90.62%。其中Apple和Pepsi类效果不佳,主要原因是两者的图像大多不平坦,映射时误差较大。在BelgaLogos的37类logo中,准确率只有78.09%。准确率不及FlickrLogos-32数据集的原因是一些类别的logo具有很少的图像:15类含有少于10张的训练测试图像。比如Gucci类,一共只有四张图像,包含两个正样本两个负样本,这大大影响了实验的准确率。一些实验结果如下图所示。


        实验过程中,也发现了一些检测效果不好的情况。如下图所示。(a)(b)的主要原因是logo的尺度过小且很模糊;(c)的原因在于logo过小,而且logo的视角十分极端。



    参考文献

    [1]Boia R, Florea C, Florea L, et al. Logo localizationand recognition in natural images using homographic class graphs[J]. MachineVision and Applications, 2016, 27(2):287-301.

    [2] Revaud J, Douze M, Schmid C. Correlation-basedburstiness for logo retrieval[C]// ACM International Conference on Multimedia.ACM, 2012:965-968.

    [3]Hartley R, Zisserman A. Multiple View Geometry inComputer Vision[J]. Kybernetes, 2003, 30(9/10):1865 - 1872.

    [4]Boia R, Florea C. Homographic Class Template for LogoLocalization and Recognition[M]// Pattern Recognition and Image Analysis.Springer International Publishing, 2015:487-495.

    [5]Florea L, Florea C, Vranceanu R, et al. Can Your EyesTell Me How You Think? A Gaze Directed Estimation of the Mental Activity[C]//British Machine Vision Conference. 2013:60.1-60.11.

    [6]Brown M, Lowe D G. Automatic Panoramic ImageStitching using Invariant Features[J]. International Journal of ComputerVision, 2007, 74(1):59-73.

    [7]Romberg S, Pueyo L G, Lienhart R, et al. Scalablelogo recognition in real-world images[C]// ACM International Conference onMultimedia Retrieval. ACM, 2011:25.

    [8] Joly A, Buisson O. Logo retrieval with a contrariovisual query expansion[C]// International Conference on Multimedia 2009,Vancouver, British Columbia, Canada, October. DBLP, 2009:581-584.

    [9] Everingham M, Gool L V, Williams C K I, et al. ThePascal Visual Object Classes (VOC) Challenge[J]. International Journal ofComputer Vision, 2010, 88(2):303-338.


    关于FlickrLogos-32,BelgaLogos两个关于logo的数据集我之前分析过。可以翻看我之前的博客。

     

    展开全文
  • 图像识别部分接口Java-API调用示例代码 https://gitee.com/xshuai/ai/不是完整的web项目大家没必要下载运行。复制|下载相关代码即可 准备工作 已经创建了图像识别应用并且拿到apikey sercetkey得到AccessToken代码...
  • logo颜色识别自己做的

    2019-04-24 10:01:55
    自己做的娱乐小例子,
  • java开发,已测试通过,可生成识别logo二维码
  • 南华大学 形像识别 南华大学校徽 LOGO 设计必备
  • logo图像数据集.zip

    2021-07-07 14:15:31
    一些logo识别常用的训练样本集
  • android二维码扫描、读取、识别、生成、带logo

    千次下载 热门讨论 2016-05-25 16:59:02
    Android通过调用摄像头识别二维码,或者自定义文本生成二维码和带logo的二维码,或者识别图片上的二维码
  • 支持二维码生成,识别,扫描二维码,从相册选取图片并扫描。
  • 下图是我跑的一个(百度随便找的,非项目图)识别一般的效果图,虽然可以识别出指定的logo(1中左图),也受到logo多余部分的影响,最终匹配获取的logo区域有所放大,仔细观察发现logo外围区域颜色都是自下而上渐变...
  • Android通过调用摄像头识别二维码,或者自定义文本生成二维码和带logo的二维码,或者识别图片上的二维码
  • 识别图片中是否有logo,实现方案主要有如下4种方法: 1.通过logo库来判断图片中是否有logo库中的logo 这种方式依赖logo库 2.识别图片中的文字,只要有文字,就假设有logo,再进行二次校验 3.识别图片中的...
  • 数据集有27种不同的品牌徽标,并且所有角度都非常适合训练CNN模型。包含的品牌有:阿迪达斯,苹果,宝马,雪铁龙,可口可乐,DHL,联邦快递,法拉利,福特,谷歌,喜力...Brand Logo recognition dataset_datasets.zip
  • Tensorflow 目标检测项目 图片logo水印识别识别中国军网、中国军视网Logo水印。 image image Step 0 下载项目 git clone https://github.com/tensorflow/models/tree/master/research/ob...
  • 南京标志设计-logo商标设计-企业VI形象识别系统-视觉识别(VI) 企业VI形象设计是以企业标志(LOGO)、标准字体、标准色彩为核心展开的完整、体系的视觉传达体系,是将企业理念、文化特质、服务内容、企业规范等抽象...
  • Android使用QRCode类库生成带LOGO的二维码,包括扫描、读取和识别,原工程从Github上获得,在此基础上经过优化和完善,相信对研究Android二维码相关操作会有不小的帮助。代码里包括了比较多的二维码操作的封装类库,...
  • 上一篇博客中的方法:使用Py-OpenCV(SIFT关键点)实现自然图像中的logo商标识别和定位 当然也能提前欲知该方法的缺点,对于新的logo需要重新训练模型,而且所需的数据集远大于上面的方法。   实现方法: bb = ...
  • 原文: http://www.techug.com/post/tell-tech-company-logo.html快告诉我,不止我一个眼瞎~精彩回顾♡ 互联网公司各岗位...
  • 这阵子做了一个图像配准,主要是logo...自然图像中的logo识别和定位:Logo localization andrecognition in natural images using homographic class graphs 训练集可以选用不同角度进行训练,亲测对于不同角度的匹配会
  • 1.使用ZXint.Net生成带logo的二维码 /// &lt;summary&gt;/// 生成带Logo的二维码/// &lt;/summary&gt;/// &lt;param name="text"&gt;&lt;/param&gt;static void Generate...
  • qrcode生成的二维码,在苹果等手机上长按可识别,在华为手机上长按没有反应,截图保存下来长按又可以识别。 问题原因 浏览器兼容问题 qrcode在页面生成二维码时,会生成一个canvas标签和一个img标签。在电脑浏览器上...
  • 智库识别系统欢迎使用智库识别系统在这里你...用户可以登录该系统进行动植物在线识别,车型识别,货币识别,菜品食材识别,地标logo识别以及生僻字和手写文字提取等。 图片: 在这里你可以识别想要识别的食物 也可以识

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,477
精华内容 9,790
关键字:

logo识别