自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 实用调试技巧(以C/C++、VS2015为例)

在我们写程序的过程中,调试是必不可少的一环,这关系着我们的代码能不能运行,能不能很好的运行。调试是每个程序员必须掌握的技能,没有选择的余地!这里我们以VS中的C语言为例,讲解一下实用调试技巧。一、什么是bug1.1 概念bug是计算机领域专业术语,bug原意是“臭虫”,现在用来指代计算机上存在的漏洞,原因是系统安全策略上存在的缺陷,有攻击者能够在未授权的情况下访问的危害。1.2 简介漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统

2021-01-19 18:53:51 77

原创 VS2015 无法打开源文件 “stdafx.h“问题

文章目录一、stdafx.h是什么?二、简介:三、问题:四、原因:五、解决方法:一、stdafx.h是什么?stdafx.h在C++中起到的作用是头文件预编译,即把C++工程中使用的MFC头文件预先编译,以后该工程编译时,直接使用预编译的结果,以加快编译速度。C++编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h并不是标准C++头文件,与项目的源代码文件存放在同一个文件文件夹下,通过#include"stdafx.h"引用。stdafx的英文全称为:Standard Applic

2020-11-10 17:14:53 1672

原创 C++中的auto,你是这样用的吗

一、简介auto关键字是能被称为C++中的语法糖系列的关键字,为什么这么说呢,因为这些关键字可以让代码变得非常的省事,不那么繁琐,这对于程序员来说,是一大利好。提到auto关键字,就不得不提到它的更迭了。1. C/C++98:早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量。但是非常遗憾的是,一直没有人使用它,这是什么原因呢?原因非常简单:因为在早期的C/C++中,auto被用来修饰局部变量,表明该变量是一个自动变量,这就意味着在函数结束之后,函数的栈帧就

2020-10-14 11:06:39 622

原创 C++ 内联函数 学习总结

一、概念以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。二、引入在C++语言中,宏函数的使用是很便利的,但是它也存在着他的缺陷:1、宏函数可能会存在一定副作用2、在预处理阶段进行替换,不会参与编译,少了类型检测3、宏函数不能调试(等等其他缺陷,这里只提出三个主要缺陷)具体表现在哪呢,我们可以通过下面一个代码和运行结果来看:#include <iostream>using namespace s

2020-10-09 18:09:30 373

原创 软件的单元测试报告

最近有个项目结题需要我们写大量的测试方面的报告,其中就有单元测试报告。我负责去撰写这个测试报告,所以查了一些资料,总结出来了一个模板,供大家参考。首先是附一张单元测试报告的总目录截图:下来将进行分块介绍1.范围1.1 软件标识:软件名称:xx系统软件标识:软件版本:1.0文档标识:XXX缩略语:xx系统1.2 文档目的此文档的编写目的为检验各单元模块是否被正确的编码,即验证代码和软件系统设计的一致性是单元测试的主要目标,还需要确保代码在结构上可靠且简装,能够在各种条件下给与正

2020-09-25 15:23:51 1175

原创 浅谈C++类与对象(一)

C/C++本质的区别就是编码过程中关注的点不一样,C语言更关注的是过程,C++更关注的是对象。由于关注的点不一样,因此产生了我们平时耳闻能详的说法。C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。一、面向对象C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。二、结构体与类首先我们来看看C++中的结构体和C语言中的结构体之间的关系,其

2021-05-11 16:13:24 13

原创 浅谈#pragma once与 #ifndef的区别

一、作用:为了避免同一个文件被include多次二、方式2.1 #ifndef #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句 #endif2.2 #pragma once#pragma once ... ... // 一些声明语句三、区别#ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包

2021-04-06 09:57:12 22

原创 浅谈C语言中#define的用法

文章目录一、#定义标识符1.1 语法表示1.2 使用方法示例1.3 ;的使用二、定义宏2.1 什么叫定义宏?2.2 宏的声明方式:2.3 使用示例及避雷三、define替换规则四、带副作用的宏参数五、宏和函数对比六、命名约定一、#定义标识符1.1 语法表示语法表示:#define name stuff1.2 使用方法示例#define MAX 1000 //1000替换M#define reg register //为 register这个关键字,创建一个简短的名字#defi

2021-03-25 18:37:55 89

原创 浅谈C语言文件操作

文章目录一、什么是文件1.1程序文件1.2数据文件二、文件名三、文件类型四、文件缓冲区五、文件指针六、文件的打开和关闭七、文件的顺序读写八、文件的随机读写8.1 fseek8.2 ftell8.3 rewind九、文件结束判定9.1 feof一、什么是文件磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。1.1程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。1.2数据文件文件

2021-03-23 21:46:57 42

原创 QT调用打印机实现模板打印功能(手把手教学!!!)

手把手教学当然要从创建工程开始了。一、创建工程项目介绍和位置,工程名自己取不要有中文。这里我选的是MinGW 32bit,建议和我一样。类信息的选择。这些就是创建的项目中会包含的文件,点击完成。二、UI设计及控件命名这个就是我的主界面的设计,主要用到了QcomboBox、QLineEdit、QGroupBox、QLabel、QPushButton这几个控件。部分控件命名如下图:三、代码演示3.1 .pro文件首先.pro文件这里一定要注意,不然运行的时候一定会出错。将创

2021-03-16 10:40:01 182 8

原创 浅谈结构体内存对齐

要谈论结构体内存对齐,我们就得先来看看结构体大小相关的知识。首先来看以下几个结构体大小。一、结构体常规认知struct S1{char c1; //1int i; //4char c2;//6};printf("%d\n", sizeof(struct S1));在我们的认知里,这个结构体的大小应该为11.但是我们来看看输出结果:从输出结果来看,与我们的预期是大相径庭。我们再来将结构体里面的成员变量的顺序进行变化来看看输出结果:输出结果又变成12了。再来看下一个结构

2021-03-11 17:09:59 83 2

原创 浅谈main函数返回值

我们在学习C语言的时候,会发现,我们所写的main函数返回值为0,我们都只知道这样写是对的,但是原因是什么呢?需要剖析这个问题,首先我们得考虑以下两个问题:1、main函数被谁调用?2、返回值 返给谁看?我们来回答这个问题:1、首先我们的操作系统在运行的过程中先调用startUp()这个函数,然后startUp()函数调用main()函数。2、返回给系统看。返回值返回,代表main()函数退出,代表程序退出,程序退出,就意味着对应的任务完成了。0->任务退出,且任务无错完成!0-&

2021-03-10 16:41:13 49

原创 puts、printf的使用异同(超完整!!)

我们在学习C语言的时候,肯定遇见过作用有点类似,但是却不一样,具体很难区分的情况。这篇博客我们来分别看一下这四个库函数的异同。一、puts1、首先是它的定义:int puts ( const char * str );2、头文件:#include (stdio.h)3、作用:字符串标准输出将按str指向标准输出(stdout)的C字符串编写,并附加一个新行字符(\n)。该函数开始从指定的地址(str)复制,直到它到达终止的空字符("\0")。此终止的空字符不复制到流中。注意,它不仅

2021-03-10 11:37:14 91

原创 笔试题:杨氏矩阵

题目内容:有一个数字矩阵,矩阵的每行从左到右是递增的,从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。int Find(int arr[][5], int row, int col, int target){ //查找的本质:排除的过程 //从右上角开始比较,一次可以排除一行,或者一列 int i = 0; int j = col - 1; while (i < row&&j >= 0) { if (target < arr[i]

2021-03-09 21:42:20 49

原创 笔试题:字符串旋转

题目内容:写一个函数,判断一个字符串是否为另外一个字符旋转后的字符串。例如:给定S1=AABCD和S2=BCDAA,返回1给定S1=abcd和S2=ACBD,返回0;AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC#include <stdio.h>#include <Windows.h>#include <assert.h>//1、实现任意次数的左旋 //2、逐次进行左旋,然后不断进行比

2021-03-09 21:13:22 46

原创 需要用HICON去定义要添加的头文件

今天在移植代码的时候看到了HICON,移植过来之后是未定义的,于是就去查了一下。HICON 是微软平台bai下的图标句柄。类似的定义还zhi有HANDLE、HWND、HDC、HBITMAP等。遵循的dao命名规zhuan则为大写shu的H加上大写的句柄类型(其中HANDLE是通用句柄,没有类型)。在VC/MFC下,句柄其实就是一个用于兼容windows平台下其它编程语言的地址标记定义,其本质,是一个无类型指针:typedef void *HANDLE;typedef HANDLE HICON;//

2021-03-05 16:20:52 51

原创 浅谈整型数据在内存中的存储

首先整型数据类型都有哪些呢?char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形他们各占多少个字节呢?char/unsigned char :1字节char *:8字节short int:2字节int/unsigned int:4字节long int:8字节float:4字节double:8字节long long:8字节long double:16字节//这里以64位为例我

2021-02-01 20:10:09 102 2

原创 const修饰指针

文章目录一、常量指针1二、常量指针2三、指针常量四、指向整型常量的常量指针4.1 修改指向的目标4.2 修改指向这篇博客我们来学习const修饰指针的几种情况。首先我们我们先罗列一下这四种情况。一、常量指针1二、常量指针2三、指针常量四、指向整型常量的常量指针一、常量指针1常量指针:指针指向的值不能修改(指针指向地址的具体指不能修改),但是指针的值可以修改(指针指向的地址可以修改)const 类型 * 指针名 = 地址例如: const int * p = &a;此时 指针p

2021-01-21 16:41:33 51

原创 调试实例(C/C++ VS为例)

这篇博客我们来看调试实例。首先是:实现代码:求 1!+2!+3! …+ n! ;不考虑溢出。int main(){int i = 0;int sum = 0;//保存最终结果int n = 0;int ret = 1;//保存n的阶乘scanf("%d", &n);for(i=1; i<=n; i++){int j = 0;for(j=1; j<=i; j++){ret *= j;}sum += ret;}printf("%d\n", sum);r

2021-01-21 15:06:48 60

转载 VS中常用的快捷键(超详细!!!)

1、窗口快捷键记忆诀窍:凡跟窗口挂上钩的快捷键必有一个W(Windows);Ctrl+W,W: 浏览器窗口 (浏览橱窗用有道的翻译是window shopping)Ctrl+W,S: 解决方案管理器 (Solution)Ctrl+W,C: 类视图 (Class)Ctrl+W,E: 错误列表 (Error)Ctrl+W,O: 输出窗口(输出Output;输出程序的的编译信息 ;可在vs中“工具”—-“选项”—-“调试”—-“输出窗口”进行配置需要查看哪些信息)Ctrl+W,P: 属性

2021-01-08 15:46:07 381

原创 C++ opencv之图像去噪(blur,GaussianBlur,medianBlur,fastNlMeansDenoisingColored)

上篇博客我们学到了图像添加噪声,这篇我们来学习图像去噪声。OpenCV中常见的图像去噪声的方法有:- 均值去噪声- 高斯模糊去噪声- 非局部均值去噪声- 双边滤波去噪声- 形态学去噪声一、主要内容这里均值去噪声、高斯模糊之前也讲过了,后面两个方法之后再讲。1.1 均值去噪声1.2 高斯模糊去噪声1.3 非局部均值去噪声L-Means的全称是:Non-Local Means,直译过来是非局部平均,在2005年由Baudes提出,该算法使用自然图像中普遍存在的冗余信息来去噪声。与常用的

2021-01-06 18:48:52 631 2

原创 C++ opencv之椒盐噪声与高斯噪声生成

这篇博客我们来学习一下椒盐噪声和高斯噪声的生成。一、主要内容1.1 噪声的产生图像噪声产生的原因很复杂,有的可能是数字信号在传输过程中发生了丢失或者受到干扰,有的是成像设备或者环境本身导致成像质量不稳定,反应到图像上就是图像的亮度与颜色呈现某种程度的不一致性。1.2 噪声的分类从噪声的类型上,常见的图像噪声可以分为如下几种:椒盐噪声是一种随机在图像中出现的稀疏分布的黑白像素点, 对椒盐噪声一种有效的去噪手段就是图像中值滤波高斯噪声/符合高斯分布一般会在数码相机的图像采集(acquisit

2021-01-06 00:07:12 274

原创 C++ opencv之中值滤波(medianBlur)

这篇博客我们主要来学习中值滤波。一、主要内容中值滤波是一种典型的非线性滤波,是基于排序统计理论的一种能够有效抑制噪声的非线性信号处理技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,让周围的像素值接近真实的值从而消除孤立的噪声点。该方法在取出脉冲噪声、椒盐噪声的同时能保留图像的边缘细节。这些优良特性是线性滤波所不具备的。中值滤波首先也得生成一个滤波模板,将该模板内的各像素值进行排序,生成单调上升或单调下降的二维数据序列,二维中值滤波输出为g(x, y)=medf{f(x-k, y-1),

2021-01-05 20:22:47 120

原创 C++ opencv之图像均值与高斯模糊(Blur,GaussianBlur)

这篇博客来学习一下图像均值与高斯模糊。一、主要内容1.1 均值模糊这是一个平滑图片的函数,它将一个区域内所有点的灰度值的平均值作为这个点的灰度值。像该函数对领域点的灰度值进行权重相加最后设置灰度值,这样的操作又叫卷积,这样的滤波器叫线性滤波器。1.2 高斯模糊高斯滤波器能够有效的抑制噪声,平滑图像。高斯滤波器相比于均值滤波器对图像个模糊程度较小。高斯模糊和均值模糊其原理上的唯一区别只是在于卷积核的值不同罢了,高斯卷积核矩阵值服从二维高斯函数也就是说一个图像与服从二维高斯分布的函数做卷积,由于

2021-01-04 22:49:27 188

原创 C++ opencv之图像卷积操作

这篇博客我们来学习图像卷积操作(基于opencv)一、概念图像卷积可以看成是一个窗口区域在另外一个大的图像上移动,对每个窗口覆盖的区域都进行点乘得到的值作为中心像素点的输出值。窗口的移动是从左到右,从上到下。窗口可以理解成一个指定大小的二维矩阵,里面有预先指定的值。二、API函数2.1 函数原型void cv::blur(InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,-1), int b

2021-01-04 18:42:46 209

原创 C++ opencv之直方图反向投影(calcBackProject)

这篇博客我们学习直方图反向投影。一、主要内容1.1 概述反向投影是一种记录给定图像中的像素点如何适应直方图模型像素分布的方式,简单来讲,反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的特征。反向投影在某一位置的值就是原图对应位置像素值在原图像中的总数目。1.2 一般步骤反向投影是将特征“反映”到图像上,对于物体特征识别和分割有着很大的作用。进行反向投影的一般步骤: 1、获取直方图的源,比如我们要对手进行反向投影,那么直方图的源就是肤色的ROI 2、获取需要反向投影的图

2021-01-04 18:18:52 72

原创 C++ opencv之图像直方图比较(compareHist)

这篇博客主要来学习图像直方图比较。一、主要内容1.1 目的图像直方图比较,就是计算两幅图像的直方图数据,比较两组数据的相似性,从而得到两幅图像之间的相似程度。1.2 函数原型void cv::calcHist (const Mat * images, int nimages, const int * channels, InputArray mask, OutputArray hist, int dims,

2020-12-28 17:04:34 157

原创 C++ opencv之图像直方图均衡化(equalizeHist)

这篇博客我们来学习C++opencv之图像直方图均衡化。一、主要内容1.1 直方图均衡化直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法.1.2 作用用于提高图像的质量1.3 函数原型C++: void equalizeHist(InputArray src, OutputArray dst)二、代码演示#include <opencv2/opencv.hpp>#include <iostream>using namespace cv;us

2020-12-28 10:40:59 310 2

原创 C++ opencv之图像直方图(calcHist)

这篇博客我们主要来学习图像直方图。图像直方图是图像像素值的统计学特征、计算代价较小,具有图像平移、旋转、缩放不变性等众多优点,广泛地应用于图像处理的各个领域,特别是灰度图像的阈值分割、基于颜色的图像检索以及图像分类、反向投影跟踪。Bins是指直方图的大小范围, 对于像素值取值在0~255之间的,最少有256个bin,此外还可以有16、32、48、128等,256除以bin的大小应该是整数倍。calcHist(&bgr_plane[0], 1, 0, Mat(), b_hist, 1, bins

2020-12-25 15:47:05 393

原创 C++ opencv之图像插值法

这篇博客主要将图像插值算法。一、主要方法主要是以下四种:最常见四种插值算法INTER_NEAREST = 0INTER_LINEAR = 1INTER_CUBIC = 2INTER_LANCZOS4 = 4相关的应用场景几何变换、透视变换、插值计算新像素resize,如果size有值,使用size做放缩插值,否则根据fx与fy卷积。二、代码演示#include<opencv2/opencv.hpp>#include<iostream>using nam

2020-12-24 16:14:07 109 2

原创 C++ opencv之图像翻转(flip)

这篇博客主要学习opencv中图像的翻转。主要是一个函数:flip一、函数简介1.1函数原型void cv::flip( InputArray src, OutputArray dst, int flipCode);参数说明:InputArray src:要处理的原始图像OutputArray dst:是和src具有相同大小、类型的目标图像int flipCode:旋转类型旋转说明:flipCode = 0:x轴方向旋转flipCode > 0:

2020-12-24 15:40:20 207

原创 C++ opencv之视频读写(VideoCapture,VideoWriter)

这篇博客主要讲解OpenCV中视频读写。主要涉及到两个API函数:VideoCaptureVideoWriter一、函数简介1.1 VideoCapture视频文件读取、摄像头读取、视频流读取VideoCapture既支持从视频文件(.avi , .mpg格式)读取,也支持直接从摄像机(比如电脑自带摄像头)中读取。要想获取视频需要先创建一个VideoCapture对象,VideoCapture对象的创建方式有以下三种:**1、是从文件(.MPG或.AVI格式)中读取视频,**对象创建以后,O

2020-12-24 11:33:45 436

原创 C++ opencv之像素值统计(minMaxLoc,meanStdDev)

一、引言这篇博客的主要知识点为:像素值统计最小(min)最大(max)均值(mean)标准方差(standard deviation)API 的知识点为:最大最小值minMaxLoc计算均值与标准方差meanStdDev二、主要内容主要有两个API函数:2.1 minMaxLoc2.1.1 函数原型void minMaxLoc( const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, P

2020-12-23 15:44:20 150

原创 交叉熵的计算

在学习孪生神经网络的时候,讲到Loss计算的时候,看到了一个概念——交叉熵,查了有关资料之后,觉得得到了答案,所以跟大家分享一下。我先附一下我看到的交叉熵是用在哪的。对于孪生神经网络而言,其具有两个输入:当两个输入指向同一个类型的图片时,此时标签为1。当两个输入指向不同类型的图片时,此时标签为0。然后将网络的输出结果和真实标签进行交叉熵运算,就可以作为最终的loss了。当我们输入如下两个相似图片甚至同一图片的时候,我们希望网络的输出为1。我们会将预测结果和1求交叉熵。当我们输入两个不相似图片的

2020-12-09 17:58:49 128

原创 C++ opencv之 通道分离与合并(split,merge,mixChannels)

文章目录一、知识点二、函数原型1、split2、merge3、mixChannels三、代码四、输出图片1、通道分离2、通道合并3、通道混合这篇博客我们来学习opencv的通道分离与合并(split,merge)两个函数:一、知识点OpenCV中默认imread函数加载图像文件,加载进来的是三通道彩色图像,色彩空间是RGB色彩空间、通道顺序是BGR(蓝色、绿色、红色)、对于三通道的图像OpenCV中提供了两个API函数用以实现通道分离与合并。- split // 通道分类- merge // 通道

2020-12-03 16:11:39 301

原创 C++ opencv之像素操作之逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)

这篇博客我们来学习像素操作之逻辑操作。一、知识点主要的知识点是:对图像中的位操作:- bitwise_and //按位与- bitwise_xor //按位异或- bitwise_or //按位或取反操作:- bitwise_not //取反二、函数原型1、按位与操作bitwise_and(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst

2020-12-03 15:28:27 152

原创 C++ opencv之OpenCV自带颜色表操作

这篇博客我们来学习C++ opencv之OpenCV自带颜色表操作一、API函数主要的API函数为我的理解是applyColorMap(输入图片,输出图片,需要遍历的数组)这是一个伪色彩函数。1、函数说明1、函数说明:(1)void applyColorMap(InputArray src, OutputArray dst, int colormap)src: 源图像(灰度图或彩色图(CV_8UC1 or CV_8UC3))。dst: 在源图像上进行色彩映射后的结果图像。colormap

2020-12-01 16:33:06 179

原创 C++ opencv之键盘响应操作

文章目录一、引言二、键盘响应操作Demo三、效果演示这篇博客来学习一下键盘响应操作一、引言这一块内容没有新的API函数,就是通过设置键盘上的按键与opencv中显示的函数形成键盘相应的事件来完成的,我们来看看键盘上一些常用的键盘键值表:这里面就有我们下面代码中出现的esc按键,对应的键值表的数字为27,我们定义一个整型的c,当c=27时候跳出循环。二、键盘响应操作Demovoid QuickDemo::key_Demo(Mat &image){ Mat gray,hsv;

2020-12-01 11:05:46 305

原创 C++ opencv之LUT的作用与用法

文章目录一、函数原型二、代码三、参数修改四、颜色对比这篇博客我们来学习LUT的作用与用法主要知识:Look Up Table(LUT)查找表解释了LUT查找表的作用与用法,代码实现与API介绍一、函数原型API函数原型:- applyColorMap(src, dst, COLORMAP)- src 表示输入图像- dst表示输出图像- 匹配到的颜色LUT, OpenCV支持13种颜色风格的查找表映射二、代码下面附一下这个用法的Demo代码:void QuickDemo::cu

2020-12-01 10:19:46 181

原创 C++ opencv之TrackBar滚动条操作演示-调整图像亮度

文章目录一、了解createTrackbar()函数1、函数原型2、参数说明二、使用样例这篇博客我们来学习一下opencv中TrackBar滚动条操作演示-调整图像亮度。一、了解createTrackbar()函数1、函数原型int createTrackbar(conststring& trackbarname, conststring& winname, int* value, int count, TrackbarCallback onC

2020-11-27 10:19:21 130

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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