更改OpenCV.js中的像素值

时间:2019-05-02 10:09:34

标签: javascript opencv

根据OpenCV.js文档修改像素值,您可以使用3种方法:

  1. 直接数据操作
  2. at()方法家族
  3. ptr()方法家族

尽管文档中该部分的标题说“访问和修改像素值”,但它提供了一些示例,用于检索值而不是对其进行修改。问题在于,在C ++中,使用atptr方法的代码可以正常工作:

mat.at<type>(row, col) = value;

javascript中的等效项无效,并且给出了Invalid left hand side in assignment expression

mat.floatAt(row, col)) = value;

我可以通过以下方式使用直接数据处理方法使其工作:

mat.data[row * this.cols * this.channels() + col * this.channels()] = value;

但是此方法不适用于像素值,但不适用于像素可能跨越多个数组索引的底层数组数据结构,因此对于我的用例无效。

如何使用OpenCV.js修改CvMat中[row,col]位置的像素值?

1 个答案:

答案 0 :(得分:0)

我已经成功设置了图像(或使用ucharPtr的矩阵)的单个像素。

与其像这样设置:

img.ucharPtr(i, j) = 255

我这样设置:

img.ucharPtr(i, j)[0] = 255 

即使图像是黑白的并且只有一个通道

如果要设置所有4个像素值,可以执行以下操作:

src.ucharPtr(i, j)[0] = 255
src.ucharPtr(i, j)[1] = 255 
src.ucharPtr(i, j)[2] = 255 
src.ucharPtr(i, j)[3] = 0