在 OpenCV.js 中更改像素值

Dav*_*las 0 javascript opencv

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

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

尽管文档中该部分的标题说“访问和修改像素值”,但它提供了用于检索值但不用于修改它们的示例。问题是,虽然在 C++ 中,这段使用atorptr方法的代码有效:

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] 位置的像素值?

hms*_*dia 6

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

而不是这样设置:

img.ucharPtr(i, j) = 255
Run Code Online (Sandbox Code Playgroud)

我是这样设置的:

img.ucharPtr(i, j)[0] = 255 
Run Code Online (Sandbox Code Playgroud)

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

如果要设置所有 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 
Run Code Online (Sandbox Code Playgroud)