图像特效之朦胧柔化

Delphi GDI+ 图形处理(3) 探究Delphi的图形处理 之七 -- 柔化和锐化处理      第三章           基本图像处理算法 3.1柔化和锐化处理 柔化处理的原理是将图片中每一个像素都由与其相邻的n*n个像素的平均值来代替。N的取值决定了其模糊程度。下面是柔化处理的程序。 程序3.1 unit Unit1; {柔化处理} Interface uses 阅读详情
柔光效果在人像摄影中有广泛的应用

用它可以掩饰人物脸部或皮肤上的某些瑕疵,使人物变得更加光润媚人.在户外,使用柔光镜拍摄,则可使照片充满着神秘、浪漫的色彩。。。

 

OK,笔者经过一番研究,将此效果实现。

 

首先是GaussianBlur, 当然LensBlur更好。

模糊后的图像设置一个透明度, 然后与原图合并即可。

 高斯滤波请参考:http://blog.youkuaiyun.com/hachirou/article/details/6280200

 

cc.rgbRed   = (BYTE)((cc.rgbRed*opacity + rgb.rgbRed*(255-opacity))>>8);
cc.rgbGreen   = (BYTE)((cc.rgbGreen*opacity + rgb.rgbGreen*(255-opacity))>>8);
cc.rgbBlue   = (BYTE)((cc.rgbBlue*opacity + rgb.rgbBlue*(255-opacity))>>8);

 

如图:

 

 

 

matlab羽化代码-GIST-feature-extractor:GIST-特征提取器 matlab羽化代码GIST-特征提取器 这个存储库是用 Python 重新实现本文中实现的 Matlab 代码。 本库中可以使用的图像仍然只是灰度图像。 (宽 × 高 × 1) 先决条件 需要安装以下库 Python 3.6 麻木 枕头 用法 一、安装 $ git clone https://github.com/imoken1122/GIST-feature-extractor.git 2. 使用 GIST 特征提取器 如有必要,更改这些参数。 param = { "orientationsPerScale" : np . array ([ 8 , 8 ]), "numberBlocks" :[ 10 , 10 ], "fc_prefilt" : 10 , "boundaryExtension" : 10 } 指定图像名称或包含多个图像的文件夹路径和保存提取的要点特征的输出路径作为选项(输出文件的扩展名是“.feather” ) --input_path <your> --output_path <your> 让我们提取 GIST 特征! 下面是一个例子。 $ 立即下载

相关推荐

VC++处理图像模糊或柔化的效果示例

摘要:VC/C++源码,图形处理,图像模糊   VC++处理图像模糊或柔化的效果示例源程序,类似Photoshop中的图像高斯模糊效果,每点击一次鼠标右键,程序为模糊一次,直到你满意为止。注意程序仅实现了模糊的功能,其它功能比如程序优化和效率方面的考虑还比较少,因此程序运行速度方面可能会欠缺一些。

matlab 柔化,先进控制技术及应用

先进控制技术及应用1.前言工业生产的过程是复杂的,建立起来的模型也是不完善的。即使是理论非常复杂的现代控制理论,其效果也往往不尽人意,甚至在一些方面还不及传统的PID控制。20世纪70年代,人们除了加强对生产过程的建模、系统辨识、自适应控制等方面的研究外,开始打破传统的控制思想,试图面向工业开发出一种对各种模型要求低、在线计算方便、控制综合效果好的新型算法。在这样的背景下,预测控制的一种,也就是动...

weixin_36356040的博客 259

动漫滤镜代码

滤镜;主要是用来实现图像的各种特殊效果。它在Photoshop中具有非常神奇的作用。所有的滤镜在Photoshop中都按分类放置在菜单中,使用时只需要从该菜单中执行这命令即可。滤镜的操作是非常简单的,但是真正用起来却很难恰到好处。滤镜通常需要同通道、图层等联合使用,才能取得最佳艺术效果。如果想在最适当的时候应用滤镜到最适当的位置,除了平常的美术功底之外,还需要用户对滤镜的熟悉和操控能力,甚至需要具有很丰富的想象力。这样,才能有的放矢的应用滤镜,发挥出艺术才华。

matlab 柔化,第三篇(第7,8,9章)模型预测控制及其MATLAB实现.ppt

第三篇(第7,8,9章)模型预测控制及其MATLAB实现* 2) 预测长度n 预测长度n对系统的稳定性有重要的影响,当控制长度m很小,控制加权系数λ=0,即控制增量不受压制的情况,增大 n总可以得到稳定控制。当m为任意,通过加大λ,在∑gi>0时,可得到稳定控制。 n对系统的动态特性也有影响,当n取值较小时,系统的动态性能较差,增加 n明显改善了系统的动态性能,增强了...

weixin_39829307的博客 330

java 图片基础特效处理类

java 图片基础特效处理类

MATLAB背景减除程序

用背景减除的方法提取前景图像,并跟踪前景目标,对其运动行为进行描述

MATLAB实现图像羽化处理(图像羽化处理)

相关的程序

sunlinyi66的专栏 5703

用5毫欧采样电阻实现高精度电流检测?数字可调电源控制板的硬件设计陷阱

本文深入探讨了在数字可调电源控制板设计中,如何利用5毫欧采样电阻实现高精度电流检测。从微小信号放大电路设计、采样电阻布局与热管理,到电源切换与电池管理电路优化,提供了全面的硬件设计解决方案和实用技巧,帮助工程师规避常见设计陷阱,提升系统性能。

wdx0123456的博客 1029

matlab 图像柔化处理,我有一个图像的平滑算法(柔化、锐化等)的例子,谁能帮优化一下?(200分)...

例子如下:我用它作800*600的BMP图片的处理,速度太慢了 >80毫秒!现在的要求是<15毫秒!谁能帮我,测试的机器(CPU1。2G,内存256) 只要能帮我优化到现在4-5倍的处理速度,200分马上奉上!procedure bmpSmooth(mybitmap: tbitmap; smoothlevel: byte; x1,y1,x2,y2: integer);varp,p1,...

weixin_39830205的博客 346

AM驱动架构—优质Mini-LED显示技术解决方案

(VR)和增强现实(AR)设备:MiniLED背光驱动方案适用于虚拟现实和增强现实设备中的显示技术,通过高亮度和高对比度的显示效果,创造更逼真的虚拟体验此外,MiniLED背光还能够实现更快的响应速度,减少图像残影,使得用户的动作在虚拟环境中更加流畅自然。以其出色的性能和广泛的应用前景备受关注是实现MiniLED显示效果的重要环节。1)更高的亮度和对比度:尺寸更小,可以在同样面积的显示屏上配置更多的LED,并且通过独立控制每一个MiniLED,可以实现更高的亮度和更细致的对比度,使得显示画面更加鲜明清晰。

isweekDN的博客 2762

task5:在本地搭建大模型(ollama 和 LM studio 对比),接入 openclaw

关于大模型,大家千万不要想着在本地部署,根本不可行,没有那个财力。另外大模型迭代快,不可能每周都在下载大模型。再次,还是国外的模型好用,国内的模型真的在 deepresearch 上就有很大问题,你们懂的。所以本篇文章,还是聚焦在探索层面+实操,并不会实战。

这里是 AI 食用指南,持续分享有用的AI 实操和应用! 1968

Unity3DBloom特效资源文件:打造画面朦胧感的视觉效果

Unity3DBloom特效资源文件:打造画面朦胧感的视觉效果 去发现同类优质开源项目:https://gitcode.com/ 在现代游戏和视觉作品中,画面的质感与美感至关重要。Unity3DBloom特效资源文件,正是为那些追求画面细节和视觉冲击的开发者量身打造的工具。以下,我们将深入探讨这个项目的核心功能、技术分析、应用场景以及项目特点。 项目介绍 Unity3DBloom特效资源文件,是一...

gitblog_06703的博客 594

告别手动复制粘贴:3种高效合并Excel表格的方法对比(含代码)

本文对比了VBA、Power Query和Python三种高效合并Excel表格的方法,并提供了可直接运行的代码。针对不同数据量、更新频率和技术背景,详细分析了各方案的优缺点与适用场景,帮助读者告别低效的手动操作,实现自动化数据整合。

weixin_29057237的博客 441

HoRain云--OpenCV滤镜全攻略:轻松玩转图像特效

本文介绍了OpenCV图像处理的常见滤镜效果,包括灰度、反色、怀旧、边缘检测、卡通化、模糊和锐化等滤镜的实现原理及核心参数。通过表格形式汇总了各滤镜的特点、关键函数和控制参数,并提供了可直接运行的Python代码示例。文章建议读者多尝试参数调整和滤镜组合,以创造独特的视觉效果,同时提醒注意处理顺序和备份原图的重要性。最后鼓励读者动手实践,探索OpenCV的图像处理功能。

sinat_57153473的博客 1948

【GNSS测试技术(一)】GNSS基础原理介绍

GNSS(全球卫星导航系统)是一种基于卫星信号的定位技术,通过使用分布在地球轨道上的卫星,为用户提供全球范围内的定位、导航和授时服务。

新猿异码的博客 5752

ESP32-S3模组上跑通esp32-camera(32)

ESP32-S3模组上跑通esp32-camera(32)

phmatthaus的专栏 771

Pinta特效滤镜大全:50+种图像处理效果实战应用

Pinta是一款简单易用的GTK#图像编辑程序,提供了50多种强大的特效滤镜,让你轻松实现专业级图像处理效果。无论是照片美化、创意设计还是日常图片编辑,这些滤镜都能满足你的多样化需求。 ## 🎨 基础调整类滤镜:快速优化图像质量 ### 亮度对比度调整 通过[BrightnessContrastEffect.cs](https://link.gitcode.com/i/d9cdc74628d

gitblog_01097的博客 967

【机器学习概率统计】11 贝叶斯统计推断:最大后验

这一节,我们来介绍另外一种统计推断方法:贝叶斯统计推断方法。 1.回顾贝叶斯定理 首先,我们先来复习一下贝叶斯定理: p(Θ∣X)=p(X∣Θ)p(Θ)p(X)p(\Theta|X)=\frac{p(X|\Theta)p(\Theta)}{p(X)}p(Θ∣X)=p(X)p(X∣Θ)p(Θ)​ 在这个简简单单的式子当中,蕴含了我们要掌握的很多重要内容: 贝叶斯定理当中的四个概率表达式,他们都非常重要,在这一节的内容中将反复出现,我们来一一解析一下: p(Θ)p(\Theta)p(Θ):先验分布。 反映的是在

机器学习数学基础系列专栏 3270

PS打造梦幻时空隧道特效

本文详细介绍了Photoshop中打造时空隧道特效的全流程操作指南。从新建文档设置到镜头光晕、凸出、极坐标等核心滤镜的参数配置,再到文字排版、图层样式(斜面和浮雕、描边、投影等)的精细调整,提供了完整的特效制作方案。重点讲解了各功能模块的关键参数设置技巧,包括光晕亮度调节、极坐标转换类型选择、文字竖排属性配置等,并针对常见问题提供了专业解决方案。通过系统化的操作步骤和参数说明,帮助用户掌握数字艺术创作中的高级特效技术,实现从静态图像到动态异次元空间的视觉转换。

PS 全套教学持续更新|海报制作、图片精修、纹理特效全覆盖,带你从零玩转平面设计。 666

企业级大数据平台的数据网格(Data Mesh)转型之路

随着企业数字化转型的深入,传统大数据平台面临数据孤岛化、治理成本高、业务响应慢等核心痛点。数据网格作为一种新兴的分布式数据管理架构,通过领域驱动设计(DDD)、数据产品化和联邦治理模式,为企业提供了打破数据壁垒、提升数据生产力的全新路径。本文聚焦企业级数据平台从传统架构(数据湖/数据仓库)向数据网格转型的关键技术、实施步骤和组织配套,涵盖技术架构设计、核心算法实现、项目实战案例及工具链推荐。背景介绍:定义转型目标、术语体系与核心挑战核心概念与联系:解析数据网格四大支柱及技术架构图谱核心算法原理。

AI 领航者的博客 1084

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数字图像处理篇---图像平滑

图像平滑相当于为照片美颜磨皮,通过算法使粗糙细节变柔和,让画面更干净细腻。主要采用均值滤波和高斯滤波两种方式:前者简单平均像素颜色,后者加权计算保留更多真实感。应用场景包括去除噪点、人像磨皮、艺术效果和图像预处理。操作时需把握少即是多原则,建议从轻度开始逐步调整,配合局部处理和保护关键细节。专业工具如高斯模糊适合均匀降噪,中值滤波处理胡椒盐噪点,双边滤波则能智能保留边缘。过度平滑会导致塑料质感、丢失纹理等失真问题,需通过检查皮肤纹理、眼睛清晰度等指标把控效果。

在你不想做的时候,正是应该做的时候。 888

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 最全 图片相关知识整理

android 最全 图片相关知识整理 图片基础知识梳理 图片基础知识梳理(1) - ImageView 的 ScaleType 属性解析 图片基础知识梳理(2) - Bitmap 占用内存分析 图片基础知识梳理(3) - Bitmap&BitmapFactory 解析 图片压缩知识梳理 图片压缩知识梳理(0) - 图片压缩学习计划 图片压缩知识梳理(1) - PNG 原理 图片压缩知识

philos3的博客 661

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

高斯模糊的视觉魔术:从美颜到艺术特效的创意实践

本文深入探讨了高斯模糊在数字图像处理中的多样化应用,从美颜磨皮到艺术特效创作。通过OpenCV的cv2.GaussianBlur函数实现,详细解析了高斯核原理、参数调节技巧以及在摄影后期、UI设计和影视特效中的实践案例,展现这一技术的强大创意潜力。

food6的博客 193

Python图像处理入门指南:从基础到实战

本文详细介绍了Python在图像处理领域的应用,从基础概念到实战技巧全面解析。通过Pillow、OpenCV等流行库的使用示例,帮助读者快速掌握图像处理的核心操作,包括几何变换、色彩处理和滤镜效果。文章还包含人脸检测、图像分割等实战项目,并分享性能优化和常见问题解决方案,是Python图像处理入门的实用指南。

weixin_42628688的博客 379

云容笔谈惊艳效果:晨雾中半隐半现的东方女子——虚实边界与留白哲学体现

本文介绍了如何在星图GPU平台上一键自动化部署“💃 云容笔谈 · 东方红颜影像生成系统”镜像,快速生成具有东方美学意境的AI影像。该镜像特别擅长创作晨雾中半隐半现的东方女子形象,将虚实相生的哲学理念转化为视觉艺术,广泛应用于数字艺术创作和文化内容生成。

weixin_42581003的博客 264
上一篇: 图像特效之电影海报
下一篇: MFC 与 HTTP编程
华亭真人
博客等级 码龄18年 74粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值