gpt4 book ai didi

C++ openCV垫初始化

转载 作者:行者123 更新时间:2023-12-01 14:47:43 24 4
gpt4 key购买 nike

我对 OpenCV 完全陌生,我正在尝试初始化两个 cv::Mat来自两种不同类型数据的矩阵。一种是简单的单 channel 数组uint16_t灰度值,第二个应该保存 uint8_t 数组中的 RGB 值保存 RGB 565 的值(每个像素占用 2 个 uint8_t ,所以它基本上是 uint16_t 的数组)。我想要一个单香奈尔矩阵和一个 3 香奈尔矩阵(有时可能会转换为一个香奈儿……但我还没有完全做到。

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。任何意见,将不胜感激。

最佳答案

使用 cv::cvtColor将 mat M2 从 RGB565 转换为 RGB 格式。

...

cv::Mat M2 = cv::Mat(rgbHeight, rgbWidth, CV_16UC1, rgb);
// M2.depth() = 2 # CV_16U
// M2.channels() = 1 # single channel with each element having 16 bit



//convert mat format from bgr565 to rgb
cv::Mat M2_rgb;
cv::cvtColor(M2, M2_rgb, COLOR_BGR5652RGB);

...

关于C++ openCV垫初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62217250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com