如何使用单独的rgb通道数据创建opencv矩阵

如何使用单独的rgb通道数据创建opencv矩阵,opencv,opencv-mat,Opencv,Opencv Mat,假设我有三个字符数组r[1024],g[1024],b[1024],其中包含一个图像的rgb数据。如何使用这些通道数据创建cv::Mat 类似这样: // Create three single channel Mats cv::Mat R(rows,cols,CV_8UC1,&r[0]); cv::Mat G(rows,cols,CV_8UC1,&g[0]); cv::Mat B(rows,cols,CV_8UC1,&b[0]); 然后合并到单个图像中: // Now

假设我有三个字符数组r[1024],g[1024],b[1024],其中包含一个图像的rgb数据。如何使用这些通道数据创建cv::Mat

类似这样:

// Create three single channel Mats
cv::Mat R(rows,cols,CV_8UC1,&r[0]);
cv::Mat G(rows,cols,CV_8UC1,&g[0]);
cv::Mat B(rows,cols,CV_8UC1,&b[0]);
然后合并到单个图像中:

// Now merge the 3 individual channels into 3-band bad boy
auto channels = std::vector<cv::Mat>{B, G, R};
cv::Mat ThreeBandBoy;
cv::merge(channels, ThreeBandBoy);
大概是这样的:

// Create three single channel Mats
cv::Mat R(rows,cols,CV_8UC1,&r[0]);
cv::Mat G(rows,cols,CV_8UC1,&g[0]);
cv::Mat B(rows,cols,CV_8UC1,&b[0]);
然后合并到单个图像中:

// Now merge the 3 individual channels into 3-band bad boy
auto channels = std::vector<cv::Mat>{B, G, R};
cv::Mat ThreeBandBoy;
cv::merge(channels, ThreeBandBoy);

我的回答解决了你的问题吗?如果是这样,请考虑接受它作为您的答案-点击空心蜱/支票旁边的选票计数。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢我的回答解决了你的问题吗?如果是这样,请考虑接受它作为您的答案-点击空心蜱/支票旁边的选票计数。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢