gpt4 book ai didi

java - 如何使用java从图片中识别并裁剪矩形

转载 作者:行者123 更新时间:2023-12-01 12:54:37 33 4
gpt4 key购买 nike

我对图像处理有点陌生。我正在做的是识别给定图像的矩形形状(不重叠),并通过裁剪它们来创建单独的图像。所以输出的图像应该是没有边框的。我尝试了一些例子,但没有一个成功。仅供引用:这些水平矩形在白色背景下带有黑色边框。里面有一些符号。

有人有线索或类似的例子吗?问候帮助

最佳答案

这是伪 C 代码,但我的想法就在那里。

 主要结构

struct data {
float pixelsNb;
int currentX;
int currentY;
}

主循环

void mainLoop(){
void **imgData = getPixelsFromImage("toto.png");
struct dataRight, dataDown;
loopRight(&dataRight, imgData);
loopDown(&dataDown, imgData);
// now you data right struct contains the number of
//following black pixels to the right
// and you data down, same for the down side.
if (dataRight->pixelNb == dataDown->pixelNb) // not really, should be in %
printf("There's a square !");
}

void loopRight(struct data *dataCurrent, void **imgData){
if (imgData[dataCurrent->currentY][dataCurrent->currentX] == color(0x0)){
dataCurrent->pixelNb++;
dataCurrent->currentX++;
loopRight(dataCurrent, imgData);
}
}
void loopDown(struct data *dataCurrent, void **imgData){
if (imgData[dataCurrent->currentY][dataCurrent->currentX] == color(0x0)){
dataCurrent->pixelNb++;
dataCurrent->currentY++;
loopDown(dataCurrent, imgData);
}
}
}

这确实不准确。不要尝试复制并过去,它会失败。但你有这个想法。另请注意,我只检查上方的线路和左侧的林德

XXXXXXXX
X o
X o
X o
X o
Xooooooo

X 被选中,而不是 o

这里的算法只是检查左侧和顶部的 X 数量是否相同。如果是这样的话,你就有了一个正方形。当然,如果你想找到一个矩形,你必须检查下边和右边。那么,它将是:如果左侧+下侧和顶部+右侧的数量相同,那么我们就有一个矩形。

这种算法应该可以解决问题。

关于java - 如何使用java从图片中识别并裁剪矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23993150/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com