自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 arduino踩坑记录-03 数字串口

HELLO!这次实验是数字串口的使用此实验向您展示如何通过USB在Arduino与计算机之间建立串行通信来查看单片机的工作状态。所需硬件:Arduino卡发版*1瞬时开关、按钮或钮子开关*110k欧姆电阻*1连接线*N面包板*1连接电路:将三根电线连接到电路板上。前两个,红色和黑色,连接到面包板侧面的两个顶点,以提供对5伏电源和接地的功能。第三根导线从数字引脚2到按钮的一条腿。按钮的同一根腿通过一个下拉电阻 (这里是10k欧姆) 接地。按钮的另一条腿连接到5伏电源。当你按下按钮或开

2020-10-08 18:42:02 369

原创 arduino踩坑记录-02 闪烁的LED

Hello!我们试着用ARDUINO控制板来实现一个很小很小的实验,我将它称之为闪烁的LED,来吧,让我们跨出尝试生活的第一步。实验所需硬件Arduino控制板*1LED*1220欧姆电阻器*1实验电路要建立电路,请将电阻器的一端连接到Arduino引脚13。将LED的长腿 (正极腿,称为阳极) 连接到电阻器的另一端。将LED的短腿 (负极腿,称为阴极) 连接到Arduino GND。电路的连接如下图所示:大多数情况下Arduino板已经有一个焊接到本身13号引脚的LED。如果运行此

2020-10-08 18:40:11 611

原创 python+opencv-16 图像轮廓检测和拟合

python+opencv-16 图像轮廓检测和拟合图像轮廓检测和拟合图像轮廓的查找与绘制轮廓的周长与面积面积计算几何图形的最小外包与拟合霍夫检测图像轮廓检测和拟合边缘检测只能检测出图像边缘信息,并不能得到一幅图像的整体信息,而图像轮廓是指将边缘信息连接起来形成一个整体。通过对图像轮廓进行操作,可以获取目标图像的大小、位置和方向等信息。图像轮廓的查找与绘制图像轮廓由一系列点组成,这些点以某种方式表示图像中的一条曲线。图像的轮廓绘制就是将检测到的边缘信息图像的前景信息进行拟合,从而得到图像的轮廓。

2020-09-13 21:01:07 9172 4

原创 python+opencv-15 图像梯度与边缘检测

python+opencv-15 图像梯度与边缘检测图像梯度与边缘检测Soble算子Scharr算子Canny边缘检测Laplacian算子图像梯度与边缘检测图像梯度是一种描述图像像素之间差异的方法,可以作为图像的一种特征来表征图像。图像梯度计算的是图像的边缘信息,它能够反应图像像素变化的速度,如灰度值变化较大的地方,梯度值也较大。图像梯度就是指像素的一阶导数,在图像处理中可以通过计算像素值的差近似导数值。图像边缘是指灰度值发生急剧变化的地方,边缘检测的目的是在不破坏图像信息的条件下,减少图像的数据量

2020-09-13 12:14:17 1282 1

原创 python+opencv-14 图像金字塔

python+opencv-14 图像金字塔图像金字塔高斯金字塔拉普拉斯金字塔代码实现pyrDown()函数实现下采样pyrUp()函数实现上采样实现拉普拉斯金字塔用金字塔实现图像复原图像金字塔图像金字塔是一种以多分辨率来解释图像的有效结构,常用于图像分割、机器视觉和图像压缩中。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低且来源于同一张原始图的图像集合。通过梯次向下采样获得。金字塔的底部是待处理图像的高分辨率表示,顶部是低分辨率的近似。通常情况下,向上移动一级,图像的宽和高都降低为原来的二

2020-09-12 19:47:41 164

原创 python+opencv-13 分水岭算法实现图像分割

python+opencv-13 分水岭算法实现图像分割图像分割分水岭算法确定一幅图像的前景图像图像分割图像分割是一种基本的图像处理技术,是指将图像分成不同特性的区域,并对目标进行提取的技术,它是由图像处理到图像分析的关键步骤。目标提取和图像理解都是在图像分割的基础上进行的。分水岭算法分水岭算法会把临近像素间的相似性作为重要的参考因素,在空间位置上相近和灰度值相近的像素点互相连接起来构成一个封闭的区域。可以把灰度图与地形图做对比。灰度值低的地方是山谷,灰度值高的地方是山峰。这样山峰包围了山谷,也

2020-09-12 17:27:54 1905

原创 自然语言处理-自学笔记-07 RNN的应用

自然语言处理-自学笔记-07 RNN的应用RNN的应用一对一RNN一对多RNN多对一RNN多对多RNN用RNN产生文本困惑度:衡量文本生成质量RNN-CFRNN的应用当前输出取决于当前输入以及先前观察到的输入历史。这意味着存在先前观察到的输入序列和当前输入的产生的输出。在实际中可能存在:一个输入序列只有一个输出、一个输入产生一个输出序列、以及一个输入序列产生一个序列大小不同的输出序列。一对一RNN在一对一RNN中。当前输入取决于先前观察到的输入。这种RNN适用于每个输入都有输出的问题,但其输出取决

2020-09-11 20:08:13 478

原创 自然语言处理-自学笔记-06 递归神经网络

自然语言处理-自学笔记-06 递归神经网络递归神经网络理解RNN前馈神经网络的问题用递归神经网络进行建模RNN的技术描述递归神经网络递归神经网络旨在处理序列数据,如文本或股票价格。RNN维护一个状态变量,用于捕获序列数据中存在的各种模式。RNN随时间共享相同的参数集,随时间共享参数是RNN的重要部分。对于在序列中观察到的每个输入,状态变量将随时间更新。在给定先前观察到的序列值的情况下,这些随时间共享的参数通过与状态向量组合,能够预测序列的下一个值。由于一次只处理一个元素,因此RNN可以处理任意长度的数

2020-09-11 16:30:03 268

原创 自然语言处理-自学笔记-05 用CNN进行句子分类

自然语言处理-自学笔记-05 用CNN进行句子分类用CNN进行句子分类数据转化卷积操作随时间池化代码实现用CNN进行句子分类在自然语言处理领域,一种有效使用CNN的应用是句子分类。句子分类是指将给定句子划分为某一类别。使用CNN进行句子分类与图片分类有所不同,卷积和池化操作要在一个维度而不是两个维度进行。数据转化现在有一个句子库,句子由单词构成,第一步就是对句子进行向量化。先令句子的个数用b表示,最长句子的单词数用n表示,单词总个数用k表示。例如有如下三句话:Bob and Mary ar

2020-09-10 12:27:49 474

原创 自然语言处理-自学笔记-04 卷积神经网络

自然语言处理自学笔记-04 用卷积神经网络进行句子分类卷积神经网络CNN基础卷积操作卷积神经网络CNN基础CNN网络由卷积层、池化层和全连接层构成。卷积层使用卷积核在输入上滑动进行卷积运算,这些权重会共享。可以选择让卷积层与池化层/降采样层互相连接在一起,以降低输入的维度。卷积操作对于大小为n∗nn*nn∗n的输入和m∗mm*mm∗m的卷积核,其中m≤nm\le nm≤n。输入用XXX表示,权重用WWW表示,输出用HHH表示。在每个位置i,ji,ji,j,输出计算过程为:hi,j=∑k=1m

2020-09-10 09:56:45 271

原创 自然语言处理自学笔记-03 使用Word2vec进行文档分类

自然语言处理自学笔记-03 使用Word2vec进行文档分类使用Word2vec进行文档分类用词向量进行文档分类代码实现使用Word2vec进行文档分类Word2vec提供了一种单词数字表示的方法。词嵌入被用作许多任务的单词特征表示,比如图像标题生成和机器翻译。文档分类任务是词嵌入实际应用中的很简单的一个应用。在文档分类中,需要通过词向量技术嵌入整个文档而不是单词。用词向量进行文档分类在小数据集上,CBOW算法要好于skip-gram。在这里我们使用CBOW算法来进行文档分类。过程如下:从所有

2020-09-09 20:44:48 343

原创 自然语言处理自学笔记-02 Word2vec——基于神经网络学习单词表示

自然语言处理自学笔记-02 Word2vec——基于神经网络学习单词表示

2020-09-09 16:09:39 227

原创 TensorFlow自学笔记-07 基于官方文档 多层感知机

TensorFlow自学笔记-07 基于官方文档 多层感知机TensorFlow 支持自动求导,可以使用 TensorFlow 优化器来计算和使用梯度。它使用梯度自动更新用变量定义的张量。本节将使用 TensorFlow 的一些强大功能,如 Contrib(层)来定义神经网络层及使用 TensorFlow 自带的优化器来计算和使用梯度。通过前面的学习,我们已经知道如何使用 TensorFlow 的优化器。Contrib 可以用来添加各种层到神经网络模型,如添加构建块。对于分类任务,最好使用交叉熵损失函

2020-09-08 10:23:09 161

原创 TensorFlow自学笔记-06 基于官方文档 反向传播

TensorFlow自学笔记-06 基于官方文档 反向传播import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data/", one_hot=True)n_input = 784n_classes = 10max_epochs = 10000learning_rate = 0.5batch_s

2020-09-07 15:53:50 108

原创 TensorFlow自学笔记-05 基于官方文档 多元线性回归

TensorFlow自学笔记-05 基于官方文档 多元线性回归在 TensorFlow 实现简单线性回归的基础上,可通过在权重和占位符的声明中稍作修改来对相同的数据进行多元线性回归。在多元线性回归的情况下,由于每个特征具有不同的值范围,归一化变得至关重要。...

2020-09-07 09:21:50 126

原创 TensorFlow自学笔记-04 基于官方文档 简单线性回归

TensorFlow自学笔记-04 基于官方文档 简单线性回归对波士顿房价数据集的房间数量采用简单线性回归,目标是预测在最后一列给出的房价。import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt# 定义归一化函数def normalize(X): mean = np.mean(X) std = np.std(X) X = (X - mean)/std return X

2020-09-06 21:00:31 123

原创 TensorFlow自学笔记-03 基于官方文档 矩阵基本操作

TensorFlow自学笔记-03 基于官方文档 矩阵基本操作矩阵运算,例如执行乘法、加法和减法,是任何神经网络中信号传播的重要操作。通常在计算中需要随机矩阵、零矩阵、一矩阵或者单位矩阵。import tensorflow as tf# 开启一个交互式会话sess = tf.InteractiveSession()# 创建一个对角阵I_matrix = tf.eye(5)print(I_matrix.eval())# 创建一个变量X = tf.Variable(tf.eye(10))

2020-09-06 19:20:42 227

原创 TensorFlow自学笔记-02 基于官方文档 常量、变量、占位符

TensorFlow自学笔记-02 基于官方文档 常量、变量、占位符常量变量占位符常量声明:import tensorflow as tf# 标量常量t1 = tf.constant("welcome")# 多维常量向量t2 = tf.constant([1, 2, 3])# 全零张量t3 = tf.zeros([3, 3], tf.int32)# 全一张量t4 = tf.ones([3, 3], tf.int32)# 创建与现有数组或张量常量维度相同的张量常量t5 = tf.z

2020-09-06 16:06:34 171

原创 自然语言处理自学笔记-01 基于TensorFlow 单词表示的经典方法

自然语言处理-01 基于TensorFlow 单词表示的经典方法WordNet独热编码TF-IDF方法共现矩阵WordNetWordNet是处理单词表示的最流行的经典方法。它是一个外部词汇数据库,对给定单词的定义、同义词、祖先、派生词等信息进行编码。它可以推断给定单词的各种信息。WordNet是一个词汇数据库,用于对单词间的磁性标签关系(名词、动词、形容词、副词)进行编码。由美国普林斯顿大学心理学系首创。WordNet考虑单词之间的同义性来评估单词之间的关系。有多国的语言可供选择:http://glo

2020-09-06 11:19:44 210

原创 机器学习-10 基于sklearn支持向量机

机器学习-10 基于sklearn支持向量机支持向量机——分类代码展示支持向量机——回归支持向量机——分类支持向量机 (SVMs) 的应用面比较广,可用于回归、分类和和 异常检测。其最常见的应用是做分类。支持向量机(Support Vector Machine, SVM) 是由最优分类面衍生而来, 在线性可分情况中, 其根本思想是将特征向量映射到一个比自身维度更高的空间里,在这个空间里建立一个新的隔离平面,使得隶属不同类别的特征向量点间隔最大。各类别对应的平行超平面间的距离越大,分类器的总误差则越小。

2020-09-05 19:13:40 324

原创 机器学习-09 基于sklearn 核岭回归

机器学习-08 自学笔记 基于sklearn 线性和二次判别分析

2020-09-05 09:46:39 1477

原创 机器学习-08 自学笔记 基于sklearn 线性和二次判别分析

机器学习-08 基于sklearn 线性和二次判别分析线性和二次判别分析线性和二次判别分析

2020-09-03 10:44:39 291

原创 机器学习-07 基于sklearn 广义线性模型- 多项式回归

机器学习-07 基于sklearn 广义线性模型- 多项式回归多项式回归代码实现多项式回归在前面我们已经掌握了曲线拟合的一种方法——分段线性化。把无数条直线串在一起,每一条直线拟合曲线的一部分,这样就近似的拟合了整条曲线。可是这也增加了需要优化的参数个数,也使一条光滑的曲线分裂成小的直线,这显然是我们不希望见到的。那么还有别的方法吗,多项式回归就可以对非线性函数进行拟合。多项式回归问题可以通过变量转换化为多元线性回归问题来解决。下面我们给出一个二元二次方程:y^(w,x)=w0+w1x1+w2x2

2020-09-02 10:37:59 319

原创 arduino踩坑记录-01 hello world 点亮小灯

arduino踩坑记录-01 hello world初始代码初始代码Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。特别适合零基础创客用于初步了解/理解嵌入式开发。Arduino由一个欧洲开发团队于2005年冬季开发。它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则

2020-09-01 00:07:39 203

原创 TensorFlow自学笔记 - 基于官方文档 01 helloworld

TensorFlow自学笔记 - 基于官方文档 01 helloworldTensorFlow程序复现TensorFlow深度学习已经在更大领域变成了基本的算法。四年前,正上大学的我突然发现了Python语言,这一号称宇宙最简单的语言抓住了我的眼球,也开始了学习之旅。学着学着发现,对Python的学习逐渐被对包的学习而取代。两年前,我进入研究生的学习生涯,在导师问我想要做的研究方向时,我说我想做图像处理,可是我导师是做测量的,于是对深度学习的学习就变成了一个自己的爱好。两年的时间,日子在游戏中度过,而深

2020-08-30 18:26:57 117

原创 python+opencv-12 黑帽和礼帽运算

python+opencv-12 黑帽和礼帽运算黑帽和礼帽运算黑帽和礼帽运算黑帽和礼帽运算是建立在开运算与闭运算基础上的。

2020-08-30 10:16:53 942

原创 python+opencv-11 开运算与闭运算

python+opencv-11 开运算开运算与闭运算代码展示开运算与闭运算开运算与闭运算都是在腐蚀和膨胀的基础上进行的。开运算是指先腐蚀后膨胀的操作,定义为:I⋅S=(I−S)+SI\cdot S=(I-S)+SI⋅S=(I−S)+S其中III为输入图像,SSS为卷积核函数。开运算可以用来消除亮度较高的细小区域,在纤细处分离物体。闭运算是指先膨胀后腐蚀的操作,定义为:I⋅S=(I+S)−SI\cdot S=(I+S)-SI⋅S=(I+S)−S其中III为输入图像,SSS为卷积核函数。闭

2020-08-29 20:39:22 3869 1

原创 python+opencv-10 形态学梯度运算

python+opencv-10 形态学梯度运算形态学梯度运算代码展示重要代码展示形态学梯度运算如果说腐蚀是去掉了图像的边缘信息,膨胀加强了边缘信息,那么当用膨胀后的图像减去腐蚀后的图像,就得到了图像的边缘信息。形态学梯度的定义为:G=I⊕S−I!SG=I\oplus S-I!SG=I⊕S−I!S其中GGG为输出图像,III为输入图像,SSS为卷积核函数。⊕\oplus⊕为膨胀运算,!!!为腐蚀运算。代码展示import cv2 as cvimport numpy as npimage

2020-08-29 20:08:07 749

原创 python+opencv-09 膨胀

python+opencv-09 膨胀膨胀代码展示重要代码展示膨胀与腐蚀相反,膨胀是由图像的边界点处向外部扩张。如果说腐蚀是用像素点与核函数做与运算全1时才保留,那么膨胀做的就是或运算,只要由像素点扩展出的与卷积核等大区域有重叠的地方,就会置1。代码展示import cv2 as cvimport numpy as npimage = cv.imread("fu.jpg")k = np.ones((3, 3), np.uint8)img = cv.dilate(image, k, iter

2020-08-29 19:51:27 214

原创 python+opencv-08 腐蚀

python+opencv-08 腐蚀腐蚀代码展示重要代码解释腐蚀腐蚀是形态学基本操作中的一种,它通过使图像沿着边界向内收缩,达到消除边界点的目的。一般输入图像为二值图像。腐蚀操作是将像素点与卷积核函数做与运算,只有全1时才保留这个像素点,否则则舍弃这个点。代码展示import cv2 as cvimport numpy as npimage = cv.imread("fu.jpg")k = np.ones((3, 3), np.uint8)img = cv.erode(image, k

2020-08-29 19:29:33 1960

原创 python+opencv-07 Otsu阈值处理

python+opencv-07 Otsu阈值处理Otsu阈值处理代码展示Otsu阈值处理Ostu是一种阈值选择的算法,在面对色彩分布不均匀的图像时,阈值的选择就会变得很复杂。这时我们就不需要凭借经验去认为设定,而是根据Otsu算法来计算出最合适的阈值。Ostu的思想很简单,属于暴力寻优的一种,分别计算选用不同灰度级作为阈值时的前景、背景、整体方差。当方差最大时,此时的阈值最好。代码展示我们从百度图片库中选择一张偏暗的图片来测试程序。import cv2 as cvimage = cv.im

2020-08-29 11:34:06 3036

原创 python+opencv-06 局部阈值处理

python+opencv-06 局部阈值处理局部阈值处理代码展示重要代码解释局部阈值处理当图像的色彩分布不均衡时,使用全局阈值处理的效果不是很好,这是使用局部阈值处理来进行分割,可以产生很好的效果。局部阈值的处理原理是,针对每一个像素点专门配置一个阈值来进行处理,这些阈值就构成了和原图像维度相同的矩阵。代码展示import cv2 as cvimage = cv.imread("lena.jpg", cv.IMREAD_GRAYSCALE)ret, dst = cv.threshold(i

2020-08-29 11:14:55 1516 1

原创 python+opencv-05 全局阈值处理

python+opencv-05 全局阈值处理阈值处理与区域分割全局阈值处理阈值处理与区域分割在图像处理中,我们希望把通过物体的所在位置,把图像分成若干个特定的区域,从而达到区域分割的目的。阈值处理通过剔除高于或低于区域物体像素值的方法来达到这一目的。通过灰度信息提取前景,在前景物体与背景对比度较强时,效果明显。而对比度较弱时,可以先增强对比度再进行阈值处理。处理以后的图像为二值图像,因此也被称为二值化处理。在阈值处理中一般有全局阈值处理和局部阈值处理两种方法全局阈值处理全局阈值处理一般有两种处理方

2020-08-29 10:43:54 1475

原创 机器学习-06 基于sklearn 广义线性模型- 弹性网络

机器学习-06 基于sklearn 广义线性模型- 弹性网络

2020-08-26 11:23:32 756

原创 机器学习-05 基于sklearn 广义线性模型- MultiTaskLasso

机器学习-05 基于sklearn 广义线性模型- MultiTaskLasso用线性回归拟合曲线方程——分段线性化MultiTaskLasso代码复现重要代码用线性回归拟合曲线方程——分段线性化要想把MultiTaskLasso说明白,我们需要从它的一个应用说起。在sklearn官方手册中提供了这么一个例子,让我们利用线性回归的方法去拟合一个曲线方程。如图所示:那么怎么用线性回归去拟合曲线方程呢,在程序里提供了这么一个思路。我们可以把这个曲线分成数段,每一段看成一条直线,那么当分的份数足够多时,就

2020-08-25 10:46:18 877

原创 机器学习-04 基于sklearn 广义线性模型- Lasso回归

机器学习-04 基于sklearn 广义线性模型- Lasso回归Lasso回归代码展示Lasso回归稀疏系数是指含零较多的系数。这种现象的产生可能是特征值设定的原因,比如性别男性为1女性为0,或者天气晴天为1阴天为0,这种非黑及白的选择如果有很多,可能会产生一溜零的情况。百度百科上面这段话写的特别好,特地摘抄在下面“该方法是一种压缩估计。它通过构造一个惩罚函数得到一个较为精炼的模型,使得它压缩一些回归系数,即强制系数绝对值之和小于某个固定值;同时设定一些回归系数为零。因此保留了子集收缩的优点,是一种处

2020-08-23 11:37:03 776 1

原创 机器学习-03 基于sklearn 广义线性模型-岭回归

机器学习-03 基于sklearn 广义线性模型-岭回归岭回归代码展示重要代码解释岭回归在通过普通最小二乘法来求函数的参数时,我们使用了求偏导的方法。这个方法本身没有问题,但是却要求各参数之间没有影响。比如,我们在对房价进行预测时,我们统计了房屋面积和房间数量,这两个变量这件是有影响的,房间数量越多,房屋的面积响应也会越大,这就叫做相关性。当各变量之间的线性相关性越大,会导致最小二乘估计对于随机误差非常敏感,可能产生很大的方差。那么有没有一种算法可以减小甚至消除这种相关性呢。岭回归算法就可以做到。岭回归

2020-08-22 16:07:38 198

原创 机器学习-02 基于sklearn 广义线性模型-普通最小二乘法

机器学习 基于sklearn-02 从sklearn说起线性回归普通最小二乘法案例分析线性回归回归分析的主要工作,是根据统计获得的数据点来训练出一个函数表达式,根据这个函数表达式来对新的数据点进行预测。线性是指线性方程。线性方程也就是一次函数,一元一次函数的定义式如下所以。y=k∗x+by=k*x+by=k∗x+b在做回归分析时,数据的影响因素不止一个因此需要使用多元一次函数来拟合。预测出的值为预测值,用y^\hat{y}y^​来表示。真实值用y{y}y来表示。y^(ω,x)=ω0+ω1x1+⋯

2020-08-22 10:18:05 486

原创 机器学习 基于sklearn-01 从sklearn说起

机器学习 基于sklearn-01 线性回归机器学习sklearn机器学习机器学习是数学算法的一种统称,它生动形象的表现了计算机借用数学方法解决问题的过程。与其说机器在学习,不如说机器在套公式。同样的,如果没有计算机,我们自己利用这些数学算法,在计算不出错误的前提下也可以得到和计算机一样的结果。由此可见,在机器学习中,计算机所扮演的仅是一个计算器的角色。我们对结果拥有绝对的预测性。用这种算法做出来的人工智能,是真正意义上的人工智能。它完全体现人的意志,在决定论的世界里有规矩的运行着,所以使用机器学习的算

2020-08-20 11:09:47 210

原创 matplotlib-28 向统计图中添加表格

matplotlib-26 向统计图中添加表格代码展示代码展示# -*- coding: UTF-8 -*-import matplotlib as mplimport matplotlib.pyplot as pltmpl.rcParams["font.sans-serif"] = ["SimHei"]mpl.rcParams["axes.unicode_minus"] = Falsedata = [4, 9, 5, 10]labels = ["哈士奇", "贵宾犬", "吉娃娃", "

2020-08-19 19:59:45 364

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除