OpenCV中易错点:理解OpenCV中的数据类型 CV_8UC3 等

引言

在理解OpenCV中的数据类型如,CV_8UC1、CV_8UC2、CV_8UC3等时,我有疑惑:
这个‘8’,表示的是每个通道都是8位???还是所有通道加起来一共才8位???

以CV_8UC3为例:如果这个8表示的是每个通道都是8位,那么这个矩阵的每个元素都是24位;如果这个8表示的是所有通道加起来一共才8位,那么这个矩阵的每个元素都是8位。

结论

先说结论:以CV_8UC3为例,这个8表示的是每个通道都是8位,这个矩阵的每个元素(像素点)都是24位。

验证

测试程序:

#include<iostream>
#include<opencv2\opencv.hpp>

using namespace std;
using namespace cv;

int main() {
	cv::Mat a(4, 4, CV_8UC3, cv::Scalar(1, 2, 3));
	cout << a << endl;
	//
	cout << "矩阵的通道数=" << a.channels() << endl;//channels()矩阵的通道数,也即矩阵中每个元素(像素点)所含有的通道数
	cout << "每个元素的字节数/每个像素点的字节数=" << a.elemSize() << endl;//elemSize()每个元素的字节数,也即每个像素点所含有的字节数

	return 0;
}


运行结果
在这里插入图片描述
可以看出:以CV_8UC3为例,这个8表示的是每个通道都是8位,这个矩阵的每个元素(像素点)都是3个字节,即24位。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值