用Socket保存OpenCV的CvMat结构

本文介绍如何使用Socket来发送和接收OpenCV的CvMat结构。重点在于理解CvMat的结构,特别是cvCreateMatHeader创建的CvMat其step属性与普通读取图片的CvMat不同。示例代码展示了CV_32FC1类型的CvMat在Socket通信中的传输过程。
摘要由CSDN通过智能技术生成

接着上个月写的一篇发送IplImage结构的来说,因为Socket发送结构的部分上一篇写过了,所以不再多写了。

CvMat的结构如下:

typedef struct CvMat
{
    int type;
    int step;
    /* for internal use only */
    int* refcount;
    int hdr_refcount;
    union
    {
        uchar* ptr;
        short* s;
        int* i;
        float* fl;
        double* db;
    } data;
#ifdef __cplusplus
    union
    {
        int rows;
        int height;
    };
    union
    {
        int cols;
        int width;
    };
#else
    int rows;
    int cols;
#endif
}
CvMat;
这里其实和传送IpIlmage一样,需要先传送CvMat的header。需要特别说明的是,CvMat中的矩阵元素的类型和IplImage是不一样的,有可能是uchar,short,float或者double。所以在接受的过程中可能需要知道它的type。使用以下代码:

int a_type = CV_MAT_TYPE(mat->type);
CV_MAT_TYPE是core文件夹下的types_c.h里定义的一个宏。用这个
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值