【发布时间】:2020-09-24 18:33:03
【问题描述】:
我对 OpenCV 完全陌生,我正在尝试从两种不同类型的数据中初始化两个 cv::Mat 矩阵。一个是简单的uint16_t 灰度值的单通道数组,第二个应该保存来自uint8_t 值数组的RGB 值,这些值保存RGB 565(每个像素占用2 个uint8_t,所以它基本上是uint16_t 的数组)。我想要一个单香奈尔矩阵和一个三香奈尔矩阵(可能会在某个时候转换为一个香奈儿……但我还没到那里。
function(uint16_t *oneChanell, int oneChanellWidth, int oneChanellHeight, uint8_t *rgb, int rgbWidth, int rgbHeight){
...
cv::Mat M1 = cv::Mat(oneChanellHeight, oneChanellWidth, CV_16UC1, oneChanell);
cv::Mat M2 = cv::Mat(rgbHeight, rgbWidth, CV_16UC3, rgb);
...
}
现在,我知道第二次初始化是错误的。所以这是我的问题的一部分,如何最好地将 rgb565values 数组转换为cv::Mat。
然而,据我了解,第一次初始化应该可以工作。当使用cv::imwrite() 进行测试时,第一个只产生正确大小的空白白色图片,后三个相同(正确)图片的部分重叠剪影,但不是 RGB。任何建议将不胜感激。
【问题讨论】:
标签: c++ opencv opencv-mat