C++ openCV 垫初始化
C++ openCV mat initialization
我是OpenCV的新手,我正在尝试从两种不同类型的数据中初始化两个cv::Mat
矩阵。一个是uint16_t
灰度值的简单单通道数组,第二个应该保存 RGB 565 的uint8_t
值数组中的 RGB 值(每个像素占用 2uint8_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);
...
相关文章:
- 在 OpenCV 的 namedWindow 之前或之后初始化 Tesseract
- C++ openCV 垫初始化
- C++/OpenCV 无法初始化 3D Mat
- 初始化多通道 OpenCV 垫
- opencv Mat 初始化,运行时错误为零
- 初始化暗网 opencv
- OpenCV 是否用零初始化权重矩阵,cv::ml::ANN_MLP
- 从YML文件OPENCV C 初始化摄像机参数
- 将数组分配给OPENCV C 中的初始化垫子对象
- OpenCV 中的相机初始化失败
- 如何初始化包含OpenCV的2D向量:矩阵
- OpenCV卡尔曼滤波器初始化错误
- OpenCV FeatureDetector 未初始化
- 如何从opencv cv::Mat或行主数组初始化特征矩阵
- OPENCV :不同方法的 CUDA 上下文初始化
- OpenCV级联分类器初始化
- 如何在opencv中创建和初始化带有alpha通道的图像
- 我怎样才能得到OpenCV的VideoCapture初始化时出了什么问题?
- 从数组初始化OpenCv Mat不工作
- 如何在c++中初始化OpenCV中的轮廓