精华内容
下载资源
问答
  • 包含功能:a) 读取Landsat-5卫星遥感影像;b) 图形显示遥感影像读取结果;c) NDVI或NDWI计算及结果输出;d) 自定义RGB输出图像
  • Dicom图像读取与显示

    2018-04-08 11:26:49
    使用C++读取Dicom文件,获取Dicom文件中与图像显示相关的信息,使用OpenCV进行图像显示,代码对于Dico初学者会有很大帮助
  • 代码实现:读取图片,显示图像,获取图片坐标及像素值进行显示(vs2013+qt5.3.0 x64环境)
  • gui 图像读取与保存

    2017-01-08 14:04:37
    matlab gui 可实现图像读取,保存,并退出程序
  • DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学图像和相关...下面这篇文章主要给大家介绍了关于python对DICOM图像读取的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
  • 索引图像读取与分析理解

    千次阅读 2019-06-13 20:11:20
    索引图像 最近在做语义分割相关的内容,但是一直对数据集(如voc2012)的图像格式不太清楚,查阅资料在此进行记录。...1、索引图像读取 索引图像的读取是用matlab进行读取的,方式如下: (本人是加载的是VOC2...

    索引图像

    最近在做语义分割相关的内容,但是一直对数据集(如voc2012)的图像格式不太清楚,查阅资料在此进行记录。
    相关链接:
    1、索引图像概念:https://baike.baidu.com/item/索引图像
    2、博客解释:https://blog.csdn.net/xuyunyunaixuexi/article/details/85016882

    1、索引图像读取

    索引图像的读取是用matlab进行读取的,方式如下:
    (本人是加载的是VOC2012的索引图像,图像地址自行更改)

    [X, map1] = imread('.../VOC2012data/VOCdevkit/VOC2012/SegmentationObject/2007_000032.png');
    [Y, map2] = imread('.../VOC2012data/VOCdevkit/VOC2012/SegmentationObject/2007_000033.png');
    

    相关的知识点,百度百科已经解释的很详细的,也如上面代码所示,每一个索引格式的图像可以得到一个矩阵和map映射图。
    矩阵中的像素值是多少,就对应了map映射图中RGB的各成分比例。
    如下图所示,显示了一部分的map映射图表(即map1)。
    在这里插入图片描述
    如下图所示,显示了图像的一部分矩阵(即X)。
    在这里插入图片描述
    那么可以通过这两者找到对应图像某位置的颜色。
    如由图像矩阵图知道,第108行,第138列的像素值是2,而对应map映射图知道第3行(像素值是从0开始)的RGB编码的比例,即知道了该位置的颜色。

    2、索引图像分析

    链接中的博客已经介绍得非常详细了,如下图所示,该索引图像的位深度为8(位深度可以自行选择),那么2的8次方即是256,即该索引图像最多可以表示256种颜色(每一种颜色已经通过像素值一一对应好的)。同时由我们的matlab的读取也可以发现,map映射表有256个对应值,图像矩阵表格最小值为0,最大值为255,也验证了深度即是8。
    在这里插入图片描述

    展开全文
  • 二、图像读取和显示  先来看看我们的原始图片: 1. 代码实践 : #coding:utf-8 import cv2 # 读取图像 src_image = cv2.imread("bridge.jpg") # 打印OpenCV读取的图像数据 print(src_image) # 创建窗口,显示图像,...

    01

    你可以不高尚,但不能无耻;你可以不伟大,但不能卑鄙;你可以不聪明,但不能糊涂;你可以不博学,但不能无知;你可以不交友,但不能孤僻;你可以不乐观,但不能厌世;你可以不慷慨,但不能损人;你可以不追求,但不能嫉妒;你可以不进取,但不能倒退.

    前言

           在上一篇文章中,我们简要介绍了图像的基础知识,包括图像彩色通道,像素,分辨率等知识,学会这些东西,我们才能更好的理解图像处理的各种操作,今天,我们将会用上一篇文章(【图像篇】opencv图像处理(一)---图像基础知识)提到的工具--OpenCV,并用python语言调用OpenCV接口来进行实际的代码操作,一起来看看吧!

    01

    一、python-OpenCV环境搭建

          千里之行,始于足下,九层之台,其余垒土。学习图像处理,我们必须先搭建好相应的编程环境,python环境可以参考这篇文章(python环境搭建(番外篇)---那些年走过的路),其次在python环境安装好的基础上安装OpenCV,输入以下命令:

    pip install opencv-python==3.4.5.20  # 3.0以上版本即可

           最后,你需要拥有python编程的基础知识,可以参考这些文章(python学习历程之----基础篇(一)

    02

    二、图像读取和显示

        先来看看我们的原始图片:

    1. 代码实践

    #coding:utf-8

    import cv2

    # 读取图像

    src_image = cv2.imread("bridge.jpg")

    # 打印OpenCV读取的图像数据

    print(src_image)

    # 创建窗口,显示图像,窗口名称为src_image

    cv2.imshow("src_image",src_image)

    # 等待任意按键按下,保持图片始终显示

    cv2.waitKey(0)

    # 关闭所有的窗口

    cv2.destroyAllWindows()

    代码解读该实例代码中较为重要的函数是读取函数 cv2.imread(),和显示函数cv2.imshow(),读取函数中一般会是两个参数,一个是图像的路径,一个是读入图像的方式(灰度读入,没有这个参数就是默认为彩色图像显示), cv2.imread()函数读取后的图像通道顺序为BGR,因此一般用OpenCV读取的图像都会再次进行图像转换为RGB顺序,然后再来进行其他操作。cv2.imshow()函数包括两个参数,第一个参数是显示窗口名字,第二个参数是需要保存的图像数据。

    2.效果显示:

    03

    三、图像保存

    1. 代码实践

    #coding:utf-8

    import cv2

    # 读取图像

    src_image = cv2.imread("bridge.jpg")

    # 保存图像

    cv2.imwrite('save_bridge.jpg', src_image)

    print("图像保存成功!")

    代码解读:该实例代码中主要关注cv2.imwrite()函数,包含两个参数,第一个是存储后图像的名字,第二个是需要存储的图像数据。

    2.效果显示:

    04

    四、图像信息打印

    1. 代码实践

    #coding:utf-8

    import cv2

    # 读取图像

    src_image = cv2.imread("bridge.jpg")

    image_width = src_image.shape[1]

    image_height = src_image.shape[0]

    image_channel = src_image.shape[2]

    image_data = src_image.dtype

    image_type = type(src_image)

    print("+-------------------+------------------+")

    print("|图像属性            |       值         |")

    print("+-------------------+------------------+")

    print("|图像的宽度          |          {}     |".format(image_width))

    print("|图像的高度          |          {}     |".format(image_height))

    print("|图像通道数          |          {}       |".format(image_channel))

    print("|图像数据类型        |          {}   |".format(image_data))

    print("|图像类型           |{} |".format(image_type))

    print("+ ------------+-------------------------+")

    2.效果显示:

    结语

         今天的分享结束了,内容较为简单,都是图像处理的基本操作,读取,显示和保存等基本函数的使用,这些都是后面图像处理的基础函数,希望粉丝老铁们下去实践一下哦,我们下期再见!

    编辑:玥怡居士|审核:小圈圈居士

    往期精彩回顾

    【图像篇】opencv图像处理(一)---图像基础知识

    【年终总结】辞旧迎新,2020,我们再出发

    python实战篇(七)---一寸照换背景

    扫码关注

    我就知道你“在看”

    展开全文
  • matlab实现图像读取、写入和显示

    万次阅读 多人点赞 2019-04-25 13:05:52
    matlab实现图像读取、写入和显示 1.图像的读取 使用imread()函数来读取一幅图像。例如,下行代码实现的就是一个名为“lena.jpg”的图像文件,并将图像的像素矩阵赋值给变量I。文件名需要用单引号括起来,此外,...

    1.图像的读取

           使用imread()函数来读取一幅图像。例如,下行代码实现的就是一个名为“lena.jpg”的图像文件,并将图像的像素矩阵赋值给变量I。文件名需要用单引号括起来,此外,末尾的分号在matlab中用于取消输出。

    I = imread('lena.jpg');
    

           上面这个命令没有包含任何路径信息,imread()函数会从当前工作目录中寻找并读入图像文件。如果在当前目录中没有找到该文件,则matlab会尝试在搜索路径中寻找该文件。
           我们还可以显式地给出文件的完整路径,例如:

    I = imread('C:\lena.jpg');
    

    2.图像的写入

           使用函数imwrite()来写入图像文件,该函数语法形式为:

    imwrite(I,'filename')
    

            其中,参数I表示一个二维图像数组,可由imread()函数得到,filename必须是一种可识别的文件格式。例如,下面的命令可以将图像以lena为文件名存储为PNG格式的文件:

    imwrite(I,'lena.png')
    

           也可以写成:

    imwrite(I,'lena','png')
    

           如果filename中不包含路径信息,那么imwrite()就会把文件保存至当前的工作目录中。此外,imwrite()函数还有一种适用于JPEG图像的语法形式,如下:

    imwrite(I,'filename.jpg','quality',q)
    

           其中,q是整数,取值范围是0~100之间。JPEG是一种采用有损压缩为编码方式的图像文件格式,这里的q就是用来控制压缩后的图像质量的,q值越小,则表示图像的质量退化就越严重。

    3.图像的显示

    3.1 显示单幅图像

           通常使用imshow()函数来显示图像文件,它可以自动地创建句柄图形图像对象,并自动设置各句柄图形属性和图像特征,从而使得显示效果得以优化。imshow()函数的基本语法形式如下:

    imshow(I,[G])
    

           其中,参数I表示一个二维图像数组,可由imread()函数得到,G表示该图像的灰度级数,默认为256。另外,还可以写成如下格式:

    imshow(I,[low,high])
    

           low和high表示所有小于low的值都显示为黑色,所有大于high的值都显示为白色,在low和high之间的值都以默认的级数显示为中等亮度值。

           当使用imshow()同时输出多幅图像时,后面的图像总是会覆盖前面的图像。为了同时显示多幅图像,就要用到figure()函数。该函数的作用是建立图形窗口对象。例如:

    % figure
    imshow(IMG1)
    figure(5)
    imshow(IMG2)
    

           运行上述代码,显示结果如下:

    lena
    baboon

    显示多幅图像
    3.2 关闭图形窗口

           要关闭图形窗口,使用close()函数。例如:

    close(5)
    

           括号中的参数是窗口句柄,该语句的作用是关闭Figure 5窗口。在默认情况下(即不输入任何参数),matlab会选择关闭当前窗口(也就是最后创建的一个窗口)。此外,我们还可以使用close all命令来关闭所有的图形窗口。

    3.3 同一窗口显示多幅图像

           此时需要用subplot()函数,该函数的语法形式为subplot(m,n,p)或subplot(m n p)。其中,m表示图排成m行,n表示图排成n列,p表示图所在的位置,p=1表示从左到右、从上到下的第一个位置。例如:

    figure;
    subplot(1,2,1),subimage(IMG1);
    title('lena');
    subplot(1,2,2),subimage(IMG2);
    title('baboon');
    

           运行结果如下:

    在这里插入图片描述

    在同一窗口显示多幅图像

           函数title()作用是给子图加标题,而函数subimage()的作用则是显示子图,这里也可以换成imshow()。其中,subimage()函数会给图像加上坐标而imshow()则不会。此外,对图像而言,坐标原点位于左上角。

    参考资料

    1. 数字图像处理原理与实践MATLAB版 [左飞 著] 2014年版
    展开全文
  • 可以对读取到的进行缩放,旋转,移动,查看具体图片的信息
  • raw 图像读取

    2015-08-05 20:50:11
    matlab读取raw数据,包括调字节数,序列图像读取和单张图像的读取。
  • 通过opencv进行图像读取与简单分割

    千次阅读 2018-10-10 23:43:29
    BY_ZZX 设计内容: 相机作为机器人传感器的一种,可以获取现实世界中的丰富信息,通过图像处理与计算机视觉算法,可以为机器人的移动...2)对于给定的矩形停车位场景,在对读取到的图像上利用颜色差别进行简单的阈...

    BY_ZZX

    设计内容:

    相机作为机器人传感器的一种,可以获取现实世界中的丰富信息,通过图像处理与计算机视觉算法,可以为机器人的移动提供指导。通过开源计算机视觉工具库(openCV)获取相机的图像,并利用该工具库实现图像处理中的图像分割等简单算法。设计内容如下:

    1)调用openCV提供的API实现相机的读取余操作。

    2)对于给定的矩形停车位场景,在对读取到的图像上利用颜色差别进行简单的阈值分割。

    3)提取分割后的图像轮廓,并根据图像轮廓确定停车位边缘的四个角点。

    设计过程:

    1.在ubuntu下编译和配置openCV开源库

    这一步可以参考别人的方法,CSDN有很多,我参考的是下面这个老哥的:

    https://blog.csdn.net/cocoaqin/article/details/78163171

    其中自然有很多的不解和疑惑,大概理解是一开始装的cmake是一个编译工具,OpenCV的编译是为了它的函数整合在系统之中。通过下面这三行代码可以实现读取电脑摄像头并且以视频的形式展现出来。

    cmake .
    make
    ./opencv_example

    但是这个示例程序却存在一个bug:无法用鼠标×掉,×掉后立马自己又运行了起来。经过研读它的代码,发现是waitKey(n)函数的问题。waitKey函数删除就没法显示视频,如果关掉窗口,waitKey(n)函数没有读取键盘输入,程序会继续运行,这是一个冲突,所以通过鼠标×不了这个程序的运行。

    2.学习openCV视觉库的数据结构表示,如图像的存储表示与基本操作。

    openCV 自带的示例程序里主要用到了几个重要的库、类和函数:

    <opencv2\highgui.hpp>:

    包含了媒体输入输出,视频捕捉,图像视频编解码和图形接口等

    imread():读取图像文件

    imshow():在制定窗口显示文件

    nameWindow():创建一个窗口

    imwrite():输出图像文件

    createTrackbar():创建一个滑条,跟某一个数值相连。

    VideoCapture类:

    VideoCapture ::××××××(/int device id/const string& filename)可以直接打开视频(文件和摄像头)。open也可以实现这样的功能

    isOpened()是用来确认是否读取成功

    release()是用来释放被读取的视频

    grab()是用来抓取下一帧图像,成功则返回1,因此可以用来判断下一帧图像是否抓取成功

    retreve()是用来返回刚刚抓取的视频帧

    read()是调用grab(),retreve()

    double get()是用来获取视频的参数的

    bool set()是用来设置视频的参数的

    还有另外一种获取视频帧的方法:是结合了Mat类,实例中运用了Mat image和capture >> image;这两个操作来实现。

    Mat类:由于Mat类非常复杂,参考了callback博主的文章:https://blog.csdn.net/u010248552/article/details/79962132

    添加水印的函数:putText():传入要添加水印的图像, 要加的字符, 字体, 粗细 ,  颜色,添加位置等参数

    waitKey(n):n为等待的时间,这个函数返回值为按键的ASCII码值,同事这个函数也是显示图形界面的接口,如果没有这个函数,读取到的摄像头图形就没法展现在显示器上。如果设置waitKey(0),则表示程序会无限制的等待用户的按键事件 。

    openCV读取和显示图片:

    error:在网上找了一份代码,复习粘贴然后make出现了两个错误:

    stray ‘\240’ in program
    stray ‘\302’ in program

    在网上查了一下,240是非法ASCII字符,302是全角字符的问题。只能自己重新写一遍了,遇到了一些不懂的地方,查了一下:

    imread(img.jpg,×××):其中后面一个参数是区分以原始图、灰度图、RGB图格式读取图片的三个方式,<0代表原始图,=0代表灰度图,>0代表RGB图(1,2,4)

    cout<<endl:是输出结束符

    namedWindow("name",***):后面一个参数是窗口大小相关的,1为自动调节窗口大小使之适应图片,2是鼠标可以调节窗口大小。注意这里是nameWindow而不是nameWindow。

    destoryWindow("Window_name"):销毁窗口

    重新写了一遍后,还是有很多error,发现注释的写法有问题,注释必须紧跟在代码后面且之间不能有空格。空行也有问题,代码区不能自己加空行进去。甚至行距也会有问题报错。

    终于弄好了,编译通过,能显示图片出来。jpg图片由于是24位的,所以在imread中第二个参数传入2时,因为2代表anydepth,如果不是16或32位图,则会以8位图像读入,变成灰色;传入参数4时,因为4代表是anycolor,故仍然是彩色的;1代表color,所以也是彩色的。

    能完成对图片的读取操作了,但是在ubuntu下却不能直接从word里面拷贝出里面的图片出来,于是安装了pinta:

    sudo apt-get install -f
    sudo apt-get install pinta

    第一行代码是修复依赖包的,f:fix-broken,如果直接输入第二行代码,则会报错没有安装依赖包,并且在我的电脑上无法对磁盘进行写入。然后打开word,放大,按PrntScr键截图,用pinta裁剪,保存。

    openCV对图像进行阈值分割和提取轮廓

    参考了这位大神的博客:https://blog.csdn.net/MisterJiaJia/article/details/80464265

    对其中的一些函数进行了研读:

    cvtColor():

    C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 );


    . InputArray src: 原图像
    . OutputArray dst: 变换后存储图像
    . int code: 转换格式的标识
    . int dstCn = 0: 目标图像通道数,如果取值为0,则由src和code决定

    利用cvtColor可以把彩色图转换为灰度图,当然也可以在读取的时候就直接以灰度格式读入,直接以灰度读入会不会更快些呢?

    error:

    stray ‘\357’ in program

    查了一下,357是代表在UTF8编码的文档中插入了中文的标点符号,检查了一下果然有个逗号写成了中文的。

    threshold:

    threshold的中文意思是门槛(n),临界的(adj)。这个函数的作用就是将灰度图像的灰度设置为0或255,使得图像凸显出黑白的效果,凸显出图像轮廓同时使数据量大大减少。函数定义:

    double cv::threshold(InputArray Src,
                         OutputArray dst,
                         double thresh,
                         double Maxval,
                         int type,
                        )

    第一个参数是输入图像,

    第二个参数是输出图像,

    第三个参数是阈值(thresh),

    第四个参数是dst的最大值,

    第五个参数是二值化的方式,具体见这位大神的博客:https://blog.csdn.net/u012566751/article/details/77046445

    bug:我用一个char型变量存放阈值,结果不论怎么样设置阈值,图像都全白。折腾了半天,终于认识到自己的错误,太久没有调程序了,连char型变量的范围都忘了是-128~127。改成unsigned或者int就好。

    getStructuringElement:

    这个函数用于生成形态处理的核,定义如下:

    getStructuringElement( int shape,//核的形状:0,十矩形;1,十字交叉形;3,椭圆形
                           Size ksize,//核的大小     
                           Point anchor=Point(-1,-1)//核中心位置,默认位于图像中心处
                         )

    这个核其实就是一个矩阵:

    3*3的矩形矩阵
    [1,1,1
     1,1,1
     1,1,1]
    3*3的十字叉形矩阵
    [0,1,0
     1,1,1
     0,1,0]
    3*3的椭圆形矩阵
    [0,1,0
     1,1,1
     1,1,1
     1,1,1
     0,1,0]

    这个函数的返回值就是相应的形态学矩阵,需要用一个矩阵来存储,然后用于形态学处理。

    morphologyEx():

    这个函数是形态学变化函数,功能十分强大:

    morphologyEx(InputArrary src, 
                 OutputArray dst, 
                 int op,
                 InputArray kernel,
                 Point anchor=Point(-1,-1),
                 intiterations= 1,
                 int borderType= BORDER_CONSTANT,
                 const Scalar&borderValue=morphologyDefaultBorderValue()
                 )

    第三个参数,结构元素,表示形态学运算的类型:1.开运算:MORPH_OPEN;2.闭运算:MPRPH_CLOSE;3.形态梯度:MORPH_GRADIENT;4.“顶帽”:MORPH_TOPHAT(原图像与开图像之差);5.“黑帽”:MORPH_BLACKHAT(闭图像与原图像之差)

    第四个参数anchor:结构元素的原点

    第五个参数iterations:迭代的次数

    详细介绍参考这位大神的博客:https://blog.csdn.net/keen_zuxwang/article/details/72768092

    我经过处理之后的照片如下图:

    展开全文
  • (2)实现图像读取,格式化转换,储存等操作。 (3)实现图像感兴趣的区域截取。 (4)读取并输出某个像素点的RGB数据。 (5)能使用摄像头获取图片。 1.在Windows下搭建VS+OpenCV平台: (2)实现图像读取,格式化...
  • Python图像读取

    千次阅读 2018-08-09 11:48:41
    图像读取 &amp;lt;图像预处理Python的初学笔记&amp;gt; 实现图像的缩放,灰度变换 使用PIL和skimage 使用两种方法对图像进行处理,开始的时候不知道应该用哪个库对图像进行处理,所以先使用这...
  • tiff图像读取

    2014-11-04 22:42:01
    TIFF图像读取与存储的C代码,可以方便实现TIFF格式图像的读取与存储
  • 遥感图像读取

    千次阅读 2017-03-03 15:19:22
    在对遥感图像进行分类时,会遇到一个问题,就是 opencv,PIL,skimage等都不能打开遥感图像,但是又要获取图像的矩阵信息,进行运算!解决方案: 1、使用GDAL(python版) 使用GDAL将影像的每个波段信息读取出来,...
  • 图像读取

    2011-12-20 09:38:21
    图像读取类,用于BMP图像文件的读取,主用用了BITMAP类,自己编的
  • 用c++读取灰度图像.txt

    2019-02-28 10:00:11
    用c++读取灰度图像,适用于各种课程设计,代码经过调试,全部正确
  • (1)OpenCV 4 学习之图像读取和显示

    千次阅读 2019-03-25 19:51:30
    将以任何可能的颜色格式读取图像 IMREAD_LOAD_GDAL 8 使用gdal驱动程序加载图像 IMREAD_REDUCED_GRAYSCALE_2 16 将图像转换为单通道灰度图像图像尺寸减小1/2 IMREAD_REDUCED_COLOR_2 ...
  • 主要使用multibandread函数读取dat文件,显示单波段图像,多波段可以按波段显示,详细方法前面有解释,multibandread函数的参数可以根据自己的hdr文件输入
  • 遥感图像中的IMG格式图像读取,可以读取留个波段,已测试,可以运行,需要的可以下载
  • matlab开发-读取和保存图像序列。此文件加载图像并将其存储在工作目录中
  • matplotlib和opencv进行图像读取和保存

    千次阅读 2019-01-22 15:01:55
    ①如果用matplotlib读取,像素值是0~1之间的浮点数(在我的测试中,只剩下了0和一个0.003921569这两数值),float类型的数据,能显示图片,但是丢失了许多信息。 ②如果用opencv读取,因为只剩下(0或者1)两个像素...
  • 安装软件通过看网上的各种资料,装的我人生悲惨,后来学长告诉我,我装的太复杂了,九九八十一难,终于搭好了环境。 (1)打开pycharm,选择创建项目Create New Project ... (3)在Project下的ptext上右键,选择new...
  • HDF5格式图像读取

    2007-10-30 20:52:52
    可以读取HDF5格式的图像文件
  • OpenCV图像读取

    千次阅读 2022-01-09 21:10:36
    图像读取与显示 文章目录前言一、cv.imread()函数的原型二、cv.imread()函数中的flags选择cv.imread()函数的读取文件类型注意总结 前言 在使用opencv-python库时,需要做的最简单工作就是导入库文件,读取...
  • OpenCV图像读取与灰度化

    千次阅读 2017-06-19 13:18:55
    在OpenCV中,图像读取可以通过imread()函数实现: Mat imread( const String& filename, int flags = IMREAD_COLOR ); 读取后的数据存储格式由第二个形参flags决定。flag的值可以从枚举类型cv::ImreadModes中...
  • opencv 图像读取显示和像素操作

    万次阅读 2017-08-12 13:18:08
    图像读取和显示char *f = &quot;E:\\opencv\\opencv\\sources\\samples\\wp8\\OpenCVXaml\\OpenCVXaml\\Assets\\Lena.png&quot;; Mat lena; lena = imread(f); imshow(&quot;lena&quot;, ...
  • 1.图像读取 定义该幅图片名为after.png &gt;&gt; A=imread('after.png'); &gt;&gt; imshow(A); 运行程序可得 2.彩色图片转化为灰度图片 &gt;&gt; A=imread('after.png'); &gt;&...
  • opencv 读取图像像素值到数组,用指针方式实现 opencv 读取图像像素值到数组,用指针方式实现
  • 读取rawData图像

    2017-11-08 23:13:17
    读取rawData图像,其中实现了raw data图像转BMP图像。主要使用的opencv库

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 281,524
精华内容 112,609
关键字:

图像读取