c++ - 如何初始化具有三个 channel 的垫子

标签 c++ opencv

我想在 OpenCV 2.4 中初始化一个三 channel 内核,我查看了文档,其中没有关于如何为 Mat 执行此操作的示例不止一个 channel 。

float data_[12] = {111, 112, 113, 121, 122, 123,
                   211, 212, 213, 221, 222, 223};
cv::Mat kernel(2, 2, CV_32FC3);
// How to initialize kernel with data_?

有没有办法用data_kernel上初始化?

最佳答案

///! 2017.10.05 09:40:33 CST
/// convert uint8_t array/pointer to cv::Mat

#include <opencv2/core.hpp>
#include <iostream>

int main(){        
    uint8_t uarr[] = {1,2,3,4,5,6,7,8,9,10,11,12};
    int rows = 2;
    int cols = 2;
    cv::Size sz(cols,rows);

    cv::Mat mat1(sz,CV_8UC3, uarr);
    cv::Mat mat2(rows, cols, CV_8UC3, uarr);

    std::cout<< "mat1: \n"<<mat1 << "\n\nmat2:\n" << mat2 << std::endl;
    return 0;
}

排除结果:

mat1: 
[  1,   2,   3,   4,   5,   6;
   7,   8,   9,  10,  11,  12]

mat2:
[  1,   2,   3,   4,   5,   6;
   7,   8,   9,  10,  11,  12]

我的另一个答案的详细信息: OpenCV - how to create Mat from uint8_t pointer

关于c++ - 如何初始化具有三个 channel 的垫子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47716075/

相关文章:

android - 跨平台项目中OpenGL绘图代码在哪里?规划我的引擎代码

c++ - 从捕获的帧中裁剪三角形 - OpenCV 和 C++

c++ - 用渐变填充圆圈

c++ - 什么是在 C++ 中返回错误代码的正确方法

c++ - 我的程序无法在某些 PC 上运行

opencv - 显示 UDP 组播 Rawvideo 流

c++ - 在立体校准中,如果我改变立体相机的分辨率,外部矩阵如何变化

android - 将视频帧从 OpenCV 程序发送到 Samsung Android

c++ - 调用任何入队命令时 OpenCL CL_INVALID_COMMAND_QUEUE

.net - C++ 编译器是否可以跨 DLL 内联方法调用?