Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除图像卡的非文本部分_Java_Android_C++ - Fatal编程技术网

Java 如何删除图像卡的非文本部分

Java 如何删除图像卡的非文本部分,java,android,c++,Java,Android,C++,我正在使用android ocr(tesseract ocr)的示例代码制作一个从图像卡中提取数字的应用程序。 我已经按照卡片字体对数据进行了培训。如果卡片具有唯一背景,则检测少量卡片,但如果卡片具有多个背景(附加样本),则无法识别号码。 即使卡号与背景稍有重叠,也无法识别 我尝试使用以下步骤删除背景: 使用以下方法平滑裁剪的图像: GaussianBlur(裁剪,裁剪,大小(3,3),0,0,边框_默认值); CVT颜色(裁剪、裁剪、CV_rgb2灰色) sobel使用的边缘检测: 作物=So

我正在使用android ocr(tesseract ocr)的示例代码制作一个从图像卡中提取数字的应用程序。 我已经按照卡片字体对数据进行了培训。如果卡片具有唯一背景,则检测少量卡片,但如果卡片具有多个背景(附加样本),则无法识别号码。 即使卡号与背景稍有重叠,也无法识别

我尝试使用以下步骤删除背景:

  • 使用以下方法平滑裁剪的图像:

    GaussianBlur(裁剪,裁剪,大小(3,3),0,0,边框_默认值); CVT颜色(裁剪、裁剪、CV_rgb2灰色)

  • sobel使用的边缘检测:

    作物=SobelEdgeDetect(作物)

  • 转换为按位非cv:

    按位_not(裁剪,裁剪)

  • 使用adaptiveThreshold移除阴影类型的对象:

    自适应阈值(作物,作物,255,变异系数自适应阈值平均值,变异系数阈值二进制值,75,10)

  • 在使用这些步骤之后,我得到了一张图片(附栏Process`png,citi1-Process.png,citi Process.png),图片以粗体显示,数字内有空格。在这种情况下,ocr应用程序无法识别号码。 我不知道怎样才能用粗体字填写这些数字

    现在对我来说最大的挑战是在不干扰任何图像卡的文本部分的情况下删除任何图像卡的背景。因此,请建议我如何克服上述所有问题具体如何删除图像的背景` 我附上了一些样品和输出数据供您参考

    谢谢和问候
    Anil

    附件脱落。我无法上载图像。我收到错误信息“你需要至少10个声誉才能发布图像。”