std::vector<cv::Mat>和unsigned char** in_pixels 互相转换
将std::vectorcv::Mat转换为unsigned char** in_pixels,
std::vector<cv::Mat> matVector; // 假设已经有一个包含cv::Mat的vector
// 创建一个二维数组,用于存储像素数据
unsigned char** in_pixels = new unsigned char*[matVector.size()];
for (int i = 0; i < matVector.size(); i++) {
cv::Mat& mat = matVector[i];
in_pixels[i] = mat.data;
}
int width = 640; // 图像宽度
int height = 480; // 图像高度
int channels = 3; // 通道数
std::vector<cv::Mat> matVector;
for (int i = 0; i < height; i++) {
cv::Mat mat(height, width, CV_8UC3); // 创建一个新的cv::Mat对象
for (int j = 0; j < width; j++) {
for (int c = 0; c < channels; c++) {
mat.at<cv::Vec3b>(i, j)[c] = in_pixels[i][j * channels + c]; // 复制像素值
}
}
matVector.push_back(mat); // 将新的cv::Mat对象添加到vector中
}