我试图在图像中找到文本的边界框,目前正在使用这种方法:
// 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分,谁能在这两张卡上方找到文字.

我有一个单一的驾驶执照的下图,我想提取有关驾驶执照,名称,DOB等的信息.我的思考过程是找到一种逐行分组的方法,并裁剪出包含名称的单个矩形eng和ara的许可证等.但我悲惨地失败了.
import cv2
import os
import numpy as np
scan_dir = os.path.dirname(__file__)
image_dir = os.path.join(scan_dir, '../../images')
class Loader(object):
def __init__(self, filename, gray=True):
self.filename = filename
self.gray = gray
self.image = None
def _read(self, filename):
rgba = cv2.imread(os.path.join(image_dir, filename))
if rgba is None:
raise Exception("Image not found")
if self.gray:
gray = cv2.cvtColor(rgba, cv2.COLOR_BGR2GRAY)
return gray, rgba
def __call__(self):
return self._read(self.filename)
class ImageScaler(object):
def __call__(self, gray, rgba, scale_factor = 2):
img_small_gray = cv2.resize(gray, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_AREA)
img_small_rgba = cv2.resize(rgba, None, fx=scale_factor, …Run Code Online (Sandbox Code Playgroud) 我正在尝试开发一种可以用相机扫描Passport页面的扫描仪.
我想裁掉标记的部分.
我已经编写了使用OpenCV进行边缘检测的代码,它可以找到轮廓,然后近似最大的四边形.最后,它进行了4点透视转换,以获得图像的俯视图.边缘检测代码如下所示:
public static List<MatOfPoint> findContours(Mat src){
Mat img = src.clone();
src.release();
//find contours
double ratio = getScaleRatio(img.size());
int width = (int) (img.size().width / ratio);
int height = (int) (img.size().height / ratio);
Size newSize = new Size(width, height);
Mat resizedImg = new Mat(newSize, CvType.CV_8UC4);
Imgproc.resize(img, resizedImg, newSize);
Imgproc.medianBlur(resizedImg, resizedImg, 5);
Mat cannedImg = new Mat(newSize, CvType.CV_8UC1);
Imgproc.Canny(resizedImg, cannedImg, 70, 200, 3, true);
resizedImg.release();
Imgproc.threshold(cannedImg, cannedImg, 200, 255, Imgproc.THRESH_OTSU);
Mat dilatedImg = new Mat(newSize, CvType.CV_8UC1);
Mat morph = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, …Run Code Online (Sandbox Code Playgroud) 我想开发一个可以追踪和追踪道路的系统.最初,我只想处理定义明确的道路,之后可能会对没有明确定义的道路进行跟踪.
我面临的问题是我不知道从哪里开始.我是图像处理的新手,我希望能得到一些关于从哪里开始以及阅读有关该主题的书籍的指示.我是一个'经验丰富'的程序员(我可以很好地用C和Python编程,并且可以处理C++和Objective-C),所以代码本身并不是一个大问题 - 它只是"我从哪里开始?什么我读过吗?" 这让我很困惑.如果它对我有帮助,我也会学习另一种语言.
我会很感激有关这方面的任何指示/建议.