当前位置: 首页 > 知识库问答 >
问题:

使用scikit图像将图像缩减为文本内容

太叔凌龙
2023-03-14

这是我想从中取出文本的图像。

如何去除黑色边框并将图像缩小到50?

我采取的办法:

  1. 我尝试使用角点探测器(角点峰值和角点哈里斯),从左边选择前2个坐标,从右边选择最后2个坐标。
  2. 有了这4个坐标,我裁剪了图像,并在四面进一步减少了5个。

这肯定不是一个有效的方法。我也看了几段也。没能把它弄对。我使用scikit图像来解决这个问题。

共有1个答案

商开济
2023-03-14

使用角点可能不起作用,因为角点也可以以字符形式出现。

下面是我使用hough线尝试的内容,如下所述:

1) 首先腐蚀图像,以最小化线条和字符之间的间隙

2) 使用Hough直线检测算法检测和删除直线

3) 放大图像以获得清晰的字符

4)现在我们有字符和行分离,所以我们可以通过找到连通分支来删除行。

下面是Python中相同的代码实现:

img = cv2.imread('D:\Image\st1.png',0)
ret, thresh = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY_INV)

#dilate the image to reduce gap between characters and lines and get hough lines correctly
kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(thresh,kernel,iterations = 1)

#find canny edge image
canny = cv2.Canny(erosion,100,200)

minLineLength=img.shape[1]/4
lines = cv2.HoughLinesP(image=canny,rho=0.02,theta=np.pi/500, threshold=10,lines=np.array([]), minLineLength=minLineLength,maxLineGap=10)

a,b,c = lines.shape
# delete the lines
for i in range(a):
    cv2.line(erosion, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]), 0, 3, cv2.LINE_AA)

#erode the image 
kernel = np.ones((3,3),np.uint8)
erosion = cv2.dilate(erosion, kernel, iterations=1)

# find connected components
connectivity = 4
nb_components, output, stats, centroids = cv2.connectedComponentsWithStats(erosion, connectivity, cv2.CV_32S)
sizes = stats[1:, -1]; nb_components = nb_components - 1
min_size = 250 #threshhold value for lines length 
img2 = np.zeros((output.shape), np.uint8)
for i in range(0, nb_components):
    if sizes[i] >= min_size:
        img2[output == i + 1] = 255 #delete the line components

img = cv2.bitwise_not(img2)

输出图像:

 类似资料:
  • 问题内容: 我想将文本图像分成组成字符,也作为图像。例如,使用下面的示例,我最终得到14张图像。 我只会在一行上使用文本,因此y高度并不重要-我需要找到的是每个字母的开头和结尾,并裁剪到这些坐标。这样,我还可以避免出现“ i”,“ j”等问题。 我是图像处理的新手,我不确定该怎么做。某种形式的边缘检测?有没有办法确定连续的单色区域?任何帮助都很棒。 为了提高我的Python技能和对许多可用库的熟悉

  • 我的Wordpress站点显示所有的帖子,堆叠在文章中,使用行(Bootstrap 3)跨越index.php的整个宽度。 index.php-HTML php显示每篇文章中的文章(文章堆叠在一起,全宽,向下) 我有标题和类别显示在每一行正确。我希望每个帖子的帖子缩略图(我在functions.php中添加了它的用法)成为每一行的背景图像。填充整个空间(背景尺寸:封面) 基本上很大,100%宽

  • 问题内容: 我有一个RGB bufferedImage bImg。 我想将图像转换为灰度图像。 我已经尝试过此grayIm,但无法为该grayIm设置灰度值。 问题答案: 一种方法是转换色彩空间(性能不佳): 另一种方法是像您一样使用BufferedImage(更好的性能): 最后但并非最不重要的一点是,最佳性能是使用GrayFilter: 来源:http://www.codebeach.com/

  • 问题内容: 我正在使用以下代码将Image转换为byte []。 现在,当我测试我的代码时: 我得到非常奇怪的结果: 将图像转换为byte []后,其大小减小了1/4左右,当我将byte []转换回图像时,其大小也会改变。但是在所需位置成功创建了输出图像。放大500-600%后,我可以看到原始图像和新图像的质量略有不同。放大后,新图像几乎不模糊。 这是我正在测试的图像http://pbrd.co/

  • 问题内容: 我正在使用以下代码将Image转换为byte []。 现在,当我测试我的代码时: 我得到非常奇怪的结果: 将图像转换为byte []后,其大小减小了1/4左右,当我将byte []转换回图像时,其大小也会改变。但是在所需位置成功创建了输出图像。放大500-600%后,我可以看到原始图像和新图像的质量略有不同。放大后,新图像几乎不模糊。 这是我正在测试的图像http://pbrd.co/

  • 问题内容: 这是一个有趣的话题。基本上,我有一个包含一些文本的图像。如何从图像中提取文本? 我已经尝试了很多事情,但是我所做的一切都很繁琐,通常无法正常工作。我只是想知道是否有一个相当简单的方法来做到这一点。 我遇到了这个问题:http : //sourceforge.net/projects/javaocr/。我已经尝试了好几个小时,但是我无法将其从图像中转换为文本。 谢谢大家! 问题答案: 您

  • 问题内容: 我的Magento商店有大约3,000种产品。几乎所有这些产品都附有单个图像。 出于某种原因,即使我将小图像和缩略图图像设置为与导入CSV文件中的基本图像相同,也仅为每个产品设置了基本图像。这意味着当您搜索产品时,您会获得一个占位符- 但是进入产品页面后,您将获得正确的图像。可以通过进入产品管理页面并选择小图像和缩略图的框来轻松解决此问题。 问题是,使用3,000张图像,这将需要很长时

  • 我一直在计算图像的未压缩和压缩文件大小。这对我来说总是导致压缩图像比我预期的未压缩图像小。如果图像包含大量不同的颜色,则存储调色板会占用大量空间,还需要更多位来存储每个代码。然而,我的问题是,压缩方法是否可能导致比未压缩的RGB图像更大的文件。对于这种压缩方法仍然有用的、总共包含k种不同颜色的最小正方形RGB图像,其大小(像素)是多少?因此,我们想要找到,对于给定的k值,找到最小整数n,对于该整数