我想在 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/