我正在使用神经网络进行字符识别项目。我的第一个目标是从我发现任何字母的图像中读取那些像素。我的意思是,如果图像 A、B 和 C 中随机出现三个字母,我将如何读取 A、B 和 C 的像素值并将它们存储在矩阵中?
问问题
2156 次
3 回答
0
使用 Java 时,可以先将图像加载为 BufferedImage:
BufferedImage image = ImageIO.read(imageUrl);
然后您可以通过以下方式获取单个像素的 RGB 值:
image.getRGB(x, y);
您还可以使用 Color 对象将 RGB 整数值解析为单独的颜色代码。
Color color = new Color(image.getRGB(x,y));
int red = color.getRed();
int green = color.getGreen();
int blue = color.getBlue();
从这一点开始,您几乎可以做任何您想做的事情。我过去也做过同样的事情。我的建议是,您不应该使用所有颜色来使搜索空间过大。黑色和白色在开始时也可以。
于 2012-04-08T09:50:25.757 回答
0
问题不是很清楚。如果您的意思是您有 A.png、B.png 等图像文件并且您想要矩阵中的像素值,您可以在 matlab 中创建一个 RBG 矩阵
image = imread('A.png');
这将为您提供 RGB 值的 width-height-3 矩阵。
感谢您提供图片链接,让我们再试一次!:-)
因此,假设您不想手动说出每个字符的位置,我们将不得不自动找到它们。为此,让我们转换为黑白,然后使用bwconncomp查找每个字母的像素。
image = imread('A.png');
ibw = im2bw(image);
C = bwconncomp(image);
boxes = regionprops(C, 'BoundingBox');
letters = cell{26};
for i=1:26
%get left, top, width, height from boxes(i).BoundingBox
%I'm not on matlab at the moment, so I don't know exactly how to
%but it should be quite easy.
letters{i} = image(left:left+width, top:top+height, :);
end
找到连接的组件后,我们使用regionprops获取它们的边界框,并将每个边界框放在单独的图像中。
于 2012-04-08T09:43:04.340 回答
0
你可以做:
imageA=imread('imageA.jpg');
pixel1=imageA(y,x,:);
于 2012-04-08T09:43:56.640 回答