第十三篇【传奇开心果系列】Python的文本和语音相互转换库技术点案例示例:Microsoft Azure的Face API开发人脸识别门禁系统经典案例

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Request parameters

params = {
‘detectionModel’: ‘detection_01’,
‘returnFaceId’: ‘true’,
‘returnFaceAttributes’: ‘age,gender,headPose,smile,facialHair,glasses,emotion,hair,makeup,accessories,blur,exposure,noise’,
}

Request body

data = {‘url’: image_url}

Send POST request to Azure Face API

response = requests.post(face_api_url + ‘/face/v1.0/detect’, params=params, headers=headers, json=data)

Get face ID from response

face_id = response.json()[0][‘faceId’]

Perform face verification

verification_data = {
‘faceId’: face_id,
‘personId’: ‘PERSON_ID_TO_VERIFY’,
‘personGroupId’: ‘PERSON_GROUP_ID_TO_VERIFY’
}

verification_response = requests.post(face_api_url + ‘/face/v1.0/verify’, headers=headers, json=verification_data)

Print verification response

print(json.dumps(verification_response.json(), indent=4))


请确保替换示例代码中的`YOUR_SUBSCRIPTION_KEY`、`YOUR_FACE_API_ENDPOINT`、`URL_OF_IMAGE_TO_ANALYZE`、`PERSON_ID_TO_VERIFY`和`PERSON_GROUP_ID_TO_VERIFY`为你自己的信息。


这段代码演示了如何使用Azure的Face API来检测人脸并进行身份验证。在实际应用中,你可以将这些功能集成到你的人脸识别门禁系统中,实现更复杂的功能。


### 二、扩展思路介绍


![在这里插入图片描述](https://img-blog.csdnimg.cn/ded2fdad17c9455cb1d8e40044abdfc2.jpg)当开发人脸识别门禁系统时,可以通过扩展以下思路来增强系统的功能和安全性:


1. **活体检测**:为了防止使用照片或视频进行欺骗,可以集成活体检测功能。通过要求用户进行随机动作(比如眨眼、摇头等)或使用3D摄像头来确保用户是真实存在的。
2. **人脸注册和管理**:实现人脸注册功能,允许用户将他们的人脸数据与其身份信息关联。这样可以建立一个人脸数据库,便于管理和更新用户信息。
3. **实时监控和报警**:将摄像头数据与人脸识别算法结合,实时监控门禁区域,检测未知人脸或异常行为,并触发报警机制。
4. **多因素认证**:除了人脸识别外,可以结合其他因素进行认证,如指纹识别、身份证验证等,以提高门禁系统的安全性。
5. **访客管理**:为访客设置临时通行权限,并在系统中记录他们的访问历史,以便追踪和管理访客信息。
6. **数据加密和隐私保护**:确保人脸数据的安全存储和传输,采取加密措施保护用户隐私,并遵守相关的数据保护法规。
7. **用户界面优化**:设计直观友好的用户界面,让用户能够方便快速地通过人脸识别门禁系统,提升用户体验。
8. **日志记录和审计**:记录系统的操作日志和事件,包括谁何时访问了系统,以便进行审计和追踪。


通过这些扩展思路,你可以打造一个功能强大、安全可靠的人脸识别门禁系统,满足不同场景下的需求,并提升系统的整体性能和用户体验。


### 三、活体检测深度解读和示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/cc467b32edf849e3a3b4cb0308f52a62.jpg)  
 (一)介绍  
 对于Azure的Face API,活体检测是一种重要的功能,可以帮助防止使用照片或视频进行欺骗。在实现活体检测时,可以考虑以下几种方法:


1. **动态表情检测**:要求用户进行随机的动态表情,如眨眼、张嘴、摇头等。通过检测这些动态表情,系统可以验证用户是真实存在的。
2. **红外活体检测**:利用红外摄像头来检测人脸的血液流动情况,以确认人脸是真实的。这种方法可以有效地区分静态照片和真实人脸。
3. **3D深度活体检测**:使用支持深度感知的摄像头或传感器,检测人脸的三维结构和深度信息,以确认人脸是真实的。
4. **随机挑战**:系统可以随机生成挑战,要求用户做出特定的动作或表情,如眨眼、摇头等,以确保用户是在实时参与认证过程。
5. **声音活体检测**:结合语音识别技术,要求用户朗读指定的文字或数字,以确保用户是真实存在的。


通过结合这些方法,你可以实现更加安全和可靠的活体检测功能,提高人脸识别门禁系统的安全性,防止欺骗行为的发生。在集成这些功能时,可以根据具体的应用场景和需求选择合适的活体检测方法。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1ec0c42d35204da784775e492680bba6.jpg)(二)活体检测雏形示例代码  
 以下是一个简单的示例代码,演示如何使用Azure的Face API进行活体检测。在这个示例中,我们将使用Python编程语言和Azure的Cognitive Services SDK来实现活体检测功能。


请确保已经安装了Azure的Cognitive Services SDK。你可以使用pip来安装Azure的Cognitive Services SDK:



pip install azure-cognitiveservices-vision-face


接下来是示例代码:



from azure.cognitiveservices.vision.face import FaceClient
from msrest.authentication import CognitiveServicesCredentials

Azure Face API密钥和终结点

KEY = ‘Your_Face_API_Key’
ENDPOINT = ‘Your_Face_API_Endpoint’

创建FaceClient

face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))

活体检测函数

def liveness_detection(image_url):
detected_faces = face_client.face.detect_with_url(image_url, detection_model=‘detection_03’)

if not detected_faces:
    return "No face detected in the image."

face_ids = [face.face_id for face in detected_faces]

# 开始活体检测
liveness_result = face_client.face.verify_face_to_face(face_id1=face_ids[0], face_id2=face_ids[0])

if liveness_result.is_identical and liveness_result.confidence > 0.5:
    return "Liveness detected. The face is real."
else:
    return "Liveness not detected. The face may be a static image."

测试活体检测

image_url = ‘URL_of_the_image_to_test’
result = liveness_detection(image_url)
print(result)


在这个示例代码中,我们定义了一个`liveness_detection`函数,它接受一个图像的URL作为输入,并使用Azure的Face API进行活体检测。函数首先检测图像中的人脸,然后对检测到的人脸进行活体检测,最后返回活体检测结果。


你需要将`Your_Face_API_Key`和`Your_Face_API_Endpoint`替换为你自己的Azure Face API密钥和终结点,以及提供一个要测试的图像的URL。运行代码后,将输出活体检测的结果。


这只是一个简单的示例,实际应用中可能需要根据具体需求进行定制和优化。希望这个示例能帮助你开始使用Azure的Face API进行活体检测。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/27dc4f0304934d7a919d4177e7cdae09.png)(三)动态表情检测示例代码  
 要实现动态表情检测,可以结合使用Azure的Face API和摄像头捕获用户的实时表情。下面是一个示例代码,演示如何使用Python和OpenCV库来捕获用户的实时表情,并通过Azure的Face API进行动态表情检测。


首先,确保已经安装了Azure的Cognitive Services SDK和OpenCV库。你可以使用以下命令来安装OpenCV:



pip install opencv-python


接下来是示例代码:



import cv2
from azure.cognitiveservices.vision.face import FaceClient
from msrest.authentication import CognitiveServicesCredentials

Azure Face API密钥和终结点

KEY = ‘Your_Face_API_Key’
ENDPOINT = ‘Your_Face_API_Endpoint’

创建FaceClient

face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))

捕获摄像头视频并进行动态表情检测

cap = cv2.VideoCapture(0)

while True:
ret, frame = cap.read()

# 在此处添加代码来检测用户的表情并发送到Azure Face API进行动态表情检测
# 可以在每一帧中检测用户的表情,并发送表情信息到Azure的Face API进行检测

cv2.imshow('Dynamic Expression Detection', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
    break

cap.release()
cv2.destroyAllWindows()


在这个示例代码中,我们使用OpenCV库来捕获摄像头视频,并在每一帧中检测用户的表情。你可以在适当的位置添加代码来检测用户的表情,例如眨眼、张嘴、摇头等,然后将这些表情信息发送到Azure的Face API进行动态表情检测。


请确保替换`Your_Face_API_Key`和`Your_Face_API_Endpoint`为你自己的Azure Face API密钥和终结点。运行代码后,将会打开一个摄像头窗口,显示捕获的视频,并在其中检测用户的动态表情。


这个示例代码可以作为一个基础框架,你可以根据具体需求扩展和优化,以实现更复杂的动态表情检测功能。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b8ae2b39459048c0be00667107338655.jpg)(四)红外活体检测示例代码  
 红外活体检测利用红外摄像头来检测人脸的血液流动情况,以确认人脸是真实的。这种方法可以有效地区分静态照片和真实人脸。在这里,我将提供一个简单的示例代码框架,演示如何使用OpenCV和红外摄像头来实现红外活体检测。


请注意,红外活体检测需要专门的红外摄像头设备来捕获红外图像。在示例中,我们将使用OpenCV来捕获红外图像,并展示一个基本的框架,供你参考和扩展。



import cv2

打开红外摄像头

cap = cv2.VideoCapture(0) # 0代表第一个摄像头,如果有多个摄像头,请根据需求调整

while True:
ret, frame = cap.read()

# 在此处添加红外活体检测的代码
# 可以根据红外图像中的特征来判断血液流动情况,以确认人脸是真实的

cv2.imshow('Infrared Face Detection', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
    break

cap.release()
cv2.destroyAllWindows()


在这个示例代码中,我们打开了红外摄像头并捕获红外图像。你可以在适当的位置添加红外活体检测的代码,根据红外图像中的特征来判断血液流动情况,以确认人脸是真实的。


请注意,红外活体检测涉及到更复杂的图像处理和算法,这里提供的示例代码只是一个基本框架。在实际应用中,你可能需要结合更高级的图像处理技术和算法来实现红外活体检测功能。


希望这个示例代码能够为你提供一个起点,帮助你开始实现红外活体检测功能。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6124f5bc32974e4f81a44db89266f55a.jpg)(五)3D深度活体检测示例代码  
 实现3D深度活体检测需要使用支持深度感知的摄像头或传感器来获取人脸的三维结构和深度信息。在这里,我将提供一个简单的示例代码框架,演示如何使用深度感知摄像头(如Intel RealSense摄像头)和OpenCV来实现基本的3D深度活体检测。


请确保已经安装了`pyrealsense2`库,你可以使用以下命令来安装:



pip install pyrealsense2


下面是一个简单的示例代码框架:



import cv2
import numpy as np
import pyrealsense2 as rs

配置深度感知摄像头

pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)

pipeline.start(config)

try:
while True:
frames = pipeline.wait_for_frames()
depth_frame = frames.get_depth_frame()

    if not depth_frame:
        continue
    
    depth_image = np.asanyarray(depth_frame.get_data())
    
    # 在此处添加3D深度活体检测的代码
    # 可以利用深度图像获取人脸的三维结构和深度信息,以确认人脸是真实的
    
    cv2.imshow('Depth Face Detection', depth_image)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

finally:
pipeline.stop()
cv2.destroyAllWindows()


在这个示例代码中,我们配置了深度感知摄像头并获取深度图像。你可以在适当的位置添加3D深度活体检测的代码,利用深度图像获取人脸的三维结构和深度信息,以确认人脸是真实的。


需要注意的是,3D深度活体检测涉及到更复杂的图像处理和算法,这里提供的示例代码只是一个基本框架。在实际应用中,你可能需要结合更高级的深度感知技术和算法来实现更准确的3D深度活体检测功能。


希望这个示例代码能够为你提供一个起点,帮助你开始实现3D深度活体检测功能。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/da8dd5e3863b4e69ba4b51c4d1ed7fe8.gif)(六)随机挑战示例代码  
 实现随机挑战功能可以增强活体检测系统的安全性,要求用户做出特定的动作或表情以确认其是在实时参与认证过程。下面是一个简单的示例代码框架,演示如何随机生成挑战并要求用户做出眨眼的动作。



import random
import time

随机生成挑战

challenge = random.choice([‘Please blink your eyes’, ‘Blink twice’, ‘Show a big smile’, ‘Nod your head’])

print(“Challenge: {}”.format(challenge))

模拟用户响应挑战

response = input("Enter ‘done’ after completing the challenge: ")

检查用户响应

if response.lower() == ‘done’:
print(“Challenge completed successfully!”)
else:
print(“Challenge not completed. Please try again.”)


在这个示例代码中,系统会随机生成一个挑战,要求用户眨眼。用户需要在控制台中输入’done’来表示完成挑战。你可以根据需要扩展代码,添加更多挑战和动作,如摇头、张嘴等,以增加认证的难度和安全性。


这个示例代码是一个简单的框架,实际应用中可能需要将挑战集成到人脸识别系统中,根据用户的反应来判断认证的有效性。希望这个示例能够启发你在活体检测系统中实现随机挑战功能。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/666204fac38a41068bad3eba7c851416.gif)(七)声音活体检测示例代码  
 结合声音活体检测可以进一步提高系统的安全性,要求用户朗读指定的文字或数字来确认其是真实存在的。下面是一个简单的示例代码框架,演示如何结合语音识别技术要求用户朗读指定的文字,并进行验证。


在这个示例中,我们将使用`SpeechRecognition`库来实现语音识别功能,确保在运行代码之前安装该库:



pip install SpeechRecognition


以下是示例代码:



import speech_recognition as sr

创建一个语音识别器对象

recognizer = sr.Recognizer()

朗读的指定文字

challenge_text = “OpenAI is amazing”

print(“Please read the following text out loud: ‘{}’”.format(challenge_text))

使用麦克风录音

with sr.Microphone() as source:
# 设置录音环境的噪音阈值
recognizer.adjust_for_ambient_noise(source)

audio = recognizer.listen(source)

try:
# 使用语音识别器识别用户的语音
user_response = recognizer.recognize_google(audio)

if user_response.lower() == challenge_text.lower():
    print("Voice challenge completed successfully!")
else:
    print("Voice challenge not completed. Please try again.")

except sr.UnknownValueError:
print(“Could not understand audio”)
except sr.RequestError as e:
print(“Could not request results; {0}”.format(e))


在这个示例代码中,系统会要求用户朗读指定的文字“OpenAI is amazing”。用户需要使用麦克风录音并识别朗读的文字,系统会根据用户的回答来判断是否通过了声音活体检测。


请注意,这只是一个简单的示例代码框枨,实际应用中可能需要更复杂的声音活体检测算法和更严格的验证机制来确保系统的安全性。希服这个示例能够帮助你开始实现声音活体检测功能。


### 四、人脸注册和管理示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/ad119f65062e4179baa0ae076c06a6af.jpg)实现人脸注册和管理功能可以让用户将他们的人脸数据与身份信息进行关联,从而建立一个人脸数据库用于管理和更新用户信息。下面是一个简单的示例代码框架,演示如何实现人脸注册功能:


在这个示例中,我们将使用`face_recognition`库来实现人脸检测和识别功能,确保在运行代码之前安装该库:



pip install face_recognition


以下是示例代码:



import face_recognition
import os
import pickle

存储人脸数据的文件名

face_data_file = ‘face_data.pkl’

如果已经存在人脸数据文件,则加载已有数据

if os.path.exists(face_data_file):
with open(face_data_file, ‘rb’) as file:
face_data = pickle.load(file)
else:
face_data = {}

人脸注册函数

def register_face(name, image_path):
# 加载图像文件
image = face_recognition.load_image_file(image_path)

# 获取图像中的人脸编码
face_encodings = face_recognition.face_encodings(image)

if len(face_encodings) == 0:
    print("No face found in the image.")
    return

# 保存第一个检测到的人脸编码
face_data[name] = face_encodings[0]

# 保存人脸数据到文件
with open(face_data_file, 'wb') as file:
    pickle.dump(face_data, file)

print("Face registered successfully for {}.".format(name))

示例:注册人脸

register_face(‘Alice’, ‘alice.jpg’)
register_face(‘Bob’, ‘bob.jpg’)


在这个示例代码中,`register_face`函数用于注册人脸,将人脸数据与姓名关联并保存到文件中。你可以根据需要扩展代码,添加更多功能,如更新人脸数据、删除人脸数据等,以实现完整的人脸管理系统。


请注意,这只是一个简单的示例代码框枨,实际应用中可能需要更复杂的数据管理和安全性措施来保护用户数据。希望这个示例能够帮助你开始实现人脸注册和管理功能。


### 五、实时监控和报警示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/2b3cf4c8c4164d9e8aa2c4cc3e46fe36.jpg)要实现实时监控门禁区域并检测未知人脸或异常行为,可以结合摄像头数据和人脸识别算法。下面是一个简单的示例代码框架,演示如何实现实时监控和报警功能:


在这个示例中,我们将使用`OpenCV`库进行摄像头数据的处理和显示,`face_recognition`库进行人脸检测和识别。确保在运行代码之前安装这两个库:



pip install opencv-python
pip install face_recognition


以下是示例代码:



import cv2
import face_recognition
import numpy as np

加载已注册人脸数据

known_face_encodings = [] # 已注册人脸编码
known_face_names = [] # 已注册人脸姓名

加载已注册人脸数据

例如:known_face_encodings = [face_encoding1, face_encoding2, …]

known_face_names = [“Alice”, “Bob”, …]

视频流捕获

video_capture = cv2.VideoCapture(0)

while True:
ret, frame = video_capture.read()

# 将图像从BGR颜色转换为RGB颜色
rgb_frame = frame[:, :, ::-1]

# 在图像中查找人脸位置
face_locations = face_recognition.face_locations(rgb_frame)
face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)

for face_encoding in face_encodings:
    # 检测是否为已知人脸
    matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
    
    name = "Unknown"
    
    # 如果检测到已知人脸,则更新姓名
    if True in matches:
        first_match_index = matches.index(True)
        name = known_face_names[first_match_index]
    
    # 在人脸周围画一个矩形框
    top, right, bottom, left = face_locations[0]
    cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
    cv2.putText(frame, name, (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)

# 显示监控画面
cv2.imshow('Video', frame)

# 按下q键退出监控
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

释放视频流和关闭窗口

video_capture.release()
cv2.destroyAllWindows()


在这个示例代码中,系统会实时监控摄像头数据,检测人脸并识别是否为已知人脸。如果检测到未知人脸,系统会将其标记为"Unknown"。你可以根据需要扩展代码,添加异常行为检测和报警机制,以实现更完整的实时监控和报警功能。


请注意,这只是一个简单的示例代码框架,实际应用中可能需要更复杂的算法和逻辑来确保监控的准确性和及时性。


### 六、多因素认证示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/3bf11979bb09478585c66977a04d594c.jpg)实现多因素认证可以结合多种生物特征或身份验证方式,如、身份证验证等。下面是一个简单的示例代码框架,演示如何结合人脸识别和指纹识别进行多因素认证:


在这个示例中,我们将使用`PyFingerprint`库进行指纹识别。确保在运行代码之前安装这个库:



pip install pyfingerprint


以下是示例代码:



from pyfingerprint.pyfingerprint import PyFingerprint
import cv2
import face_recognition

初始化指纹传感器

f = PyFingerprint(‘/dev/ttyUSB0’, 57600, 0xFFFFFFFF, 0x00000000)

初始化摄像头

video_capture = cv2.VideoCapture(0)

while True:
# 人脸识别部分
ret, frame = video_capture.read()
# 进行人脸识别…

# 指纹识别部分
if not f.verifyFinger():
    print('Fingerprint not verified.')
    continue

print('Fingerprint verified successfully.')

# 如果人脸识别和指纹识别都通过,则认证成功
print('Multi-factor authentication successful.')
break

释放视频流和关闭窗口

video_capture.release()
cv2.destroyAllWindows()


在这个示例代码中,系统会先进行人脸识别,然后再进行指纹识别。只有当两者都通过认证时,认证才会成功。你可以根据需要扩展代码,添加其他认证方式,如身份证验证等,以实现更多因素的认证。


请注意,这只是一个简单的示例代码框架,实际应用中可能需要更复杂的逻辑和错误处理来确保认证的准确性和安全性。


### 七、访客管理示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/24c4740dc1e24aac855ffbae76736895.jpg)要实现访客管理功能,包括为访客设置临时通行权限并记录他们的访问历史,可以结合数据库来记录访客信息。下面是一个简单的示例代码框架,演示如何实现访客管理功能:


在这个示例中,我们将使用`sqlite3`库来创建和管理SQLite数据库,记录访客信息。确保在运行代码之前安装这个库:




### 一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)



### 二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。



![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)



### 三、入门学习视频



我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。



![](https://img-blog.csdnimg.cn/afc935d834c5452090670f48eda180e0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP5aqb56eD56eD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值