如果你想将解码后的数据转换为 OpenCV 的 cv::Mat 对象,可以使用 cv::imdecode 函数。以下是一个示例代码:
#include <iostream>
#include <string>
#include <vector>
#include <opencv2/opencv.hpp>
extern "C" {
#include <libavutil/base64.h>
}
std::string base64Decode(const std::string& base64String) {
std::vector<uint8_t> decodedData(base64String.length());
int decodedSize = av_base64_decode(decodedData.data(), base64String.c_str(), base64String.length());
if (decodedSize >= 0) {
return std::string(decodedData.begin(), decodedData.begin() + decodedSize);
} else {
// 解码失败时返回空字符串或抛出异常等处理方式
return "";
}
}
cv::Mat decodeAndConvertToMat(const std::string& encodedStr) {
std::string decodedStr = base64Decode(encodedStr);
cv::Mat image = cv::imdecode(cv::InputArray(reinterpret_cast<const uchar*>(decodedStr.data()), decodedStr.size()), cv::IMREAD_COLOR);
return image;
}
int main() {
std::string encodedStr = "SGVsbG8gd29ybGQh"; // 示例的 Base64 编码字符串
cv::Mat image = decodeAndConvertToMat(encodedStr);
if (!image.empty()) {
cv::imshow("Decoded Image", image);
cv::waitKey(0);
} else {
std::cout << "Failed to decode the image!" << std::endl;
}
return 0;
}
在这个示例中,我们定义了一个 decodeAndConvertToMat 函数,该函数接收一个 Base64 编码的字符串,并将其解码为 cv::Mat 对象。我们使用 av_base64_decode 函数对 Base64 字符串进行解码,并使用 cv::imdecode 函数将解码后的数据转换为 cv::Mat 对象。
请确保链接并正确设置 FFmpeg 和 OpenCV 库以编译和运行此代码。
内容由零声教学AI助手提供,问题来源于学员提问




