2018.10.8更新
不过最新的学习发现,如果CV::MAT中的数据是连续的,也可以把数据用memcpy拷贝到对应的data指针指向的内存中。不过需要注意的是如果不连续,这样做是不可以的。
我之前项目中需要做的是把CV::MAT中的数据按字节取出,通过tcp发送出去,对方收到后重新根据接收到的字节流组装起来显示就需要用到以下构造函数:
inline Mat::Mat(int _rows, int _cols, int _type)
需要输入的是创建的图像大小的行列和type,行列自然不必说,那么就说一下type吧,这边参考了https://blog.csdn.net/u013270326/article/details/72954232,由于这篇博文排版有点问题,所以我就把最核心的内容摘录下来,以备以后查阅
举个例子:
cv::Mat testImg(1080,1920,CV_8UC4);
可以看到这里的type都是 CV_<bit_depth>(S|U|F)C<number_of_channels>这种格式的。其解释为:
1--bit_depth---比特数---代表8bite,16bites,32bites,64bites
2--S|U|F--
S--代表---signed int---有符号整形
U--代表--unsigned int--无符号整形
F--代