如何将cv :: Mat中的尺寸从CxWxH置换为WxHxC(宽度x高度x通道)?
即。我该如何转换Mat:
cv::Mat frame (1000, 1000, CV_8UC3) = cv::imread("image.jpg", -1);
的
与尺寸:渠道,宽度,高度
使用尺寸来匹配:宽度,高度,通道
int sizes_inputs[] = { 3, 1000, 1000 };
cv::Mat out_image(3, sizes_inputs, CV_8UC);
OpenCV中是否有现成的快速功能进行此类转换?或者我应该自己实现这个算法?
答案 0 :(得分:0)
如果您希望以不同方式处理基础数据,则可以使用reshape
。数据存储为BGRBGRBGR...
。
否则你将不得不自己洗牌。
cv::reshape
和cv::minChannels
可能非常方便。
答案 1 :(得分:0)
你可以效仿它。我没有测试过代码,但是这样的事情应该做:
cv::Mat frame (1000, 1000, CV_8UC3) = cv::imread("image.jpg", -1);
int sizes_inputs[] = { 3, 1000, 1000 };
cv::Mat out_image(3, sizes_inputs, CV_8UC);
cv::Mat slices[] = {cv::Mat(1000, 1000, CV_8UC, out_image.ptr()),
cv::Mat(1000, 1000, CV_8UC, out_image.ptr() + 1000*1000),
cv::Mat(1000, 1000, CV_8UC, out_image.ptr() + 1000*1000*2)};
cv::split(frame, slices);