我有一个cv::Mat
对象,
cv::Mat _a ...
...和一个
cv::Scalar
对象,cv::Scalar _b ...
将
_b
的值设置为_a
中的一个像素(在位置(x,y)中)的正确(最佳)方法是什么?请注意,对象
_a
可以具有1、2、3、4个通道,但是该代码在所有情况下均适用,即:_a
具有1个通道时,应在各自的位置_b
的第一个元素_a
具有2个通道时,_b
的第一个元素应分配给第一个通道,而_b的第二个元素应分配给第二个通道,两者都在各自的位置最佳答案
cv::Mat
具有重载的 operator=
,它需要一个cv::Scalar
。这具有您想要的确切行为。不幸的是,没有直接方法将Scalar
分配给像素值。但是,您可以创建一个感兴趣的区域,在坐标(x, y)
处包含单个像素,并将Scalar
分配给该像素:
cv::Mat a; // contains data
cv::Scalar b(1,2,3,4);
cv::Range xr(x, x + 1);
cv::Range yr(y, y + 1);
a(xr, yr) = b;
关于c++ - 将cv::Scalar的值设置为opencv中cv::Mat中的像素的正确(最佳)方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24170557/