样例和指导
图片处理
以下是一个简单的参考样例,通过多模态 SDK 的 Image 读取并进行缩放、裁剪,最后转化为通用的 Numpy 数组展示上述操作的效果。
import mm # 引入多模态SDK包
import matplotlib.pyplot as plt # 仅做图像展示使用
dog_img = mm.Image.open("/home/test.jpg") # 通过多模态Image类,从实际文件构造Image变量(注意文件权限不能超过640)
dog_resized_img = dog_img.resize((480, 480), mm.Interpolation.BICUBIC, mm.DeviceMode.CPU) # 对构造的图像进行缩放操作
dog_cropped_img = dog_img.crop(100, 100, 512, 630, mm.DeviceMode.CPU) # 对构造的图像进行裁剪操作
resized_np = dog_resized_img.numpy() # 将缩放的图像转化为Numpy数组,方便后续对其进行展示
cropped_np = dog_cropped_img.numpy() # 将裁剪的图像转化为Numpy数组,方便后续对其进行展示
original_dog = dog_img.numpy() # 将构造的原图像转化为Numpy数组,方便后续对其进行展示
# 以下为展示图像代码
plt.figure(figsize=(15, 5))
plt.subplot(1, 3, 1)
plt.title("Original")
plt.imshow(original_dog)
plt.axis("off")
plt.subplot(1, 3, 2)
plt.title("Resized (480x480)")
plt.imshow(resized_np)
plt.axis("off")
plt.subplot(1, 3, 3)
plt.title("Cropped (512x630)")
plt.imshow(cropped_np)
plt.axis("off")
plt.show()

视频处理
多模态 SDK 的视频解码接口支持两种参数设置方式,用户可按需选择:
- 如果传入了期望解码的视频帧 ID列表且其内容合法,SDK 会根据这些帧 ID 进行解码,返回的 image 对象列表长度与帧 ID 列表长度一致。
- 如果帧 ID 列表为空,则可以通过期望解码后获取的总帧数参数进行设置,此时接口会从视频中均匀采样指定数量的帧,最终返回的 image 对象列表长度等于设定的帧数。
-
传入目标解码的帧 ID 集合,得到的返回值列表大小为传入的帧 ID 集合大小。
from mm import video_decode import os norm_file_path = "/home/test/xxx.mp4" # 要解码的视频文件地址 os.chmod(norm_file_path, 0o640) # 修改权限 mm_images = video_decode(norm_file_path, "cpu", [0, 48, 96, 145, 193, 241, 290, 338, 386, 435, 483, 531], 10) print(f"mm_images.size: {len(mm_images)}")mm_images.size: 12 -
传帧 ID 列表为空,传入期望解码后获取的总帧数,得到的返回值列表大小为传入的期望解码后获取的总帧数大小。
from mm import video_decode import os norm_file_path = "/home/test/xxx.mp4" # 要解码的视频文件地址 os.chmod(norm_file_path, 0o640) # 修改权限 mm_images = video_decode(norm_file_path, "cpu", [], 10) print(f"mm_images.size: {len(mm_images)}")mm_images.size: 10
音频处理
以下示例演示单音频文件加载与批量加载(请将路径替换为实际 wav 文件,并确保文件权限不高于 640):
from mm import load_audio
# 单文件加载
single_audio_path = "/path/to/speech.wav"
waveform, sr = load_audio(single_audio_path)
print(f"single audio shape: {waveform.shape}, sample rate: {sr}")
# 从文件列表批量加载
audio_file_paths = ["/path/to/audio1.wav", "/path/to/audio2.wav"]
batch_from_filelist = load_audio(audio_file_paths)
print(f"batch count: {len(batch_from_filelist)}")
# 从目录批量加载
audio_directory = "/path/to/audio_dir"
batch_from_directory = load_audio(audio_directory)
print(f"directory batch count: {len(batch_from_directory)}")
如需指定重采样率,可传入 sr 参数,例如 load_audio(single_audio_path, sr=16000)。