问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

opencv mat 怎么转化为float

发布网友 发布时间:2022-05-27 18:13

我来回答

1个回答

热心网友 时间:2023-11-13 04:24

 一、Mat类型:矩阵类型,Matrix。
  在openCV中,Mat是一个*的密集数据数组。可以用来处理向量和矩阵、图像、直方图等等常见的*数据。
  Mat有3个重要的方法:
  1、Mat mat = imread(const String* filename); 读取图像
  2、imshow(const string frameName, InputArray mat); 显示图像
  3、imwrite (const string& filename, InputArray img); 储存图像
  Mat类型较CvMat与IplImage类型来说,有更强的矩阵运算能力,支持常见的矩阵运算。在计算密集型的应用当中,将CvMat与IplImage类型转化为Mat类型将大大减少计算时间花费。
  A.Mat -> IplImage
  同样只是创建图像头,而没有复制数据。
  例: // 假设Mat类型的imgMat图像数据存在
  IplImage pImg= IplImage(imgMat);
  B.Mat -> CvMat
  与IplImage的转换类似,不复制数据,只创建矩阵头。
  例: // 假设Mat类型的imgMat图像数据存在
  CvMat cvMat = imgMat;
  
  二、CvMat类型与IplImage类型:“图像”类型
  在openCV中,Mat类型与CvMat和IplImage类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,openCV对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。
  补充:IplImage由CvMat派生,而CvMat由CvArr派生即CvArr -> CvMat -> IplImage
  CvArr用作函数的参数,无论传入的是CvMat或IplImage,内部都是按CvMat处理。
  1.CvMat
  A.CvMat-> IplImage
  IplImage* img = cvCreateImage(cvGetSize(mat),8,1);
cvGetImage(matI,img);
  cvSaveImage("rice1.bmp",img);
  B.CvMat->Mat
  与IplImage的转换类似,可以选择是否复制数据。
  Mat::Mat(const CvMat* m, bool copyData=false);
  在openCV中,没有向量(vector)的数据结构。任何时候,但我们要表示向量时,用矩阵数据表示即可。
  但是,CvMat类型与我们在线性代数课程上学的向量概念相比,更抽象,比如CvMat的元素数据类型并不仅限于基础数据类型,比如,下面创建一个二维数据矩阵:
  CvMat* cvCreatMat(int rows ,int cols , int type);
  这里的type可以是任意的预定义数据类型,比如RGB或者别的多通道数据。这样我们便可以在一个CvMat矩阵上表示丰富多彩的图像了。
  
  2.IplImage
  在类型关系上,我们可以说IplImage类型继承自CvMat类型,当然还包括其他的变量将之解析成图像数据。
  IplImage类型较之CvMat多了很多参数,比如depth和nChannels。在普通的矩阵类型当中,通常深度和通道数被同时表示,如用32位表示RGB+Alpha.但是,在图像处理中,我们往往将深度与通道数分开处理,这样做是OpenCV对图像表示的一种优化方案。
  IplImage的对图像的另一种优化是变量origin----原点。在计算机视觉处理上,一个重要的不便是对原点的定义不清楚,图像来源,编码格式,甚至操作系统都会对原地的选取产生影响。为了弥补这一点,openCV允许用户定义自己的原点设置。取值0表示原点位于图片左上角,1表示左下角。
  dataOrder参数定义数据的格式。有IPL_DATA_ORDER_PIXEL和IPL_DATA_ORDER_PLANE两种取值,前者便是对于像素,不同的通道的数据交叉排列,后者表示所有通道按顺序平行排列。
  IplImage类型的所有额外变量都是对“图像”的表示与计算能力的优化。
  A.IplImage -> Mat
  IplImage* pImg = cvLoadImage("lena.jpg");
Mat img(pImg,0); // 0是不复制影像,也就是pImg与img的data共用同个记忆体位置,header各自有
B.IplImage -> CvMat
  法1:CvMat mathdr, *mat = cvGetMat( img, &mathdr );
  法2:CvMat *mat = cvCreateMat( img->height, img->width, CV_64FC3 );
cvConvert( img, mat );
  C.IplImage*-> BYTE*
  BYTE* data= img->imageData;
  
  CvMat和IplImage创建时的一个小区别:
  1、建立矩阵时,第一个参数为行数,第二个参数为列数。
  CvMat* cvCreateMat( int rows, int cols, int type );
  2、建立图像时,CvSize第一个参数为宽度,即列数;第二个参数为高度,即行数。这 个和CvMat矩阵正好相反。
  IplImage* cvCreateImage(CvSize size, int depth, int channels );
  CvSize cvSize( int width, int height );
  
  IplImage内部buffer每行是按4字节对齐的,CvMat没有这个*
  
  补充:
  A.BYTE*-> IplImage*
  img= cvCreateImageHeader(cvSize(width,height),depth,channels);
  cvSetData(img,data,step);
  //首先由cvCreateImageHeader()创建IplImage图像头,制定图像的尺寸,深度和通道数;
  //然后由cvSetData()根据BYTE*图像数据指针设置IplImage图像头的数据数据,
  //其中step指定该IplImage图像每行占的字节数,对于1通道的IPL_DEPTH_8U图像,step可以等于width。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
步步高学习机@iboxH2 H2学习机的屏幕大小? 6-7万左右纯电 女生想买台便宜的小车在城市代步,有什么好推荐?电动车最好? 河南德盛智能环保科技有限公司怎么样? 深圳市德盛铭电科技有限公司怎么样? pvc防水门生产厂家哪个好呢? 晋江市德顺陶瓷建材有限公司简介 酒店家具厂家 梨子酿酒最简单的方法 初级安全工程师单位不聘用 cad图层中有哪些图层是不能删除的 请问高分子材料与工程专业可以考注册安全工程师吗? CAD中哪些图层不能打开,冻结,删除 急急急 女人地包天好吗 为什么有的人牙齿好有的人会相反 忘记自己的华为账号密码? 兜齿的人 兜很难看吗? 有好看的人吗?《加分》 急,这种面相的女人命好不好,正面不见耳,下巴有点兜齿,求大师详解,万分谢谢。 请问地包天的牙齿对人有危害吗? 问:急,这种面相的女人命好不好,正面不见耳,下巴有点兜齿,求大师详解,万分谢谢。 兜齿女人在家克父母,出嫁克夫家.克亲戚,克朋友.总之不是很好.晚年贫困. 对吗? 联想笔记本电脑i7 6500U 如何联接网线 兜齿好吗? 那一般会考什么呢? 会考考什么 漂白水对衣服有损伤吗 中南大学计算机安全技术课程有一个论述题,请论述下面的问题: 防火墙技术在计算机安全中有哪些重要作用? 除了qq安全中心还有什么办法解锁qb保护? 怎么关闭QB保护 opencv怎么将vector里的值传递到Mat里? 一千德元换人民币的话,能换多少人民币..……? iphone6splus 全网通和双4g有什么区别为什么价钱差这么多 汽车钥匙被锁里面了,砸烂哪块玻璃最划算 生活急救常识 在拇指玩下载了fl studio,但是一直闪退,我是安卓系统小米4手机,有什么解决办法,求解! Fl studio闪退怎么办 下了好多版本都这样 安卓版FL Studio Mobile闪退 visual studio安装闪退 关闭FLstudio为什么老自动打开浏览器 笔记本适配器,哪个品牌的好? 笔记本电源适配器哪里的最好 笔记本电源适配器品牌哪个最好 一质量为m的质点,仅受到力 的作用,式中k为常数, 为从某一定点到质点的矢径。该质点在 处由静止开始运动 一质量为m的质点受到两个力 一个质量为m的质点 一质量为m的质点,放置在一质量为M,长度为L的均匀细棒的延长线外d处,求棒对质点的万有引力 (高数微分方程)一个质量为m的质点从水面由静止开始下沉,所受阻力与下沉速度成正比(详情看图) 一个质量为m的质点以速度v0做匀速运动,某一时刻开始受到恒力F的作用,质点的速度先减小后增大 邮寄锦旗和感谢信给医生、要用信封把信装起来吗?