java - 更改特定像素周围 24 个像素的最佳方法是什么?

标签 java opencv

我目前正在编写一段代码,该代码可以更改图像某些像素的颜色。它通过以下方法执行此操作:

        inputImage.put(25, 25, colour);

这将选择 x 坐标 25、y 坐标 25 处的像素,然后将其更改为指定的颜色

我现在必须将此像素及其周围的 24 个像素更改为新颜色,这意味着有一个 5x5 的空间需要重新着色。

我可以想到几种方法来做到这一点。一种方法是迭代图像的所有像素,检查它们的 x 和 y 坐标是否在 23 到 27 之间,如果在,则重新着色。另一种是单独指定每个需要更改的像素。但这两种想法似乎都有些站不住脚。谁能推荐一种更优雅的方法来做到这一点?

最佳答案

不要循环。

相反,设置完整的 5x5 ROI(在 x,y 处):

int x=15,y=7;
in.submat(y-3,y+2, x-3,x+2).setTo(colour);

关于java - 更改特定像素周围 24 个像素的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28280970/

相关文章:

java - 通过 getter/setter 将数据传递给其他类

opencv - cvCalcOpticalFlowLK 的头文件

java - 在 JNI 中修改的 Mat 不反射(reflect)在 Java 中的更改

python - 使用 OpenCV python 查看原始 10 位 USB 相机

java - 构建Antlr时,Visual Studio在未命名文件的情况下给出错误 "cannot find the file specified"

java - 无法连接到tomcat网络服务

python - Ubuntu : error using cv2. imshow() 与 pyplot.plot()

opencv - 需要有关如何在 lisp 中打印矩阵的建议

java - NumbeFormatException 问题

java - 当所有任务完成时,执行器服务如何发出信号?