我需要在另一个图像中剪切出文本形状的图像.我认为它最好显示在图像中.
这是一张猫的照片:

这是我要删除的文字:

生成的图像是这样的:

文本图像将始终为黑色并具有透明背景,并且生成的剪切图案也应具有透明背景.两个输入图像也将具有相同的大小.
前几天我正在参与线程图像/图形到一个形状,并通过Rectangle迭代添加到图像来做一个黑客尝试获取图像的轮廓Area.那很慢.
这个例子改为构建一个GeneralPath并Area从GP 创建.快多了.

左上角的图像是"源图像".右边的两个是处理轮廓的各个阶段.它们都有圆形边缘和三角形倾斜边缘的锯齿状边缘.
我希望获得一种能够消除或减少锯齿状的形状.
1234
1 **
2 **
3 ***
4 ***
5 ****
6 ****
Run Code Online (Sandbox Code Playgroud)
角落在:
1234
1 ****
2 ****
3 **
4 **
5 ****
6 ****
Run Code Online (Sandbox Code Playgroud)
角落在:
假设我们的路径具有显示的形状和列出的点,我想放下第一组的"内角"点,同时保留"内部角落的一对"(图像中的一对)第2位.
PathIterator并建立一个新的GeneralPath掉落奇异的内角 - 如果我能想出如何识别它们!).以下是要使用的代码:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
/* Gain …Run Code Online (Sandbox Code Playgroud) 对于大学,我们已经给出了一个任务,在给定图像的情况下,我们必须识别"数字",它们的颜色以及它们内部的"像素组"的数量.让我解释:

上面的图像有一个图形(在图像中可以有多个图形,但让我们暂时忘记它).
我们已经给出了一个能够拍摄图像并将它们转换为矩阵的类(每个元素是表示像素颜色的整数).
就是这样.我是用Java做的.
我做了什么
initialPixel从现在开始我会调用这个像素.initialPixel我提供的图像中的黑色像素位于图的左上角.我有目的地在那里做了一个尖锐的切口来说明它.但是我找到这样的背景颜色(白色)会遇到很多麻烦.这是我做的最接近的方法,适用于某些情况 - 但不适用于此图像:
initialPixel.听起来好像是个好主意 - 它确实有效,但它不适用于所提供的图像:在这种情况下它将返回黄色,因为initialPixel它远离图形的内容.假设我确实找到了图形的背景颜色(白色),我的下一个任务就是要意识到图中存在两个像素组.这个似乎更容易:
我需要的
是的,我的问题是关于如何找到图形的背景颜色(请记住它可以与整个图像的背景颜色相同 - 现在它是黄色的,但它也可以是白色的)基于我之前描述的内容.
我不需要任何代码 - 我只是在为这样的代码思考一个合适的算法.边界可能有如此奇怪的不规则线条的事实正在扼杀我.
或者甚至更好:我一直都做错了吗?也许我根本不应该如此关注这一点initialPixel.也许一种不同的初始方法会起作用?有关于此类主题的文档/示例吗?我意识到有很多关于"计算机视觉"等的研究,但我对这个特殊问题找不到多少.
一些代码
我的函数检索带有所有数字的向量:*注意:Figure只是一个包含一些值的类,如背景颜色和元素数量.
public Figure[] getFiguresFromImage(Image image) {
Figure[] tempFigures = new Figure[100];
int numberOfFigures = 0;
matrixOfImage = image.getMatrix();
int imageBackgroundColor = matrixOfImage[0][0];
int pixel = 0;
for (int y = …Run Code Online (Sandbox Code Playgroud) 我的问题很简单,解决方案肯定不是.我正在寻找一种方法来塑造一个JFrame,就像它将要显示的图像一样.通过形状我的意思是具有alpha!= 0的像素的形状.我已经找到了一个使用GeneralPath对象的工作示例,但它为约500*400的Image创建了~110000个"节点",因此启动JFrame耗时超过2分钟,这绝对不是理想的效果,启动应该在2秒以内.
谢谢你的时间.