OpenCV cv::Mat.type() 以及各类型数据转换

摘要:
例如,src是CV_8UC3。执行上述函数后的dst仍然是CV_8UC3,而不是变为CV_8UC1。请注意,这只是数据截断。

一、cv::Mat的类型有30种,预定义的enum 0-30分别如下

OpenCV cv::Mat.type() 以及各类型数据转换第1张

图转自http://blog.csdn.net/hyqsong/article/details/46367765

二、type由depth和channel组成,depth   由.depth()返回的enum有以下这些

enum { CV_8U=0, CV_8S=1, CV_16U=2, CV_16S=3, CV_32S=4, CV_32F=5, CV_64F=6 };

例如CV_8U代表8位unsigned int , CV_16S代表16位short

.channels()返回结果是几就代表是几通道的

三、src.convertTo(dst, CV_8UC1)这个函数,只能进行depth的转换,不能转换通道。

例如src是CV_8UC3,执行上面这个函数之后的dst,依然是CV_8UC3,而不会变为CV_8UC1,注意,此时仅为数据截断。

CV_16U->CV_8U dst.convertTo(src, CV_8U, 1/257.0) ,这里使用257而不是256是为了结果<=255保障不越界

如果是32F或64F转换,则

double maxVal = 0;
double minVal = 0;
cv::minMaxLoc(image_mat, &minVal, &maxVal);
scale = 255.0 / (maxVal - minVal);
shift = -255.0*minVal / (maxVal - minVal);
image_mat.convertTo(image_mat, CV_8U, scale, shift);

先使用minMaxLoc获取最大最小值,然后按比例缩放偏移

四、要改变通道数,要使用 cv::cvtColor(src, dst, COLOR_BGR2GRAY);   3通道就转化成了单通道

Mat_<uchar>---------CV_8U
Mat<char>-----------CV_8S
Nat_<short>---------CV_16S
Mat_<ushort>--------CV_16U
Mat_<int>-----------CV_32S
Mat_<float>----------CV_32F

Mat_<double>--------CV_64F

免责声明:文章转载自《OpenCV cv::Mat.type() 以及各类型数据转换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇自定义标签navigator浏览器信息下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用composer 实现自动加载

准备工作:提前安装好composer 1.创建项目目录OOP 2.OOP目录下新建composer.json文件,composer.json是一个空json文件,代码如下: { } 3.打开控制台,进入项目目录OOP,在OOP目录下运行composer命令: composer install 4.运行后自动生成composer文件目录,目录结...

Java WEB开发环境搭建以及创建Maven Web项目

根据此链接博文学习配置: http://www.cnblogs.com/zyw-205520/p/4767633.html  1.JDK的安装     自行百度,(最好是jdk1.7版本的)     测试如下图,即完成jdk的安装                2.MyEclipse安装     自行下载安装即可,(我使用的是2013版的) 3.Tomc...

opencvputText绘字

cv::Mat src(500, 500, CV_8UC3, cv::Scalar(0,0,0)); std::string text = "Hello World!"; cv::putText(src,text, cv::Point(10,50), cv::FONT_HERSHEY_PLAIN,4, cv::Scalar(255...

利用netperf、iperf、mtr测试网络

1、netperf安装和使用   netperf安装   # tar -xzvf netperf-2.7.0.tar.gz # cd netperf-2.7.0 # ./configure # make # make install 在客户端和服务器上都安装好。   netperf使用    首先在服务器端运行netserver. #./net...

vue常用插件之图片预览

v-viewer(1.4.2) 非常实用的图片预览插件,支持旋转、缩放、翻转等操作 一、npm安装 npm i v-viewer -S 二、全局引入(main.js中) import 'viewerjs/dist/viewer.css' import Viewer from 'v-viewer' Vue.use(Viewer) //配置项 Viewer.s...

android图像处理系列之七--图片涂鸦,水印-图片叠加(转载)

图片涂鸦和水印其实是一个功能,实现的方式是一样的,就是一张大图片和一张小点图片叠加即可。前面在android图像处理系列之六--给图片添加边框(下)-图片叠加中也讲到了图片叠加,里面实现的原理是直接操作像素点。下面给出别外一种方式让图片叠加--用Canvas处理图片,canvas已经封装好了,直接调用就行。 下面看效果: + = 代码: [jav...