首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CvType.CV_8UC4的用途是什么

CvType.CV_8UC4的用途是什么
EN

Stack Overflow用户
提问于 2016-09-17 14:30:39
回答 3查看 16K关注 0票数 11

我有一个来自CvType.CV_8UC4检测的代码片段,但我不知道colorblobdetection的用途。这里的Link并没有真正解释它是如何工作的。

代码语言:javascript
运行
复制
public void onCameraViewStarted(int width, int height) {
    mRgba = new Mat(height, width, CvType.CV_8UC4); 
    mDetector = new ColorBlobDetector();
    mSpectrum = new Mat();
    mBlobColorRgba = new Scalar(255);
    mBlobColorHsv = new Scalar(255);
    SPECTRUM_SIZE = new Size(200, 64);
    CONTOUR_COLOR = new Scalar(255,0,0,255);
}
EN

回答 3

Stack Overflow用户

发布于 2016-09-17 14:34:42

OpenCV类型可以读取如下内容:

  • CV_
  • 8U:Unsigned int 8-bit
  • C4:Four channels。

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

票数 27
EN

Stack Overflow用户

发布于 2016-09-17 16:48:39

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

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

票数 12
EN

Stack Overflow用户

发布于 2021-02-09 23:57:14

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

因此,CV_8UC4可以直接用于此目的。顺便说一句,没有使用将RGB转换为有点像HSV的方法,所有通道都是单独处理的,因此:

如果在接下来的处理步骤中有许多繁重的cv操作,那么将其重新格式化为3bpp图像可能是一个好主意。这可以减少大约25%的处理时间,因为丢失了无用的第四个通道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39543580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档