使用 JavaCV 从图像中删除 ROI

Posted

技术标签:

【中文标题】使用 JavaCV 从图像中删除 ROI【英文标题】:Removing ROI from image using JavaCV 【发布时间】:2014-05-10 14:26:08 【问题描述】:

我正在学习JavaCV,想根据颜色动态提取部分图像。

作为标识,我用颜色勾勒出我需要提取的区域。无论如何我可以根据颜色轮廓提取投资回报率。任何帮助表示赞赏。

这里是Sample Image

【问题讨论】:

只是好奇,你为什么使用 javacv,而不是 opencv 的内置 java 包装器? 嗯,实现是我更关心的。不管是它的 javacv 还是 opencv 的 java wappers。 【参考方案1】:

这很简单。由于您的图形有 4 个角,因此您应该按照以下步骤操作。

1.确定图像的方向并将点按特定顺序存储在 MatofPoint2f 中。 (顺时针或逆时针 - 为此您可以使用 Math.atan2(p1(y)-centerpoint(y),p1(x)-centerpoint(x)) 然后根据等式的结果对点进行排序。找到通过找到所有 xcoords 和 y coords 的平均值或您喜欢的任何方法来获得中心点)。

2.创建一个 MatofPoint2f,其中包含您想要裁剪图像的结果图像大小的角坐标。

3.使用 Imgproc.getPerspectiveTransform() 进行裁剪。

4.最后使用Imgproc.warpPerspective()得到想要的输出。

为了创建 ROI 的边界,最好的方法是使用某些特定范围对图像进行阈值处理,以便仅提取所需的光谱部分。

【讨论】:

您能否展示一些示例代码。我只是opencv的初学者。 您想要代码转换图像还是识别轮廓?识别轮廓是您必须自己弄清楚的事情。尝试将其转换为灰度并识别您要选择的像素的值并将其余像素更改为黑色(0)。转换功能在此链接***.com/questions/21571761/…

以上是关于使用 JavaCV 从图像中删除 ROI的主要内容,如果未能解决你的问题,请参考以下文章

Tesseract 输出从非常清晰的图像中更改、添加和删除数字

labview 怎么删除ROI范围内的图像,例如删除图片中的白点?

如何使用 Open CV 3 python 3 用鼠标从大图像中裁剪 ROI

opencv中使用ROI获取感兴趣区域时,如何获取一幅图像中相应的坐标,比如:

检查图像是不是有效(损坏)javaCV

使用ImageJ从多个ROI获取ImagePlus对象