在opencv中Vec3b和Scalar之间有什么区别
What is the difference between Vec3b and Scalar in opencv?
opencv、Vec2b、Vec3b中有不同的类型。Vec4i等等,还有Scalar类型。据我所知,Vec3b和Scalar都是用于将三个数字存储在一起的类型。所以,如果我想访问一个像素(RGB格式(,我只是简单地写image.at <Vec3b> (x,y)=Vec3b ( number, number, number)
,Scalar也是如此,但它们的区别是什么,有什么区别吗
我之所以问这个问题,是因为我在使用Vec3b和Scalar时有一些奇怪的经历,当我起诉Scalar时(我试图将一些像素转换为灰度,但将图像保留为RGB格式(image.at<Scalar>(x,y)=Scalar( gray_image.at<uchar>(x,y), gray_image.at<uchar>(x,y), gray_image.at<uchar>(x,y));
(我有相同的灰度图像,称为gray_image(,但这似乎会产生一些奇怪的结果,另一方面,当我使用Vec3b而不是Scalar时,我会得到正常的结果。为什么会发生这种情况?
根据http://docs.opencv.org/modules/core/doc/basic_structures.htmlScalar_
是
从
Vec
派生的4元素向量的模板类。
哪个
从
Vec<_Tp, 4>
导出的Scalar_
和Scalar
可以用作典型的四元矢量。此外,它们还可以转换为CvScalar
。类型Scalar
在OpenCV中被广泛用于传递像素值。
其中,作为Vec
:
短数值矢量的模板类,
Matx
:的部分情况
和
Vec
类通常用于描述多通道阵列的像素类型。详见Mat
。
所以它们是一样的,也不一样。
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 这 4 个 lambda 表达式之间有什么区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 不同的类或结构初始化方法之间的性能差异是什么?
- "constinit"和"constexpr"之间的真正区别是什么?
- 在什么条件下使用 std::memcpy 在对象之间复制是安全的?
- 移动语义和深层/浅层复制之间有什么关系?
- 这两种C++语法之间有什么区别?
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- ((int) a) 和 (int(a)) 之间的区别是什么?
- ( var > x) 和 ( x < var)之间有什么区别吗?
- 在 C 和 C++ 中作为函数参数,int **a 和 int a[][] 之间有什么确切的区别
- 返回引用实例和非引用实例(return mystr & vs mystr)之间的区别是什么?
- 超市管理系统的类别之间应该是什么关系?
- 指针和程序性能之间有什么关系吗?
- 这些初始化之间有什么区别?
- 空字符和"\0"之间有什么区别?
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?