CvType.CV_8UC4的目的是什么?

时间:2016-09-17 06:30:39

标签: opencv

我有一个来自colorblobdetection的代码段,但我不知道CvType.CV_8UC4的目的是什么。这里的Link并没有真正解释它是如何运作的。

 cd <project.git>
 git config core.sharedRepository group
 chgrp -R (user) .  # user - which user is going to push 
 chmod -R g+w .
 chmod g-w objects/pack
 chmod g+s 'find . -type d'

3 个答案:

答案 0 :(得分:11)

OpenCV类型可以阅读以下内容:

  • CV_
  • 8U:无符号整数8位
  • C4:四个频道。

因此mRgba = new Mat(height, width, CvType.CV_8UC4);创建一个具有四个颜色通道的矩阵,其值在0到255之间。

答案 1 :(得分:6)

这是Matrix的特定形式。 其中8u表示每个元素都是无符号(仅正数)整数,8位。

有4个通道(如4个切片层叠在一起形成不同颜色的图像)的原因是构成图像。其中的前3个是R,G,B,最后一个是Alpha,它是0到1之间的值,表示透明度。当这些切片组合时,您将获得正确的颜色组合。

enter image description here

答案 2 :(得分:0)

所有答案都是正确的,另外: 第 4 个通道并非在所有情况下都是 alpha/透明度信息。有时,如果传入缓冲区是带有填充字节(大部分在前端或末尾)的 24 位彩色图像来填充它,则可以使用它来填充它,以便可以原子地(仅通过地址)寻址特定像素,而无需找到特定字节抵消。例如。 QImage 将 jpeg 加载为 32 位图像,而 4 个字节中只有 3 个相关。

因此可以直接使用 CV_8UC4。顺便说一句,如果不使用将 RGB 转换为有点像 HSV,所有通道都被单独处理,因此:

如果在接下来的处理步骤中有很多繁重的 cv 操作,最好将其重新格式化为 3bpp 图像。由于缺少无用的第 4 通道,这可以减少大约 25% 的处理时间。