使用title函数为马赛克图添加自定义标题 - R语言

41 篇文章 ¥59.90 ¥99.00
本文介绍了如何在R语言中使用title函数为马赛克图添加自定义标题,以增强图形的可读性和解释性。通过示例代码展示了创建马赛克图的过程,并讲解了如何移除默认标题并添加个性化标题。

使用title函数为马赛克图添加自定义标题 - R语言

在R语言中,我们可以使用title函数为图形添加自定义标题。标题可以增加图形的可读性和解释性,帮助观察者更好地理解图形所传达的信息。本文将向您展示如何使用title函数在R中为马赛克图(mosaic plot)添加自定义标题。

马赛克图是一种用于可视化两个或多个分类变量之间关系的图形。它将矩形分割成多个小方格,每个小方格的大小表示相应分类变量的频数或占比。通过马赛克图,我们可以观察到分类变量之间的关联关系和分布情况。

首先,我们需要安装并加载vcd包,该包提供了创建马赛克图的函数。您可以使用以下代码安装并加载该包:

install.packages("vcd")
library(vcd)

在我们继续之前,让我们生成一些示例数据来创建马赛克图。以下是一个简单的数据集,其中包含两个分类变量:性别和喜好(A、B、C三个类别)。

# 创建示例数据
gender <- c("男", "女", "女", "男", "男", "女", "男", "女", "女", "男")
preference <- c("A", "B", "C", "C", "A", "B", "C", "A", "B", "C")

# 将数据放入数据框
data <- data.frame(gender, preference)

现在,我们可以使用mosaicplot函数创建马赛克图,并使用t

<think>好的,我现在需要帮用户设计像处理中的采样和量化函数,将400x600x3的256级灰度像处理为40x60x3大小、4级灰度,并实现可视化。首先,我得理解用户的需求。用户提到的两个函数:SampleByratio和QuantifyByratio,分别负责采样和量化。然后输出处理后的像并进行可视化。 首先,关于采样函数SampleByratio。采样通常指的是空间分辨率的下采样,也就是减少像的尺寸。原是400x600,目标尺寸是40x60,也就是长宽各缩小到原来的1/10。这时候需要考虑采样方法。常见的采样方法有最近邻、双线性插值等。用户可能希望的是简单的下采样,比如每隔一定间隔取像素。例如,在行和列方向上每隔10个像素取一个点,这样400/10=40,600/10=60。但实际中可能需要用更规范的方法,比如使用像处理库中的函数,比如Python中的resize函数,指定interpolation方法为INTER_NEAREST或者INTER_AREA。不过用户可能希望自己实现,所以可能需要编写一个函数,按照比例缩小像,比如ratio=0.1,然后每隔10个像素取一个。或者直接计算目标尺寸,然后调整大小。这里可能需要用数组的切片操作,或者更复杂的插值方法。不过用户可能希望的是最简单的最近邻采样,所以可以用步长来取像素。例如,原的高度是400,目标40,那么步长是10,取第0行、第10行、第20行等,同理宽度。不过需要注意的是,如果使用整数步长的话,是否能够准确分割。例如400/10=40,没问题,600/10=60,也没问题。因此,SampleByratio函数可能接受像和缩放比例,比如ratio=0.1,然后返回缩小后的像。 然后是量化函数QuantifyByratio。量化是指减少灰度级,从256级降到4级。256级是8位(2^8=256),4级是2位(2^2=4)。用户可能希望将每个像素的灰度值映射到更少的级别。例如,将0-255分为4个区间,每个区间对应一个值。比如,0-63为0,64-127为1,128-191为2,192-255为3,然后将这些值乘以相应的量化因子,使其分布在0-255范围内,或者直接使用0、85、170、255这四个值代表四个灰度级。例如,量化后的像素值可以计算为原像素值除以量化步长,然后乘以步长。例如,步长是256/4=64,所以每个区间的长度是64。所以,每个像素的值会被量化为floor(pixel_value / 64) * 64。但这样的话,可能得到的是0,64,128,192,但这样四个级别之间的间隔是64,共4级。或者用户可能需要的是均匀划分到0-3,然后乘以一个系数使得最大值是255。例如,如果量化到4级,那么每个级之间的步长是255/(4-1)=85,所以级别为0,85,170,255。这时候,量化过程可以是:将原像素值除以步长,取整,再乘以步长。例如,对于每个像素值v,计算floor(v / 85) * 85。这样,四个级别对应的值为0,85,170,255。但这样的话,当原是灰度像时,每个通道的值都会被这样处理。如果是彩色像,每个通道都需要这样处理。不过用户的目标像是40x60x3,所以原可能是彩色像,处理后的像每个通道都量化为4级。因此,QuantifyByratio函数需要处理每个通道的像素值,将每个通道的256级减少到4级。需要注意的是,如果原已经是灰度像(单通道),可能需要调整,但用户的问题中原始像是400x600x3,所以是三通道的彩色像。因此,量化函数需要处理每个通道的像素,将每个通道的256级量化到4级。 接下来,我需要参考用户提供的引用。引用[1]中提到了将灰度级通过除以2的幂次方然后乘以该因子,比如uint8(img/(2^i))*(2^i)。例如,对于256级,如果i=6,则除以64,得到0-3,再乘以64,得到0,64,128,192。这可能是一种方法。而用户需要的是灰度级为4,即2^2=4,因此i应为6,因为2^(8-i)=4,当i=6时,8-i=2,得到4级。或者,根据用户的引用[3],灰度分辨率是比特数,4级对应2位。所以,量化函数可能需要将每个像素值映射到4个级别。比如,将0-255分成4个等宽的区间,每个区间的中间值或者最低值作为量化后的值。或者像引用[1]中的方法,通过除法取整再乘法恢复。例如,256级变为4级的话,每个区间的步长是64,那么每个像素值v会被量化为(v // 64) * 64。这样得到的四个值是0,64,128,192。这可能是一种方式。或者是否允许用户自定义不同的量化方式?比如,可能希望更均匀地分布在0-255之间,例如0,85,170,255,这样每个步长是85。这种情况下,可能计算每个像素的值为 (v // 85) * 85。比如,当v=84时,会被量化为0;v=85时,是85;v=170时是170,v=255时是255。但这样的话,四个级别的间距是85,总共有四个值。不过这样的话,计算时需要确定如何划分区间。例如,四个级别对应的区间可以是0-63,64-127,128-191,192-255,每个区间对应64的步长。或者分成四等分,每个步长是255/3=85。这样的话,区间是0-84,85-169,170-254,255。这取决于具体的量化方法。用户引用[1]中的方法是用除以2的幂次方,比如256级降为128级(间隔2),64级(间隔4)等。所以,可能用户希望的是按2的幂次方来划分,比如对于4级,即2^2,所以每个步长是256/4=64。这时候,每个像素的值为 (v // 64) * 64。但这样四个级别的值是0,64,128,192。但这样的话,最大的值192,可能无法达到255,而原中的高亮度部分会被截断到192。这可能不是用户想要的。或者是否需要将量化后的值扩展到0-255?比如,当量化到4级时,可能将每个级别映射到0,85,170,255,这样每个步长是85,覆盖整个0-255范围。例如,原像素值v除以85,取整后乘以85。这样,每个级别之间的间隔更大,覆盖整个范围。但用户引用的例子中,使用除以2^i的方式,例如,当i=6时,256/(2^6)=4,所以步长是64。可能用户希望采用类似的方法。所以,量化函数可能需要根据ratio参数,计算出需要除以的因子,例如,ratio=0.5可能对应减少到一半的灰度级。但在这个问题中,用户需要将灰度级从256降到4,也就是ratio=4/256=1/64?或者可能函数参数是量化后的级别数目,例如,QuatifyByratio(img, ratio),其中ratio是目标灰度级数目,如4。这时候,函数需要根据ratio计算步长,如256/ratio,然后将每个像素值量化为对应的级别。 现在,我需要综合这些信息来设计两个函数。 SampleByratio函数的设计:输入是像img和缩放比例ratio,输出是缩小后的像。例如,原尺寸是HxWxC,目标尺寸是H_ratio x W_ratio x C,其中H_ratio = H * ratio,W_ratio = W * ratio。或者,可能用户希望输入一个比例,例如0.1,将像缩小到原来的10%。对于400x600的像,缩小到40x60,即长宽各乘以0.1。此时,可以使用最近邻插值法进行下采样。在Python中,可以使用cv2.resize函数,指定目标尺寸为(60,40)(因为OpenCV中是width在前,height在后),使用interpolation=cv2.INTER_NEAREST。或者,自己实现,例如取每隔10个像素采样一次。例如,原的高度是400,每隔10行取一行,共40行;宽度是600,每隔10列取一列,共60列。这样,在Python中,可以使用数组的切片操作:img[::10, ::10, :]。但需要注意,步长是否正确。例如,400行,每隔10行取一次,总共有40行。比如,0,10,20,...,390,共40个点。同理,600列,每隔10列取一次,共60个点。所以,这样的切片是正确的。因此,SampleByratio函数可以这样实现:根据给定的缩放比例,计算步长,然后对像进行切片。例如,ratio=0.1,对应的步长是1/ratio=10。因此,函数可以计算step_h = int(1/ratio),step_w = int(1/ratio)。然后,返回img[::step_h, ::step_w, :]。但需要确保ratio的倒数是整数。比如,用户给出的例子是400→40,所以ratio=0.1,step=10。但如果原尺寸不是整数倍,可能会有问题。或者,更好的方法是直接计算目标尺寸,然后使用resize函数。例如,使用cv2.resize,设定目标尺寸为(new_width, new_height),并选择插值方法。这样更可靠,特别是当比例不是整数时。但用户可能需要的是自己实现采样函数,而不是依赖库函数。因此,可能需要两种方式:一种使用函数,另一种自己实现切片。但根据用户的问题,可能需要自己实现简单的最近邻采样。因此,SampleByratio函数可以接受像和ratio参数,然后计算步长,进行切片。例如: def SampleByratio(img, ratio): h, w = img.shape[:2] new_h = int(h * ratio) new_w = int(w * ratio) # 或者更准确地说,计算步长 step_h = int(1 / ratio) step_w = int(1 / ratio) sampled_img = img[::step_h, ::step_w] return sampled_img 不过,这种方法可能在ratio不是整数倒数时出错。例如,如果原是401x601,ratio=0.1,那么步长10会导致new_h=40,new_w=60,而401//10=40.1,可能无法正确取到40行。所以更可靠的做法是使用resize函数。因此,在Python中,可以使用cv2.resize: import cv2 def SampleByratio(img, ratio): h, w = img.shape[:2] new_size = (int(w * ratio), int(h * ratio)) # OpenCV中是宽高顺序 sampled_img = cv2.resize(img, new_size, interpolation=cv2.INTER_NEAREST) return sampled_img 这样,不管原尺寸如何,都可以正确缩放到目标尺寸。用户的问题中,原是400x600,目标40x60,所以ratio=0.1。使用最近邻插值法可以避免插值,直接取最近的像素,实现下采样。 然后是量化函数QuantifyByratio。这个函数的输入是像和量化后的灰度级数目,比如4级。例如,将每个通道的像素值从0-255映射到0-3,然后可能再扩展到0-255的范围,或者直接保持整数级别。或者根据用户引用[1]中的方法,将每个像素除以一个因子(例如,64),然后乘以该因子,从而得到量化的值。例如,256级降到4级,可以用因子64,因为256/4=64。每个像素值v会被替换为 (v // 64) * 64。这样得到的四个级别是0,64,128,192。但是否需要将这些值扩展到0-255?或者是否需要使用不同的映射方式?例如,将0-63映射到0,64-127映射到64,128-191到128,192-255到192。或者,将每个区间的中间值作为量化后的值。例如,0-63映射到32,64-127到96,等等。这可能取决于具体需求。根据用户引用[1]中的方法,是使用除法取整再乘回的方法。例如: quantized_value = (v // factor) * factor 其中factor是2^i,例如,i=6时,factor=64,得到4级。因此,量化函数可以接受灰度级数目作为参数,计算factor=256 / levels。但是需要确保256能被levels整除。例如,当levels=4,factor=64。这样,每个像素值会被转换为对应的级别。例如,0-63→0,64-127→64,128-191→128,192-255→192。因此,QuantifyByratio函数可以设计为: def QuantifyByratio(img, levels): factor = 256 // levels quantized_img = (img // factor) * factor return quantized_img 但是这样处理的话,当levels不是256的约数时,可能会有问题。例如,如果levels=5,则256/5=51.2,无法整除。因此,可能需要更通用的方法,例如将像素值映射到0到levels-1的区间,然后将其扩展回0-255。例如: max_val = 255 quantized_img = np.round(img * (levels - 1) / max_val) * (max_val / (levels - 1)) 例如,当levels=4时,(levels-1)=3,所以每个像素值v会被计算为 round(v * 3 / 255) * (255/3) → 0, 85, 170, 255。这可能更合理,因为这样最高值可以达到255。例如,当v=255时,round(255*3/255)=3,乘以85得到255。当v=170时,170*3/255=2 → 2*85=170。当v=84时,84*3/255≈0.988→round后是1,所以1*85=85。这种方法可能更合适,因为它覆盖了整个0-255的范围,并且均匀分布。因此,量化后的四个级别是0,85,170,255。这可能比之前的64间隔更合理,尤其是对于像质量来说,高光部分不会丢失太多信息。例如,原中的白色(255)会被保留,而不是被量化为192。因此,QuantifyByratio函数可能需要这样实现: def QuantifyByratio(img, levels): max_val = 255 quantized_img = np.round(img * (levels - 1) / max_val) * (max_val / (levels - 1)) quantized_img = quantized_img.astype(np.uint8) return quantized_img 但需要确保输入像是灰度像还是彩色像。如果输入是彩色像(如400x600x3),则需要每个通道独立处理。而上面的代码在彩色像的情况下,会正确处理每个通道。例如,对于RGB三个通道,每个通道都会被独立量化到4级。这样,处理后每个通道的像素值都是0,85,170,255中的一个,整个像的颜色会被大大简化,但可能保留一定的色彩信息。 现在,结合这两个函数,处理流程应该是: 1. 读取原像,假设是400x600x3的彩色像。 2. 使用SampleByratio函数进行空间下采样,得到40x60x3的像。 3. 使用QuantifyByratio函数进行量化,将每个通道的256级灰度降到4级。 4. 可视化处理前后的像。 接下来需要考虑代码实现。例如,使用Python和OpenCV库。读取像,处理,显示结果。 需要注意的是,原可能不是uint8类型,但一般来说,读取的像会是uint8。在量化过程中,计算时可能需要转换为浮点型,然后再转回uint8。或者,使用整数运算。例如,对于彩色像img,每个通道的值在0-255之间。当应用QuantifyByratio函数时,按照上述方法处理每个通道。 现在,综合上述思路,编写代码: 首先,导入必要的库: import cv2 import numpy as np import matplotlib.pyplot as plt 定义采样函数: def SampleByratio(img, ratio): h, w = img.shape[:2] new_size = (int(w * ratio), int(h * ratio)) # OpenCV的resize需要宽高顺序 sampled_img = cv2.resize(img, new_size, interpolation=cv2.INTER_NEAREST) return sampled_img 定义量化函数: def QuantifyByratio(img, levels): max_val = 255 # 将像转换为浮点型进行计算 img_float = img.astype(np.float32) # 计算量化后的值 quantized_float = np.round(img_float * (levels - 1) / max_val) * (max_val / (levels - 1)) # 转换回uint8 quantized_img = quantized_float.astype(np.uint8) return quantized_img 处理流程: # 读取原 original_img = cv2.imread('input_image.jpg') # 假设原是400x600x3 # 转换为RGB顺序,因为OpenCV读取的是BGR original_img = cv2.cvtColor(original_img, cv2.COLOR_BGR2RGB) # 采样 sampled_img = SampleByratio(original_img, 0.1) # ratio=0.1得到40x60x3 # 量化 quantized_img = QuantifyByratio(sampled_img, 4) # levels=4 # 可视化 plt.figure(figsize=(10, 5)) plt.subplot(1, 3, 1) plt.imshow(original_img) plt.title('Original Image') plt.axis('off') plt.subplot(1, 3, 2) plt.imshow(sampled_img) plt.title('Sampled Image (40x60)') plt.axis('off') plt.subplot(1, 3, 3) plt.imshow(quantized_img) plt.title('Quantized Image (4 levels)') plt.axis('off') plt.show() 需要注意的是,原必须存在且路径正确。此外,采样后的像可能看起来比较粗糙,而量化后的像颜色会比较简单,只有四个级别每个通道。例如,每个通道有四个可能的颜色值,因此总共可能有4^3=64种颜色。 在用户提供的引用中,引用[1]提到了使用uint8(img/(2^i))*(2^i)的方法进行量化,这相当于将灰度级按2的幂次减少。例如,当i=6时,因子是64,得到四个级别。而上面的QuantifyByratio函数使用的是线性均匀划分,可能与之不同。用户可能需要的是类似引用[1]的方法,即使用除法取整再乘回的方式。因此,可能需要调整量化函数。例如,当目标灰度级数为4,即2^2,所以需要找到i使得2^(8-i)=4,即i=6。此时,因子是2^6=64。因此,量化函数可以写成: def QuantifyByratio(img, levels): # 计算因子,例如levels=4时,factor=256//4=64 factor = 256 // levels quantized_img = (img // factor) * factor return quantized_img 这样,每个像素的值会被截断到最近的factor的倍数。例如,当factor=64时,像素值0-63→0,64-127→64,依此类推。对于levels=4,这会得到四个级别:0,64,128,192。这种方法可能更符合用户引用中的示例。但用户的需求是将灰度级减少到4级,无论采用哪种方法都可以,但需要明确说明。例如,使用这种方法的话,最高灰度级是192,而不是255,可能导致像变暗。而使用前面的线性划分方法,最高级是255,可能保留更亮的区域。因此,可能需要根据用户的实际需求选择方法。但用户的问题中没有明确说明量化方法,因此需要明确在回答中指出两种可能的实现方式,或者选择其中一种。根据用户提供的引用,可能更倾向于第一种方法,即引用[1]中的方法,所以量化函数采用因子除法取整的方式。 因此,调整量化函数: def QuantifyByratio(img, levels): factor = 256 // levels quantized_img = (img // factor) * factor return quantized_img.astype(np.uint8) 这样,当levels=4时,factor=64,量化后的值为0,64,128,192。这种方法可能更适合用户的问题中的引用内容。 但这样处理后的像每个通道的最高值是192,而不是255。这可能在某些情况下导致像变暗。例如,原中纯白的部分(255,255,255)会被量化为192,192,192,变成灰色。而如果使用线性映射到0,85,170,255的话,白色会被保留。因此,需要根据用户需求选择方法。用户的问题中的引用可能更倾向于第一种方法,所以应该按照引用中的方法来实现。 现在,综合上述分析,最终的代码可能如下: 采样函数使用最近邻插值法缩小像尺寸,量化函数使用因子除法取整的方式。 另外,用户希望将像处理为40x60x3大小、灰度级为4。但这里的灰度级可能指的是每个通道的量化级别,因此整个像的颜色数量会是4^3=64种。或者,如果用户希望将像转换为灰度像后再量化到4级,那需要先将彩色像转换为灰度像,再进行量化。但用户的问题中提到的是将像处理为40x60x3,所以保持三通道,每个通道量化到4级。因此,原问题中的“灰度级为4”可能存在表述上的问题,因为灰度级通常指单通道的亮度级别。对于彩色像,每个通道的量化会导致颜色数量的减少,但每个通道的级别数就是灰度级。所以用户可能实际上希望每个通道独立量化到4级,保持三个通道,所以总颜色数为4*4*4=64种。 综上,正确的处理流程是: 1. 采样缩小到40x60x3。 2. 每个通道量化到4级(0,64,128,192)或者(0,85,170,255)。 现在,编写最终的代码示例,并确保正确性。 此外,可视化部分需要显示原、采样后的像、量化后的像。在Python中,使用matplotlib显示像时需要注意颜色通道的顺序,OpenCV读取的是BGR,而matplotlib使用的是RGB,所以需要转换。 综上,最终的代码可能如下: import cv2 import numpy as np import matplotlib.pyplot as plt def SampleByratio(img, ratio): h, w = img.shape[:2] new_size = (int(w * ratio), int(h * ratio)) # width, height sampled_img = cv2.resize(img, new_size, interpolation=cv2.INTER_NEAREST) return sampled_img def QuantifyByratio(img, levels): factor = 256 // levels quantized_img = (img // factor) * factor return quantized_img.astype(np.uint8) # 读取像 original_img = cv2.imread('input.jpg') # 假设原是400x600x3 original_img = cv2.cvtColor(original_img, cv2.COLOR_BGR2RGB) # 转换为RGB顺序 # 采样处理 sampled_img = SampleByratio(original_img, 0.1) # 得到40x60x3 # 量化处理 quantized_img = QuantifyByratio(sampled_img, 4) # 4级灰度 # 可视化 plt.figure(figsize=(12, 6)) plt.subplot(1, 3, 1) plt.imshow(original_img) plt.title('原 (400x600x3)') plt.axis('off') plt.subplot(1, 3, 2) plt.imshow(sampled_img) plt.title('采样后 (40x60x3)') plt.axis('off') plt.subplot(1, 3, 3) plt.imshow(quantized_img) plt.title('量化后 (4级灰度)') plt.axis('off') plt.show() 这样,用户就可以看到处理后的各个阶段的像效果。需要注意的是,量化后的像每个通道的像素值只能是0,64,128,192,因此颜色会比较有限,可能出现明显的色带。 在回答中,还需要解释这两个函数的实现原理。例如,采样函数使用最近邻插值来减少像尺寸,量化函数通过将每个像素值除以量化因子后取整再乘回,实现灰度级的降低。 此外,需要引用用户提供的引用资料。例如,在量化函数的解释中,可以引用用户提供的引用[1]中的方法,即通过除以因子再乘回的方式减少灰度级。在采样部分,可以提到空间分辨率的影响,引用[3]中关于灰度分辨率和空间分辨率的说明,或者引用[4]中的像转换方法。 最后,生成相关问题,如采样和量化的其他方法、参数选择的影响等。</think>### 分步实现像采样与量化 #### 1. 采样函数设计 采样函数通过调整空间分辨率实现像缩放。这里采用**最近邻插值法**进行下采样,保留原始像素值最接近的特征[^3]。 ```python import cv2 import numpy as np def SampleByratio(img, ratio): h, w = img.shape[:2] new_size = (int(w * ratio), int(h * ratio)) # OpenCV尺寸顺序为(宽, 高) sampled_img = cv2.resize(img, new_size, interpolation=cv2.INTER_NEAREST) return sampled_img ``` #### 2. 量化函数设计 量化函数通过减少灰度分辨率实现颜色简化。采用**等间隔灰度级划分**方法,将256级映射到4级[^1]: ```python def QuantifyByratio(img, levels): factor = 256 // levels # 计算量化步长(256/4=64) quantized_img = (img // factor) * factor # 整数除法实现离散化 return quantized_img.astype(np.uint8) ``` #### 3. 完整处理流程 ```python import matplotlib.pyplot as plt # 读取像并转换颜色通道 original_img = cv2.imread('input.jpg') original_img = cv2.cvtColor(original_img, cv2.COLOR_BGR2RGB) # 执行采样(400x600 → 40x60) sampled_img = SampleByratio(original_img, 0.1) # 执行量化(256级 → 4级) quantized_img = QuantifyByratio(sampled_img, 4) # 可视化对比 plt.figure(figsize=(12, 4)) plt.subplot(131), plt.imshow(original_img), plt.title('原始像 (400x600)') plt.subplot(132), plt.imshow(sampled_img), plt.title('采样后 (40x60)') plt.subplot(133), plt.imshow(quantized_img), plt.title('量化后 (4级灰度)') plt.show() ``` #### 关键原理说明 - **采样**:通过缩小像尺寸降低空间分辨率,最近邻插值保留原始像素特征[^3]。 - **量化**:将连续灰度值离散化,公式为 $Q(v) = \left\lfloor \frac{v}{\Delta} \right\rfloor \cdot \Delta$,其中 $\Delta=64$[^1]。 - **颜色保留**:彩色像量化时,每个通道独立处理,最终颜色组合数为 $4^3=64$ 种[^4]。 ### 效果分析 | 处理阶段 | 空间分辨率 | 灰度级数 | 像特征 | |---------|-----------|---------|---------| | 原始像 | 400x600 | 256 | 细节丰富 | | 采样后 | 40x60 | 256 | 出现马赛克 | | 量化后 | 40x60 | 4 | 色块明显 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值