我试图在图像中找到文本的边界框,目前正在使用这种方法:
// calculate the local variances of the grayscale image
Mat t_mean, t_mean_2;
Mat grayF;
outImg_gray.convertTo(grayF, CV_32F);
int winSize = 35;
blur(grayF, t_mean, cv::Size(winSize,winSize));
blur(grayF.mul(grayF), t_mean_2, cv::Size(winSize,winSize));
Mat varMat = t_mean_2 - t_mean.mul(t_mean);
varMat.convertTo(varMat, CV_8U);
// threshold the high variance regions
Mat varMatRegions = varMat > 100;
Run Code Online (Sandbox Code Playgroud)
给出这样的图像时:

然后,当我显示varMatRegions我得到这个图像:

正如你所看到的那样,它将左侧的文本块与卡片的标题结合起来,对于大多数卡片而言,这种方法效果很好,但在较繁忙的卡片上它可能会导致问题.
这些轮廓连接不好的原因是它使得轮廓的边界框几乎占据了整个卡片.
任何人都可以建议一种不同的方式来查找文本以确保正确检测文本吗?
200分,谁能在这两张卡上方找到文字.

我有两张图片,并想让它们之间的区别显而易见。我想为两个图像添加颜色,以便用户可以在一两秒钟内清楚地发现所有差异。
例如,这是两张图片,但有一些区别:
leftImage.jpg:
rightImage.jpg:
我当前使差异明显的方法是创建一个蒙版(两个图像之间的差异),将其涂成红色,然后将其添加到图像中。目的是用强烈的红色清楚地标记所有差异。这是我当前的代码:
import cv2
# load images
image1 = cv2.imread("leftImage.jpg")
image2 = cv2.imread("rightImage.jpg")
# compute difference
difference = cv2.subtract(image1, image2)
# color the mask red
Conv_hsv_Gray = cv2.cvtColor(difference, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(Conv_hsv_Gray, 0, 255,cv2.THRESH_BINARY_INV |cv2.THRESH_OTSU)
difference[mask != 255] = [0, 0, 255]
# add the red mask to the images to make the differences obvious
image1[mask != 255] = [0, 0, 255]
image2[mask != 255] = [0, 0, 255]
# store images
cv2.imwrite('diffOverImage1.png', image1)
cv2.imwrite('diffOverImage2.png', image1) …Run Code Online (Sandbox Code Playgroud) 我已经对该主题进行了一些研究,但是我认为我的问题与之前提出的问题有很大不同。
我的博士论文涉及对旧字典进行OCR,然后将结果自动转换为类似XML的数据库。我已经弄清楚了这部分。但是,我想通过显示用于每个条目/词条的扫描片段来丰富最终结果。由于字典将近9000页长,因此手动进行字典是不可能的。
这是随机页面的外观:http : //i.imgur.com/X2mPZr0.png
由于每个条目始终等于一个段落,因此我想找到一种方法将每个图像分割成带有文本(不需要OCR)的矩形作为单独的文件,就像这样(不绘制矩形):http : //i.imgur.com /CWtQD6Q.png
好消息是我扫描的形状和大小相同,并且页边距/文本对齐方式相似。每个段落也总是有一个标识。
不好的是,我主要是语言学家,而不是程序员。我的大部分经验是使用Ruby,XML和CSS。而且有些段落只有一行。
我知道有些方法可以做类似的事情:
但是它们需要我花费大量时间来学习(尤其是我对Python的了解为0),而且我不知道它们是否不仅允许文本检测,还允许段落检测。
对此问题的任何意见/建议将不胜感激,尤其是对新手而言。