【发布时间】:2015-08-04 20:25:06
【问题描述】:
所以我试图在 openCV 中为 Mat 对象的所有元素添加一个标量值,但是对于 raw_t_ubit8 和 raw_t_ubit16 类型,我得到错误的结果。这是代码。
Mat A;
//Initialize Mat A;
A = A + 0.1;
相加的结果是完全相同的矩阵。当我尝试将标量添加到 raw_t_real 类型的矩阵时,不会出现此问题。 raw_t_ubit8 我的意思是深度是 CV_8UC1
【问题讨论】:
-
我不知道 raw_t_real 类型是什么(谷歌没有告诉我)......你试过:docs.opencv.org/modules/core/doc/operations_on_arrays.html#add 吗?可能没有为所有类型定义重载的“+”运算符。
-
by raw_t_ubit8 我的意思是 Mat A 是由 A.create(sizes_height,sizes_width,CV_8UC1) 创建的,是的,我也尝试过添加,产生相同的结果。
-
如果您使用 CV_8UC1 创建它,它不可能包含您提到的值。
-
它在每一行包含值 100 200 和 250,这基本上相当于我发布的带有缩放因子的数字,如果 1/255,我用来查看结果的查看器只是除以那个因素。
-
您不能将 0.1(浮点/双精度类型)添加到整数类型。结果将始终转换为 uchar(或 raw_t_ubit8)。