【图像识别-车牌识别】基于BP神经网络求解车牌识别问题含GUI界面和报告

基于BP神经网络的车牌识别 - MATLAB代码实现 当然,实际应用中还需要考虑到数据的质量、预处理步骤、网络结构的调优等因素,以提高识别的准确率和鲁棒性。训练数据应包含多个车牌样本,每个样本都有对应的标签,用于指示车牌的类别。测试数据是用来评估训练后的神经网络的性能的。上述代码中,我们首先准备了训练数据和测试数据,其中训练数据包含了N个车牌样本的特征向量和对应的标签,而测试数据包含了M个车牌样本的特征向量和对应的标签。然后,我们设置了神经网络的参数,包括训练集、验证集和测试集的比例。在这里,我们将80%的数据用于训练,20%的数据用于验证。 阅读详情

题目:MATLAB车牌识别系统

内容:介绍随着二十一世纪到来,经济快速发展和人们生活水平显著提高,汽车逐渐成为家庭的主要交通工具。汽车的产量快速增多,车辆流动也变得越来越频繁,因此给交通带来了严重问题,如交通堵塞、交通事故等,智能交通系统(Intelligent Transportation System)的产生就是为了从根本上解决交通问题。在智能交通系统中车牌识别技术占有重要位置,车牌识别技术的推广普及必将对加强道路管理、城市交通事故、违章停车、处理车辆被盗案件、保障社会稳定等方面产生重大而深远的影响。该设计主要研究基于MATLAB软件的汽车号牌设别系统设计,系统主要包括图像采集、图像预处理、车牌定位、字符分割、字符识别五大核心部分。系统的图像预处理模块是将图像经过图像灰度化、图像增强、边缘提取、二值化等操作,转换成便于车牌定位的二值化图像;利用车牌的边缘、形状等特征,再结合Roberts 算子边缘检测、数字图像、形态学等技术对车牌进行定位;字符的分割采用的方法是将二值化后的车牌部分进行寻找连续有文字的块,若长度大于设定的阈值则切割,从而完成字符的分割;字符识别运用模板匹配算法完成。以上每个功能模块用MATLAB软件实现,

  • 总体设计

汽车号牌识别系统技术是从一幅车辆图像中准确定位出车牌区域,然后经过字符切割和字符识别来实现车辆牌照的自动识别。主要流程图如下:图1.1

  • 总体功能模块
  • 基于MATLAB车牌识别系统主要包括图像采集、图像预处理、车牌定位、字符分割、字符识别五个关键环节[11],其基本工作如下:(1) 图像采集:使用摄像头、照相机拍摄采集图像。(2) 图像预处理:把图像转换成便于定位的二值化图像,需要经过图像灰度化、图像增强、边缘提取、二值化操作。(3)车牌定位:利用车牌的边缘、形状等特征,再结合Roberts 算子边缘检测、数字图像、形态学等技术对车牌进行定位。(4)字符分割:以二值化后的车牌部分进行寻找连续有文字的块,若长度大于设定的阈值则切割,从而完成字符的分割。(5)字符识别:运用模板匹配算法将分割后的字符二值化,并将其尺寸大小缩放为模板库中字符的大小,然后与所有的模板进行匹配,准确地识别车牌。输出识别结果,并进行数据存储。由于纹理特征车牌灰度图像的边缘、图像水平方向上的方差、水平方向上的梯度等比较稳定而且易于提取,所以本系统车牌定位算法采用纹理特征作为车牌的主要特征。在汽车号牌字符识别中,由于汉字的复杂性所以本设计的模板库字符包含5个汉字,26个大写英文字母及10个阿拉伯数字。首字符为汉字,第2-6个字符为英文字母或数字。本系统采用的是边缘检测的方法实现车牌定位的,寻找连续有文字的块的方法实现字符分割,模板匹配法来确定最终的识别结果。
  • 具体设计下图
  • 源码

function varargout = chepai(varargin)

% CHEPAI M-file for chepai.fig

%      CHEPAI, by itself, creates a new CHEPAI or raises the existing

%      singleton*.

%

%      H = CHEPAI returns the handle to a new CHEPAI or the handle to

%      the existing singleton*.

%

%      CHEPAI('CALLBACK',hObject,eventData,handles,...) calls the local

%      function named CALLBACK in CHEPAI.M with the given input arguments.

%

%      CHEPAI('Property','Value',...) creates a new CHEPAI or raises the

%      existing singleton*.  Starting from the left, property value pairs are

%      applied to the GUI before chepai_OpeningFcn gets called.  An

%      unrecognized property name or invalid value makes property application

%      stop.  All inputs are passed to chepai_OpeningFcn via varargin.

%

%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one

%      instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help chepai

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name',       mfilename, ...

                   'gui_Singleton',  gui_Singleton, ...

                   'gui_OpeningFcn', @chepai_OpeningFcn, ...

                   'gui_OutputFcn',  @chepai_OutputFcn, ...

                   'gui_LayoutFcn',  [] , ...

                   'gui_Callback',   []);

if nargin && ischar(varargin{1})

    gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

    gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before chepai is made visible.

function chepai_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject    handle to figure

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% varargin   command line arguments to chepai (see VARARGIN)

% Choose default command line output for chepai

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes chepai wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = chepai_OutputFcn(hObject, eventdata, handles)

% varargout  cell array for returning output args (see VARARGOUT);

% hObject    handle to figure

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

% --- Executes on button press in find.

function find_Callback(hObject, eventdata, handles)

% hObject    handle to find (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

%获取图像   装入待处理彩色图像并显示原始图像

global Scolor

[fn,pn,fi]=uigetfile('*.bmp','选择图片');

Scolor=imread([pn fn]);

axes(handles.axes1);

imshow(Scolor);

title('车牌原始图像');

% --- Executes on button press in ok.

function ok_Callback(hObject, eventdata, handles)

% hObject    handle to ok (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

global Scolor

%axes(handles.axes1);

%imshow(Scolor),title('车牌原始图像');

%将彩色图像转换为黑白并显示

Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图

%figure,imshow(Sgray),title('原始黑白图像');

%c=histeq(Sgray);

%figure,imshow(c);title('直方图均衡化图像');

s=strel('disk',13);%strei函数13

Bgray=imopen(Sgray,s);%打开sgray s图像

%figure,imshow(Bgray);title('背景图像');%输出背景图像

Egray=imsubtract(Sgray,Bgray);%两幅图相减

%figure,imshow(Egray);title('增强黑白图像');%输出黑白图像

grd=edge(Egray,'canny',0.09,'both');

%figure,imshow(grd);title('robert算子边缘检测');

se=[1;1;1]; %线型结构元素

I3=imerode(grd,se);    %腐蚀图像

[y,x,]=size(bg2);

I6=double(bg2);

%绘制行曲线图

Y1=zeros(y,1);%y行1列的零矩阵

for i=1:y

        for j=1:x

            if(I6(i,j,1)==1)

                Y1(i,1)= Y1(i,1)+1;

            end

        end

end

% figure();

% subplot(1,3,1);

% plot(0:y-1,Y1),title('行像素灰度值累计'),xlabel('行值'),ylabel('像素和');

[temp, MaxY]=max(Y1);

PY1=MaxY;

while ((Y1(PY1,1)>=50)&&(PY1>1))

PY1=PY1-7;

end

PY2=MaxY;

while ((Y1(PY2,1)>=50)&&(PY2<y))

PY2=PY2+7;

end

%绘制列曲线图

X1=zeros(1,x);

for j=1:x

     for i=PY1:PY2

            if(I6(i,j,1)==1)

                X1(1,j)= X1(1,j)+1;

            end

     end

end

% subplot(1,3,2);

% plot(0:x-1,X1),title('列像素灰度值累计'),xlabel('列值'),ylabel('像数和');

PX1=1;

while ((X1(1,PX1)<3)&&(PX1<x))

PX1=PX1+1;

end

PX2=x;

while ((X1(1,PX2)<3)&&(PX2>PX1))

PX2=PX2-1;

end

DW=Scolor(PY1:PY2,PX1:PX2,:);

axes(handles.axes2);

imshow(DW),title('车牌定位图像');

%if isrgb(DW)

    I1 = rgb2gray(DW);    %将RGB图像转化为灰度图像

%else   I1=DW;

%end

%figure,imshow(I1),title('车牌灰度图像');

g_max=double(max(max(I1)));

g_min=double(min(min(I1)));

T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值

[m,n]=size(I1);% d:二值图像

%h=graythresh(I1);

imane_bw=im2bw(I1,T/256);

%figure,imshow(imane_bw),title('二值化车牌图像');

% imane_bw=bwareaopen(I1,3);

% figure,imshow(imane_bw),title('形态学滤波后的二值化图像');

 [y1,x1,z1]=size(imane_bw);

I3=double(imane_bw);

TT=1;

%%%%%%%去除图像顶端和底端的不感兴趣区域%%%%%

Y1=zeros(y1,1);

 for i=1:y1

    for j=1:x1

             if(I3(i,j,1)==1)

                Y1(i,1)= Y1(i,1)+1 ;

            end  

     end       

 end

Py1=1;

Py0=1;

while ((Y1(Py0,1)<9)&&(Py0<y1))

      Py0=Py0+1;

end

Py1=Py0;

 while((Y1(Py1,1)>=9)&&(Py1<y1))

         Py1=Py1+1;

 end

I2=imane_bw(Py0:Py1,:,:);

axes(handles.axes3);

imshow(I2),title('目标车牌区域');

% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割

d=qiege(I2);

[m,n]=size(d);

%figure,subplot(2,1,1),imshow(d),title(n)

k1=1;k2=1;s=sum(d);j=1;

liccode=char(['0':'9' 'A':'Z' '藏川甘赣贵桂黑沪吉济冀津晋京警兰辽领鲁蒙闽宁青琼陕使苏皖湘新学渝豫粤云浙']);  %建立自动识别字符代码表

tt=1;

l=1;

for I=1:7

        ii=int2str(I);

        t=imread([ii,'.jpg']);

        t=255-t;

        level=graythresh(t);

        t=im2bw(t,level);

        SegBw2=imresize(t,[22 14],'nearest');

           if tt==1                 %第一位汉字识别

             kmin=37;

             kmax=72;

             t=~t;

             SegBw2=imresize(t,[22 14],'nearest');

        elseif tt==2             %第二位 A~Z 字母识别

            kmin=11;

            kmax=36;

           else               %第三位以后是字母或数字识别

            kmin=1;

            kmax=36;

        end

        for k2=kmin:kmax

            fname=strcat('code module\Sam',liccode(k2),'.jpg');

            %SamBw2 = imread(fname);

            SamBw22 = imread(fname);

            SamBw22 = rgb2gray(SamBw22);

            SamBw2=imresize(SamBw22,[22 14],'nearest');

            level=graythresh(SamBw2);

            SamBw2=im2bw(SamBw2,level);

            for  i=1:22

                for j=1:14

                    SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);

                end

            end

           % 以上相当于两幅图相减得到第三幅图

            Dmax=0;

            for k1=1:22

                for l1=1:14

                    if  ( SubBw2(k1,l1) > 0 || SubBw2(k1,l1) <0 )

                        Dmax=Dmax+1;

                    end

                end

            end

            Error(k2)=Dmax;

        end

        Error1=Error(kmin:kmax);

        MinError=min(Error1);

        findc=find(Error1==MinError);

        if tt==1

            findc=findc+36;

        end

        if tt==2

            findc=findc+10;

        end

        tt=tt+1;

        res=liccode(findc);

        shibiejieguo(1,l)=res;

        l=l+1;

end

set(handles.edit2,'string',shibiejieguo);

%==========================对话框显示显示=============================================

function edit2_Callback(hObject, eventdata, handles)

% hObject    handle to edit2 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit2 as text

%        str2double(get(hObject,'String')) returns contents of edit2 as a double

% --- Executes during object creation, after setting all properties.

function edit2_CreateFcn(hObject, eventdata, handles)

% hObject    handle to edit2 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');

end

% --- Executes on button press in stop.

function stop_Callback(hObject, eventdata, handles)

% hObject    handle to stop (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

ax1=(handles.axes1);cla(ax1,'reset')

ax2=(handles.axes2);cla(ax2,'reset')

ax3=(handles.axes3);cla(ax3,'reset')

ax4=(handles.axes4);cla(ax4,'reset')

ax5=(handles.axes5);cla(ax5,'reset')

ax6=(handles.axes6);cla(ax6,'reset')

ax7=(handles.axes7);cla(ax7,'reset')

ax8=(handles.axes8);cla(ax8,'reset')

ax9=(handles.axes9');cla(ax9,'reset')

ax10=(handles.axes10);cla(ax10,'reset')

set(handles.edit2,'string',' ');

基于BP神经网络的车牌识别系统研究与实现 在BP神经网络中,每个神经元都具有一个阈值和一组权值,其中阈值表示神经元的活跃度,而权值则用于线性组合计算神经元的输出值。本文针对这一研究方向,进行了深入探讨,并完成了基于BP神经网络的车牌识别系统的设计与实现。BP神经网络由输入层、隐含层和输出层组成,其中,输入层与输出层直接相连,中间的隐含层则是BP神经网络的核心,它通过反向误差传递法进行权值调整,从而最终实现模式识别。在使用含有1000张车牌图像的数据集进行测试时,该系统的正确率达到了97.5%以上,证明本文提出的技术方案具有一定的可行性和实用性。 阅读详情

相关推荐

基于BP神经网络的车牌识别问题解决方案(附带Matlab源码)

首先,我们对数据集进行预处理,然后构建BP神经网络模型进行训练,最后使用测试集评估模型的性能。通过这样的过程,我们可以实现车牌识别的自动化,并提高交通管理和安全监控的效率。对于车牌识别问题,输入层的神经元数量应与图像的像素数相匹配,输出层的神经元数量应与标签的类别数相匹配。车牌识别是计算机视觉领域的一个重要应用,它可以自动识别车辆的车牌信息,提高交通管理和安全监控的效率。在上述代码中,我们根据数据集的划分,使用训练集对模型进行迭代训练,然后使用测试集进行模型预测,并计算预测准确率。

techDM的博客 180

基于BP神经网络的车牌识别系统的设计

基于BP神经网络的车牌识别系统

简单光学 8355

【图像识别】基于BP神经网络求解车牌识别问题matlab代码

​1 简介 随着信息时代的到来,现代智能交通系统能够很轻易的识别出汽车牌照,这是智能交通管理的标志之一。智能交通管理系统的牌照识别集合了图像采集和预处理、车牌定位技术、字符分割和字符识别等相关技术。其中,车牌定位、字符分割和字符识别是最关键的技术,也是本次毕业设计的难点所在。正确利用好这三种关键技术,将有助于牌照识别的实时性和准确性,对于智能交通系统的实现有着决定性作用。在MATLAB软件开发环境下,系统首先对图像进行预处理、然后将预处理后的图像进行定位分割,最后识别出相应牌照上的字符,这样就可以模拟设计

qq_59747472的博客 1923

基于BP神经网络的小车牌识别程序

车辆识别程序设计 随着汽车数量的增加,城市交通状况日益受到人们的重视,如何进行有效的交通管理更是成为了人们关注的焦点。智能交通系统通过车辆检测装置对过往的车辆实施检测,提取有关交通数据,达到监控、管理和指挥交通的目的。因此,它已成为世界交通领域研究的重要课题。 车牌识别系统作为智能交通系统的一个重要组成部分,已在高速公路、城市交通和停车场等项目的管理中占有无可取代的重要地位。它在不影响汽车状态的情况下,由计算机自动完成车牌的识别,从而降低交通管理工作的复杂度。 一、车牌识别的模块构成 #mermaid-sv

weixin_42807580的博客 5558

图像传感器与信号处理——SFR算法/ISO 12233解读

图像传感器与信号处理——SFR算法图像传感器与信号处理——SFR算法1. 前言2. 基于视觉的分辨率测量方法3. 基于边界的SFR算法4. 基于正弦波的SFR算法 图像传感器与信号处理——SFR算法 SFR的全称是Spatial Frequency Response,空间频率响应。介绍SFR算法的参考文献主要是ISO 12233这篇英文文档。和读一般的论文感觉不同,文档读起来更加晦涩难懂,可能是因...

weixin_44580210的博客 1万+

保姆级教程:用CellOracle 0.10.13分析你的单细胞数据,从GRN构建到基因扰动模拟

本文详细介绍了如何使用CellOracle 0.10.13进行单细胞数据分析,从基因调控网络(GRN)构建到基因扰动模拟的全流程。通过环境配置、数据准备、GRN构建和扰动模拟等步骤,帮助研究者高效预测细胞命运决定的分子机制,特别针对实际分析中的易错点提供解决方案。

weixin_42525005的博客 439

【图像识别】基于神经网络求解车牌识别问题matlab代码含GUI界面

1 简介 伴随汽车数目的急剧增长,如何解决交通拥挤问题已经成为交通管理中最棘手的问题。智能交通系统成为解决交通问题的有效途径。车牌识别系统是智能交通系统的重要应用,应用于小区智能化管理、电子警察和停车场管理等方面,具有较高的社会价值。传统的车牌图像识别系统在核心技术字符识别部分,采用的多是模板匹配法或NN神经网络法进行识别,研究结果表明,模板匹配对字母和数字的识别率不高,对汉子的识别率很高;神经网络对字母和数字的识别率很高。因此,本文提出一种基于神经网络的车牌识别系统,同时结合模板匹配法对汉子进行识别,大

m0_60703264的博客 1147

#Linux内存管理# 用一个案例详细介绍ARMv7-A架构 缺页中断处理的原理

跳转到异常向量:根据 异常向量表基地址(通常配置在 VBAR 寄存器中,例如 0xFFFF0000) + 数据中止异常的偏移量 0x10,跳转到数据中止异常的处理程序入口点 0xFFFF0010(实践中,这个入口通常是一条跳转到更复杂处理函数的指令)。malloc 通常不会立即分配物理内存页,它只是在内核为该进程维护的虚拟地址空间中找到一段足够大的空闲虚拟地址区域(比如 0x00008000 - 0x00008FFF),标记为已用,并返回起始地址(例如 0x00008000)给程序。

sinat_37817094的博客 993

【车牌识别】基于matlab GUI模板匹配车牌识别(含识别率)【含Matlab源码 13437期】

模板匹配车牌识别(含识别率) 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 929

【系统分析师】2026年上半年真题:论文及解题思路

四篇论文围绕系统与开发实践展开: 安全架构设计强调数据加密(国密算法)、零信任访问控制及容灾架构,以某医疗云平台为例,实现RTO<5分钟的高可用保障。 架构风格应用解析微服务/事件驱动等风格选型,结合电商平台案例,通过服务拆分与异步通信提升扩展性。 需求评审机制提出正式评审与走查结合的方法,在金融系统中减少30%返工,解决业务规则二义性问题。 LLM测试生成利用大模型从需求/代码生成用例,辅以人工校验,使测试效率提升50%,覆盖边缘场景。 各篇均遵循“背景-理论-实践”结构,突出

数据知道的博客 785

华为OD面试八股文嵌入式C语言基础问题及答案(一)

本文总结了C语言编程中的10个关键知识点:1.宏定义MIN的实现方法;2.嵌入式无限循环的两种写法;3.变量a的8种不同定义方式;4.static关键字的三种作用;5.const关键字的含义和使用场景;6.volatile关键字的含义及三个应用实例;7.变量存储位置(栈区、静态区、堆区);8.32位系统指针位数;9.局部与全局变量重名规则;10.引用与指针的三点区别。这些内容涵盖了宏定义、变量声明、存储类别、指针等C语言核心概念,对嵌入式开发和系统编程具有重要参考价值。

m0_50382756的博客 160

【车牌识别】模板匹配蓝绿黄白四色车牌识别【含GUI Matlab源码 XYXX001期】

模板匹配蓝绿黄白四色车牌识别 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版)或下载付费资源,可赠送奶茶价版付费专栏指定代码1份; 997

【PINN物理信息网络】基于PINN物理信息网络结合Wave 2D有限差分方法(python)

【PINN物理信息网络】基于PINN物理信息网络结合Wave 2D有限差分方法(python)

k8291121的博客 1819

【车牌识别】模板匹配车牌识别(含识别率)【含GUI Matlab源码 13437期】

模板匹配车牌识别(含识别率) 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 787

车载以太网-TC8测试

TC8测试的用例数量 TC8测试基本流程 TC8测试内容

天赐好车的博客 3619

动态规划之【树形DP】第3课:树形DP应用案例实践2

动态规划之【树形DP】第3课:树形DP应用案例实践2

王老师青少年编程 769

【车牌识别】基于matlab GUI模板匹配蓝绿黄白四色车牌识别【含Matlab源码 XYXX001期】

模板匹配蓝绿黄白四色车牌识别 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 1143

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【象棋识别】基于matlab GUI BP神经网络象棋识别【含Matlab源码 4471期】

BP神经网络象棋识别 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 799

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 【图像识别】基于模板匹配实现蓝色、绿色、黄色车牌识别附matlab代码
下一篇: Matlab 车牌识别技术
GPT_code
博客等级 码龄3年 3543粉丝 338原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值