Opencv笔记(1) 数据结构的命名规则(CvMat,...)

用Socket保存OpenCV的CvMat结构 接着上个月写的一篇发送IplImage结构的来说,因为Socket发送结构的部分上一篇写过了,所以不再多写了。 CvMat的结构如下: typedef struct CvMat { int type; int step; /* for internal use only */ int* refcount; int hdr_refcount; un 阅读详情

网上查了很多,发现查资料不如查源码

以Cv为开头的类,都是不含有具体数据的(仅仅存储指针)

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;
<pre name="code" class="cpp">
#ifdef __cplusplus union { int rows; int height; }; union { int cols; int width; };#else int rows; int cols;#endif}CvMat;


<pre name="code" class="cpp">CV_INLINE CvMat cvMat( int rows, int cols, int type, void* data CV_DEFAULT(NULL))
{
    CvMat m;

    assert( (unsigned)CV_MAT_DEPTH(type) <= CV_64F );
    type = CV_MAT_TYPE(type);
    m.type = CV_MAT_MAGIC_VAL | CV_MAT_CONT_FLAG | type;
    m.cols = cols;
    m.rows = rows;
    m.step = m.cols*CV_ELEM_SIZE(type);
    m.data.ptr = (uchar*)data;
    m.refcount = NULL;
    m.hdr_refcount = 0;

    return m;
}





CV_INLINE  double  cvmGet( const CvMat* mat, int row, int col )
{//低效率访问!
    int type;


    type = CV_MAT_TYPE(mat->type);
    assert( (unsigned)row < (unsigned)mat->rows &&
            (unsigned)col < (unsigned)mat->cols );


    if( type == CV_32FC1 )
        return ((float*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col];
    else
    {
        assert( type == CV_64FC1 );
        return ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col];
    }
}




CV_INLINE  void  cvmSet( CvMat* mat, int row, int col, double value )
{
    int type;
    type = CV_MAT_TYPE(mat->type);
    assert( (unsigned)row < (unsigned)mat->rows &&
            (unsigned)col < (unsigned)mat->cols );


    if( type == CV_32FC1 )
        ((float*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = (float)value;
    else
    {
        assert( type == CV_64FC1 );
        ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = (double)value;
    }
}

typedef struct CvMatND
{
    int type;
    int dims;


    int* refcount;
    int hdr_refcount;


    union
    {
        uchar* ptr;
        float* fl;
        double* db;
        int* i;
        short* s;
    } data;


    struct
    {
        int size;
        int step;
    }
    dim[CV_MAX_DIM];
}
CvMatND;

/* Basic element of the file storage - scalar or collection: */
typedef struct CvFileNode
{
    int tag;
    struct CvTypeInfo* info; /* type information
            (only for user-defined object, for others it is 0) */
    union
    {
        double f; /* scalar floating-point number */
        int i;    /* scalar integer number */
        CvString str; /* text string */
        CvSeq* seq; /* sequence (ordered collection of file nodes) */
        CvFileNodeHash* map; /* map (collection of named file nodes) */
    } data;
}
CvFileNode;




OpenCV-CvMat的像素数据读取方法 #include #include #include using namespace std; using namespace cv; int main(int argc, const char * argv[]) { // insert code here... float vals[] = {0.866025,-0.500000,0.500000,0.866025} 阅读详情

相关推荐

opencv学习笔记(七)-CvMat矩阵结构以及矩阵数据访问

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 首先说一下对矩阵维度和通道的理解: 维:体现为坐标。 通道: 对于这样一个数组矩阵:float data[18] = { 30, 60, 40, 60, 50, 40,

孤旅人。。。的博客 7763

数据结构—单链表

由若干结点构成,一个结点由数据和一个指针变量组成,该指针变量里面存储下一个结点的地址,就这样链接起来构成的结构称为单链表(Singly Linked List)

weixin_57822074的博客 444

OpenCV笔记(四)CvMat结构体初解1

CvMat:矩阵类型结构体。 一、创建矩阵: 法1:直接创建,然后使用cvReleaseMat()释放。 cvCreateMat(int rows, int cols, int type)  rows:行; cols:列; type:可以是任何预定义类型(type的写法:CV_C,其中:8,16,...:位数;U:无符号;S:有符号;F:浮点型;C:channels通道;1,2,3,4:通道

Zenail的专栏 1605

code规范 --- 驼峰命名法

1. 命名方法 1.1 驼峰命名法 指混合使用大小写字母来构成变量和函数的名字。当变量名或函数名是由一个或多个单词连结在一起构成的唯一识别字时,第一个单词以小写字母开始,从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myName、myAge,这样的变量名看上去就像骆驼峰一样此起彼伏,因此被称为驼峰命名法。 int *treeBase; int elemNum; int treeSize; 1.2 帕斯卡(Pascal)命名法 也叫大驼峰法,与驼峰命名法类似,不过骆驼命名法是首字母.

M2嵌入式 1万+

OpenCV常用的图像IplImage和矩阵CvMat操作总结

OpenCv中图像的结构体为IplImage,CvMat的结构体,以及元素操作

never give up的博客 3577

opencv里面的 CvMat 以及 cvSolve 的用法

code: // vv.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include #include "cvaux.h" //必须引此头文件 #include "cxcore.h" using namespace std; int main( int argc, char**

3248

Type-C PCB设计避坑指南:ESD防护与高速信号布线实战

USB Type-C接口凭借正反插、高速传输与PD快充等特性,已成为消费电子与工业设备的通用标准。其PCB设计需同时处理高速差分信号、大电流供电与CC逻辑检测,对阻抗匹配、ESD防护和回流路径要求极高。合理的布局布线能显著提升信号完整性与系统可靠性,广泛应用于手机、笔记本、医疗设备等场景。本文聚焦Type-C接口的ESD防护与高速信号布线,分享从原理图到投板的实操经验与避坑技巧。

aofan9566的博客 426

vmware虚拟机网络连接问题

主机:ubuntu14.04 Vitual Network Editor

入门虽易,精通不易,且学且珍惜! 1354

C++类、结构体、函数、变量等命名规则详解

编程越学越深,也慢慢了解到命名规范的重要性,在前面几个数据结构的示例中,大家也看到,命名也是有一定的规则的,这会方便我们阅读代码,方便我们后期完善。今天就给大家总结一下常用的C++命名规则。希望对大家有所帮助。 目录 一、命名规范原则 1、必循遵守的规则 2、尽量做到的规则 二、常用命名法 1、驼峰命名法 2、帕斯卡(Pascal)命名法 3、匈牙利命名法 4、下划线命名法 三...

水亦心的博客 3万+

新能源场站必看:一次调频与AGC/AVC的协同控制逻辑解析(含典型拓扑图)

本文深度解析了新能源场站中一次调频与AGC/AVC的协同控制逻辑。针对电网频率与电压稳定需求,详细阐述了三者在响应时序、控制目标上的分工与配合,并重点剖析了以RCL-0923装置为核心的指令融合架构与典型拓扑,为场站实现高效、稳定的协同运行提供了清晰的实践指导。

brown的博客 1061

STM32F105双路CAN通讯无法进入接收中断问题及解决方法

STM32F105RBT6双路CAN通讯无法进入接收中断问题及解决方法

m0_62383223的博客 3442

Opencv笔记(1) 命名规则数据结构(CvMat,...)

网上搜索了很多,检查中发现的信息劣势,检查源代码 同Cv为类的开始。包含详细的数据不(仅存储指针) CvMat typedef struct CvMat { int type; int step; /* for internal use only */ int* refcount; int hdr_refcount; union ...

weixin_34406061的博客 118

手把手教你用Verilog实现AT24C64的I2C读写(附完整仿真流程)

本文详细介绍了如何使用Verilog HDL设计AT24C64 EEPROM的I2C控制器,并配合ModelSim完成完整的仿真验证流程。内容涵盖I2C协议解析、Verilog状态机设计、AT24C64读写操作实现,以及仿真波形分析和调试技巧,为FPGA开发者提供了一套完整的EEPROM控制解决方案。

3c4x5z6v7b的博客 846

opencv 中的cvMat详解

1 cvMat简介 图像在计算机中是以数组的形式存放的,Mat是OpenCV中用于存放图像的数据结构。通过调用相关方法,我们能够实现对图像的输入输出以及一些操作。同时,Mat又不止可以作为图像容器,它也可以作为一种比较纯粹的描述矩阵这种数学对象的结构。它比C中的IplImage好的地方在于,由于它的“计数器”机制,我们不需要对它进行手动的内存回收,从而避免了常常困扰C/C++程序员的“内存泄

彼岸花 1万+

DeerFlow 系列教程 附录 | 核心文件索引、官方文档索引与推荐阅读顺序

DeerFlow 系列教程 附录本附录汇集了 DeerFlow 项目的核心文件索引、官方文档索引和推荐阅读顺序三份速查资料,方便读者在日常开发和学习中快速定位关键代码与文档。内容按实际项目目录结构整理,所有路径均基于 DeerFlow 2.0 版本验证。

weixin_43674738的博客 328

Verilog HDL 100道面试题及参考答案

在 Verilog HDL 中,参数(parameter)和宏定义(define)都可用于定义常量,但它们存在诸多不同之处。参数(parameter)是模块内部的常量定义,具有局部性。它在模块内部起作用,不同模块可以有同名的参数,且值可以不同。参数通常用于定义模块的一些配置信息,例如数据位宽、延迟时间等。参数的定义和使用是在模块的作用域内进行的,通过参数传递可以方便地对模块进行配置。endmodule在上述代码中,WIDTH是一个参数,用于定义加法器的位宽。通过改变WIDTH。

大模型大数据攻城狮的专栏 1734

OpenCV 学习笔记 [1] 基本数据结构, CvMat

    今后开始通过《 Learning OpenCV 》 英文版和查阅 OpenCV2.1 源代码来学习OpenCV。    OpenCV是Intel®开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。    OpenCV包含以下几部分:CV  图像处理和视觉算法CXCORE   基本数据结构和算法 绘图函数HIGHGUI   GUI,图像视频输入输出相关Machine Learning(ML) 机器学习相关 //ML!=Make LoveCVAU

Miao 1581

微信终于支持“多设备同时在线”?我用 NAS + Docker 搭了一个云端微信系统,多端共享24小时在线

通过Docker 容器,将微信运行在云端并通过浏览器访问,实现多设备共享同一微信会话 📱。本文详细介绍完整部署流程、docker-compose 配置及资源控制方案,让微信变成“可访问的云桌面应用” ✨

XiaoqiangClub的博客 870

《学习opencv》笔记——基本数据结构,CvMat,矩阵访问

《学习opencv》笔记——基本数据结构,CvMat,矩阵访问

睿不可挡的专栏 2652

C#实现自己的远程桌面控制工具

1. 创建一个winform工程并添加RDP客户端COM组件。右击工具箱,然后点击选择项,选中下图所示组件并点击确定。为窗口加载时添加自动连接远程桌面代码。3.调试运行程序,验证远程桌面控制。拖放RDP控件到窗口中。2.编写远程桌面连接代码。

6089

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

openCV-cvMat数据结构

1. 理解CvMat结构的数据类型  新建二维矩阵:cvMat* cvCreateMat(int rows, int cols,int type); 其中type可以是任何预定义类型,其结构为:CV_(S|U|F)C,bit_depth表示存储一个数字所需要的位数;S|U|F表示数据类型,即S为有符号的整型,U表示无符号整型,F表示浮点型;number_of_channels表示数据的通道数,

rouruoyun的专栏 3581

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OpenCV(1)——基础数据结构CvMat

在OpenCV中,矩阵是一个基础的数据结构,在CvCore中。在较早版本里面,使用的是C语言实现的struct,较新的版本里面有C++实现的class。下面分别介绍一下这两种使用方法。 CvMat 参考http://www.opencv.org.cn/index.php/Cxcore%E5%9F%BA%E7%A1%80%E7%BB%93%E6%9E%84 在OpenCV的中文首页上...

211

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

opencv笔记(五)——IplImage和CvMat

    OPENCV一书中,对IplImage和CvMat的讲述不够详细,很多时候当我们处理图像的时候,我们会避免用cvMat而是直接用IplImage的方法。       IplImage这个结构体中存储图像数据的部分是char * imageData,这个指针指向图像数组的首地址。而imageData是一个一维数组,遍历其数据的方法是使y从0~imageData-&gt;height,假设图...

qq_37764129的博客 880

OpenCV 中CvMat* 与CvMat

一、OpenCV 中CvMat* 与CvMat 定义一定要留意,不然在cvInvert(CvMat*,CvMat*),cvReshape(),cvMatMul()等函数的调用中,编译通过,但运行时出错. 例如:CvMat aa;         CvMat* bb;   则:  cvInvert(&aa,bb),若写成: cvInvert(&aa, &bb),运行时出错。二、cvMatMul(CvMat*,CvMat*,CvMat*)中的三个parameters 都应该是CV_64F类型,如果有CV_32F

jtop0的专栏 5889

OpenCV中CvMat的初始化[转]

一)cvCreateMat创建和分配数据CvCreateMat会创建CvMat,并为CvMat分配数据。cvCreateMat可以配合cvInitMatHeader来初始化CvMat对象。因为CvCreateMat创建的CvMat,对象在堆上,数据也在堆上,所以cvInitMatHeader在指定新的数据所在的位置的同时,也将CvMat::hdr_refcount和CvMat::refc...

508
上一篇: char与unsigned char 区别
下一篇: C++库研究笔记--用__attribute__((deprecated)) 管理过时代码
GeoAnt
博客等级 码龄15年 62粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值