Opencv常见图像格式Data Type及代码实例
cv::Mat 图像格式 (Data Type)命名规则
通用的参数命名格式为:
CV_{元素比特数}{元素类型}C{通道数}
1最常见的 CV_8UC3 就表示为 3通道Unsigned 8bits 格式的矩阵
- 8U:8bit unsigned
- C3:通道数为 3
2有些图片存储格式是 32位float ,则对应的图像格式为:CV_32FC1,CV_32FC2,CV_32FC3 等;
3如果图片存储格式是 64位double ,则对应的图像格式为:CV_64FC1,CV_64FC2,CV_64FC3 等。
int值映射关系
矩阵元素的数据类型也可用不同的 int 值来替代,其对应关系如下表:

取值范围

at所访问的数据类型
由于 at 方法接受的是 uchar 这样的数据类型,而非 CV_8U。 若是要使用 at 方法访问数据元素,在已知通道数和每个通道数据类型的情况下,指定给 at 方法的数据类型如下表所示:

Vec2b:表示每个Vec2b对象中,可以存储2个char(字符型)数据
Vec3b:表示每一个Vec3b对象中,可以存储3个char(字符型)数据,比如可以用这样的对象,去存储RGB图像
Vec4b:表示每一个Vec4b对象中,可以存储4个字符型数据,可以用这样的类对象去存储—4通道RGB+Alpha的图
对应的 Vec类 的定义如下:
template<typename _Tp, int n> class Vec : public Matx<_Tp, n, 1> {...};
typedef Vec<uchar, 2> Vec2b;
typedef Vec<uchar, 3> Vec3b;
typedef Vec<uchar, 4> Vec4b;typedef Vec<short, 2> Vec2s;
typedef Vec<short, 3> Vec3s;
typedef Vec<short, 4> Vec4s;typedef Vec<int, 2> Vec2i;
typedef Vec<int, 3> Vec3i;
typedef Vec<int, 4> Vec4i;typedef Vec<float, 2> Vec2f;
typedef Vec<float, 3> Vec3f;
typedef Vec<float, 4> Vec4f;
typedef Vec<float, 6> Vec6f;typedef Vec<double, 2> Vec2d;
typedef Vec<double, 3> Vec3d;typedef Vec<double, 4> Vec4d;
typedef Vec<double, 6> Vec6d;
样例1
使用无参数构造函数,创建Mat对象
Mat image = Mat();
image.create(4, 4, CV_8UC3);
或者
Mat m = Mat(4, 4, CV_8UC3)
此刻表示创建一个4x4大小的像素块,每个像素都是三通道每个通道的位数都是8位,一个字节的。上述CV_8UC3中的8表示8位、UC表示uchar类型、3表示三个通道。
样例2
使用行、列、类型、Scalar向量四个参数的构造函数创建Mat对象
Mat m = Mat(4, 4, CV_8UC3, Scalar(0, 255, 255);
或者
Mat m = Mat(Size(4, 4), CV_8UC3, Scalar(255, 0, 0));
同样表示创建一个4x4的像素块,唯一不一样的是颜色不是默认值而是我们指定的三通道颜色值向量Scalar(0, 255, 255)。其中Scalar向量数目永远是等于通道数目
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python+OpenCV图像处理——图像二值化的实现
简介:图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程. 普通图像二值化 代码如下: import cv2 as cv import numpy as np #全局阈值 def threshold_demo(image): gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY) #把输入图像灰度化 #直接阈值化是对输入的单通道矩阵逐像素进行阈值分割. ret, binary = cv.threshold(gray
-
OpenCV实现二值图像的边缘光滑处理
本文实例为大家分享了OpenCV学习笔记之针对二值图像的边缘光滑处理(突出部消除),供大家参考,具体内容如下 处理代码分为两部分,第一部分用于去除边缘的突出部,第二部分用于边缘光滑.具体如下所示 1.去除边缘突出部 //去除二值图像边缘的突出部 //uthreshold.vthreshold分别表示突出部的宽度阈值和高度阈值 //type代表突出部的颜色,0表示黑色,1代表白色 void delete_jut(Mat& src, Mat& dst, int uthreshold, int
-
OpenCV利用python来实现图像的直方图均衡化
1.直方图 直方图: (1) 图像中不同像素等级出现的次数 (2) 图像中具有不同等级的像素关于总像素数目的比值. 我们使用cv2.calcHist方法得到直方图 cv2.calcHist(images, channels, mask, histSize, ranges): -img: 图像 -channels: 选取图像的哪个通道 -histSize: 直方图大小 -ranges: 直方图范围 cv2.minMaxLoc: 返回直方图的最大最小值,以及他们的索引 import cv2 impo
-
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
一. 打印图片属性.设置图片存储路径 代码如下: #打印图片的属性.保存图片位置 import cv2 as cv import numpy as np #numpy是一个开源的Python科学计算库 def get_image_info(image): print(type(image)) #type() 函数如果只有第一个参数则返回对象的类型 在这里函数显示图片类型为 numpy类型的数组 print(image.shape) #图像矩阵的shape属性表示图像的大小,shape会返回tup
-
Python Opencv图像处理基本操作代码详解
1.图像读取 使用cv2.imread(filepath,flags)读入图像 filepath: 读入图像完整路径(绝对路径,相对路径) flags: 读入图像标志 cv2.IMREAD_COLOR:默认参数,读入一副彩色图,忽略alpha通道:可以通过1指定 cv2.IMREAD_GRAYSCALE:读入灰度图片 也通过0指定 cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道 import cv2 img1 = cv2.imread('C:/star.png',1)
-
Python+OpenCV图像处理——实现轮廓发现
简介:轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果. 代码如下: import cv2 as cv import numpy as np def contours_demo(image): dst = cv.GaussianBlur(image, (3, 3), 0) #高斯模糊去噪 gray = cv.cvtColor(dst, cv.COLOR_RGB2GRAY) ret, binary = cv.threshold(gray, 0, 25
-
Python+OpenCV图像处理—— 色彩空间转换
一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) #RGB转换为GRAY 这里的GRAY是单通道的 cv.imshow("gray", gray) hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV) #RGB转换为HSV cv.imshow("hsv", hsv) y
-
OpenCV实现图像转换为漫画效果
本文实例为大家分享了OpenCV实现图像转换为漫画的具体代码,供大家参考,具体内容如下 From <OpenCV By Example> 1.先canny提取图像的边缘并强化,翻转边缘为黑色,将像素值转换为0-1的值 2.将图像进行双边滤波处理,然后将像素值缩短为每10个灰度级为一个值 3.将前两步得到的结果相乘,显示结果 #include <iostream> using namespace std; #include "opencv2/core.hpp" #
-
Python+OpenCV图像处理——实现直线检测
简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).最基本的霍夫变换是从黑白图像中检测直线(线段). 2.Hough变换的原理是将特定图形上的点变换到一组参数空间上,根据参数空间点的累计结果找到一个极大值对应的解,那么这个解就对应着要寻找的几何形状的参数(比如说直线,那么就会得到直线的斜率k与常熟b,圆就会得到圆心与半径等等) 3.霍夫线变
-
Opencv常见图像格式Data Type及代码实例
cv::Mat 图像格式 (Data Type)命名规则 通用的参数命名格式为: CV_{元素比特数}{元素类型}C{通道数} 1最常见的 CV_8UC3 就表示为 3通道Unsigned 8bits 格式的矩阵 8U:8bit unsigned C3:通道数为 3 2有些图片存储格式是 32位float ,则对应的图像格式为:CV_32FC1,CV_32FC2,CV_32FC3 等: 3如果图片存储格式是 64位double ,则对应的图像格式为:CV_64FC1,CV_64FC2,CV_64
-
jquery删除指定子元素代码实例
jquery删除指定子元素代码实例: 本章节介绍一下如何利用jQuery实现删除指定子元素. 如何利用原生javascript实现此功能可以参阅原生javascript删除指定子元素代码实例一章节. 其实实现此功能的方式有很多种,下面介绍一下其中比较常见的一种. 代码实例如下: 复制代码 代码如下: <!DOCTYPE HTML> <html> <meta charset="utf-8"> <title>我们</title>
-
python+opencv+caffe+摄像头做目标检测的实例代码
首先之前已经成功的使用Python做图像的目标检测,这回因为项目最终是需要用摄像头的, 所以实现摄像头获取图像,并且用Python调用CAFFE接口来实现目标识别 首先是摄像头请选择支持Linux万能驱动兼容V4L2的摄像头, 因为之前用学ARM的时候使用的Smart210,我已经确认我的摄像头是支持的, 我把摄像头插上之後自然就在 /dev 目录下看到多了一个video0的文件, 这个就是摄像头的设备文件了,所以我就没有额外处理驱动的部分 一.检测环境 再来在开始前因为之前按着国嵌的指导手册安
-
PHP常见算法合集代码实例
许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下 一.文件夹遍历 <?php function allFile($path = __DIR__, $level = 1) { if (is_dir($path) && is_readable($path)) { if($pd = opendir($path)) { while (($file = readdir($pd)) !== false) { if($file
-
rapidjson解析json代码实例以及常见的json core dump问题
rapidjson解析json代码实例 直接看代码: #include <iostream> #include <stdio.h> #include<unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<sstream> // 请自己下载开源的rapidjson #include "rapidjson/
-
C语言实现opencv提取直线、轮廓及ROI实例详解
一.Canny检测轮廓 在上一篇文章中有提到sobel边缘检测,并重写了soble的C++代码让其与matlab中算法效果一致,而soble边缘检测是基于单一阈值的,我们不能兼顾到低阈值的丰富边缘和高阈值时的边缘缺失这两个问题.而canny算子则很好的弥补了这一不足,从目前看来,canny边缘检测在做图像轮廓提取方面是最优秀的边缘检测算法. canny边缘检测采用双阈值值法,高阈值用来检测图像中重要的.显著的线条.轮廓等,而低阈值用来保证不丢失细节部分,低阈值检测出来的边缘更丰富,但是很多边缘并
-
jquery 验证用户名是否重复代码实例
本文实例为大家分享了jquery验证用户名是否重复的具体代码,供大家参考,具体内容如下 $("#form-admin-add").validate({ rules:{ userName:{ required:true, minlength:2, maxlength:16, remote: { type: "post", url: "/checkUserName.html", data: { userName: function() { retur
-
Python+OpenCV+pyQt5录制双目摄像头视频的实例
起因 说起来录制视频,我们可能有很多的软件,但是比较坑的是,好像很少的软件支持能够同时录制两个摄像头的视频,于是我们用python自己写一个.要是OpenCV+python.貌似很简单就能OK的事情,但是,我们的项目不是一般要展示给老师看嘛.谁愿意看一个没有界面的录制过程是吧~,最后会附上源代码~ 依赖的包 在这里,我直接把import的包写出来了各位可以进行对号入座,然后就能知道需要安装哪个包啦! import cv2 import numpy as np from PyQt5.QtWidge
-
SpringMVC上传图片代码实例
这篇文章主要介绍了SpringMVC上传图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.前端H5 <div class="container-fluid"> <!-- <div id="panel-advancedoptions"> --> <div class="row"> <div class="col-md-1
-
微信小程序 简易计算器实现代码实例
这篇文章主要介绍了微信小程序 简易计算器实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 只能进行简单的运算 效果图如下: cal.wxml <view class="screen">{{result}}</view> <view class="content"> <view class="buttonGroup"> <button
随机推荐
- asp中command的在单条记录时,有些字段显示为空的问题
- Ubuntu下安装redis的2种方法分享
- 用JSON做数据传输格式中的一些问题总结
- function, new function, new Function之间的区别
- JavaScript for循环 if判断语句(学习笔记)
- 菜鸟购卡慎防 显卡选购常见五大误区
- Windows下使用批处理实现启动关闭mysql
- Kotlin 开发环境详解及简单实例
- JS+CSS实现简单滑动门(滑动菜单)效果
- laravel migrate初学常见错误的解决方法
- C++实现简单的扫雷游戏(控制台版)
- 加载 Javascript 最佳实践
- C语言以数据块的形式读写文件实例代码
- EasyUI的DataGrid每行数据添加操作按钮的实现代码
- javascript控制图片播放的实现代码
- Bootstrap风格的WPF样式
- 详解 MAC/Linux Vi配置环境变量及Java环境变量配置
- 如何用C语言画一个“圣诞树”
- PHP微信支付实例解析
- 两个php日期控制类实例
