首先,cv::Mat 支持的都是packed的数据,你的BGR plannar的数据,怎么会生成cv::Mat,如果你真有一组BGR plannar的数据,那你不应该将它直接赋值给cv::Mat,这样容易引起混乱,需要自己时刻谨记这个cv::Mat里的数据不是packed。OpenCV的标准用法,当你想从BGR packed得到planar,应当使用cv::split 分成3个cv::Mat;当你想从BGR planar到packed,那你应当有3个通道的cv::Mat,然后使用cv::Merge合成1个cv::Mat。 但是如果你觉得openCV实现的split和merge不够高效,那么可以考虑使用libyuv中基于ARM NEON指令做过优化的SplitRGB和MergeRGB。
首先,cv::Mat 支持的都是packed的数据,你的BGR plannar的数据,怎么会生成cv::Mat,如果你真有一组BGR plannar的数据,那你不应该将它直接赋值给cv::Mat,这样容易引起混乱,需要自己时刻谨记这个cv::Mat里的数据不是packed。OpenCV的标准用法,当你想从BGR packed得到planar,应当使用cv::split 分成3个cv::Mat;当你想从BGR planar到packed,那你应当有3个通道的cv::Mat,然后使用cv::Merge合成1个cv::Mat。 但是如果你觉得openCV实现的split和merge不够高效,那么可以考虑使用libyuv中基于ARM NEON指令做过优化的SplitRGB和MergeRGB。
举报