根据OpenCV.js docs 修改像素值,您可以使用 3 种方法:
at()
方法族ptr()
方法族尽管文档中该部分的标题说“访问和修改像素值”,但它提供了用于检索值但不用于修改它们的示例。问题是,虽然在 C++ 中,这段使用at
orptr
方法的代码有效:
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] 位置的像素值?
我已经成功地使用 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)
归档时间: |
|
查看次数: |
1327 次 |
最近记录: |