将整数添加到数组值而不必调用它的最安全的方法?

时间:2018-01-21 15:09:22

标签: c++ arrays opencv

将整数添加到数组值而不必调用数组值的最安全的方法是什么?在这种情况下,我宁愿不调用数组值,因为数组在嵌套循环内,循环本身可以重复数千次。

例如dots [1] =我想用3添加这个数组的值。这是我的示例代码:

dummy2()

有可能吗?有什么建议怎么办?感谢。

1 个答案:

答案 0 :(得分:0)

这种最简单的方法是使用cv::add,它会使+类的Mat运算符重载:

// Create a Mat of all 0's
cv::Mat dots = cv::Mat(5, 4, CV_8UC3, cv::Scalar(0,0,0));
std::cout << "dots:\n" << dots << std::endl;

// Add 0 to the B channel, 3 to the G channel, and 5 to R
cv::Mat newdots = dots + cv::Scalar(0, 3, 5);
std::cout << "newdots:\n" << newdots << std::endl;

结果:

dots:
[  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0;
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0;
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0;
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0;
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0]
newdots:
[  0,   3,   5,   0,   3,   5,   0,   3,   5,   0,   3,   5;
   0,   3,   5,   0,   3,   5,   0,   3,   5,   0,   3,   5;
   0,   3,   5,   0,   3,   5,   0,   3,   5,   0,   3,   5;
   0,   3,   5,   0,   3,   5,   0,   3,   5,   0,   3,   5;
   0,   3,   5,   0,   3,   5,   0,   3,   5,   0,   3,   5]

请注意,如果您只想修改原始dots += Scalar(0,3,5)Mat也会有效。