根据OpenCV.js文档修改像素值,您可以使用3种方法:
at()
方法家族ptr()
方法家族尽管文档中该部分的标题说“访问和修改像素值”,但它提供了一些示例,用于检索值而不是对其进行修改。问题在于,在C ++中,使用at
或ptr
方法的代码可以正常工作:
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]位置的像素值?
答案 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