Mat类型与数据类型对应关系:

Unsigned 8bits uchar 0~255
Mat: CV_8UC1, CV_8UC2, CV_8UC3, CV_8UC4

Signed 8bits char -128~127
Mat: CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4

Unsigned 16bits ushort 0~65535
Mat: CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4

Signed 16bits short -32768~32767
Mat: CV_16SC1,CV_16SC2,CV_16SC3,CV_16SC4

Signed 32bits int -2147483648~2147483647
Mat: CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4

Float 32bits float -1.1810-38~3.4010-38
Mat: CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4

Double 64bits double
Mat: CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4

下面是如何查看图像的Mat类型:
cout<<image.type()<<endl;

OpenCV将16位图像转为8位

16位对应ushort类型。假如直接convertTo()转换类型的话,会有失真

Mat TIFF16to8(Mat& img)
{int width = img.cols;//图片宽度int height = img.rows;//图片高度Mat dst = Mat::zeros(height, width, CV_8UC1);//先生成空的目标图片double minv = 0.0, maxv = 0.0;double* minp = &minv;double* maxp = &maxv;minMaxIdx(img, minp, maxp);  //取得像素值最大值和最小值//用指针访问像素,速度更快ushort* p_img;uchar* p_dst;for (int i = 0; i < height; i++){p_img = img.ptr<ushort>(i);//获取每行首地址p_dst = dst.ptr<uchar>(i);for (int j = 0; j < width; ++j){p_dst[j] = (p_img[j] - minv) / (maxv - minv) * 255;//下面是失真较大的转换方法//int temp = img.at<ushort>(i, j);//dst.at<uchar>(i, j) = temp;}}return dst;
}

OpenCV裁剪矩形区域赋值

Mat img;//读个图cv::Rect rect(x, y, WIDTH, HEIGHT);//以坐标(x,y)为矩形的左上角起点,宽高为W和H的矩形Mat tmp = img(rect);//将img上矩形框住的部分赋给tmp

OpenCV对图像画线填充

    cv::Point root_points[1][4];//初始化一组数据,四个点root_points[0][0] = cv::Point(0,0);root_points[0][1] = cv::Point(0,100);root_points[0][2] = cv::Point(100,100);root_points[0][3] = cv::Point(100,0);const cv::Point* ppt[1] = { root_points[0] };int npt[] = { 4 };cv::polylines(diffuse, ppt, npt, 1, 1, Scalar(0, 0, 0), 1, 8, 0);//画线cv::fillPoly(diffuse, ppt, npt, 1, Scalar(0, 0, 0));//填充

OpenCV:Mat数据类型/16to8bit/RECT/画线填充相关推荐

  1. OpenCV Mat数据类型像素操作

    转自:http://blog.csdn.net/skeeee/article/details/13297457 OpenCV图像像素操作及效率分析 在计算机视觉应用中,对于图像内容的读取分析是第一步, ...

  2. Opencv Mat数据类型操作

    一.概述 Mat用来表示图像或稠密数组. 特别注意:数组中的数据不是直接绑定在mat的对象上的.Mat对象实质上是一个数据存储区的头,而非数组本身.如果忽略这点,经常会带来bug. 例如,mat1 = ...

  3. OpenCV Mat数据类型及位数总结

    前言 opencv中很多数据结构为了达到內存使用的最优化,通常都会用它最小上限的空间来分配变量,有的数据结构也会因为图像文件格式的关系而给予适当的变量,因此需要知道它们声明的空间大小来配置适当的变量. ...

  4. char类型是多少 mat_OpenCV Mat数据类型及位数总结

    OpenCV Mat数据类型及位数总结 float:  4字节,6-7位有效数字 -3.4E-38 到 3.4E38 double: 8字节,15~16位有效数字 -1.7E-308 到 1.7E30 ...

  5. OpenCV在图像上画线、矩形、椭圆、多边形、填充的多边形、圆、显示文字

    OpenCV在图像上随机画直线.椭圆.多边形.圆.显示文字 代码如下: /*** @file Drawing_2.cpp* @brief Simple sample code*/#include &l ...

  6. OpenCV 4.x API 详解与C++实例-Mat数据类型详解

    第二节 Mat数据类型详解 1.Mat数据类型描述 我们有多种从现实世界中获取数字图像的方法:数码相机,扫描仪,计算机断层扫描和磁共振成像等等. 在每种情况下,我们(人类)看到的都是图像. 但是,当将 ...

  7. OpenCV 画点 画线 画框 写字操作

    画点 画线 画框 写字操作 在使用OpenCV的时候经常会需要用到画点画线画框写字等等操作,这里演示一下这些操作的方法 #include <opencv2/core/core.hpp> # ...

  8. OpenCV Mat的数据类型

    OpenCV Mat的数据类型 Mat type类型 内存拷贝 简单实现 Mat Mat类(Matrix的缩写)是OpenCV用于处理图像而引入的-一个封装类.他是一个自动内存管理工具. Mat:本质 ...

  9. OpenCV入门: Mat数据类型及其转换,访问

    1. 总结 先贴上我总结的Opencv的数据类型, 主要是针对不同Mat类型进行新建,修改和访问时使用, 更详细的数据访问见下文: 2. CV_8UC3解说 新建一个CV_8UC3型的cv::Mat, ...

最新文章

  1. vs修改 exe名字
  2. PaperWeekly给您拜年啦!
  3. Servlet_体系结构
  4. redis基础一_常用指令
  5. linux脚本多个条件比较大小,shell脚本-比较两个整数大小
  6. Docker学习与总结
  7. C++里面的LPBYTE是什么意思
  8. 1032. 字符流(每日一难phase2--days28)
  9. 机器学习笔记-阻尼牛顿法
  10. 【软件工程】工程经济学期末复习资料
  11. 计算机在医学影像中的应用,计算机图像处理技术在医学影像中的进展与应用
  12. JC-1、python学习笔记
  13. mac配置git公钥
  14. STVP ST Visual Programmer 下载程序出错
  15. 一款新型的maphack
  16. 用Python绘制一朵玫瑰花,送给特别的她
  17. 【读点论文】EfficientNetV2: Smaller Models and Faster Training 训练感知的神经架构搜索+自适应的渐近训练方法优化训练(TPU,大数据量)
  18. 试输出斐波那契数列的前10项
  19. ROS中gmapping建图教程
  20. 育儿-《6-9岁孩子为何喜欢装大人》书中的精髓:6-9岁孩子心理特征、原因以及我们和孩子相处的方法。

热门文章

  1. 代码重构技巧宝典,学透本篇就足够了!
  2. 剥开浮躁表面,直指金融科技内心
  3. jeecg 如何重新加载当前渲染tab页面
  4. 明晚8点,捷微团队QQ群公开课,讲解jeewx2.0版本maven环境的搭建入门!
  5. Linux系统:Centos7下搭建PostgreSQL关系型数据库
  6. Linux IPC实践(13) --System V IPC综合实践
  7. MySQL存储引擎:MyISAM InnoDB
  8. Django开发social-auth-app-django 第三方登陆
  9. [20170927]关于hugepages.txt
  10. 转:设置Eclipse中的tab键为4个空格的完整方法