使用 OpenCV 将图像文档转换为黑白

2024-03-27

我是 OpenCV 和图像处理的新手,我不知道如何解决我的问题。 我有一张用 iPhone 制作的文档照片,我想将该文档转换为黑白。我尝试使用阈值,但文本不太好(有点模糊且难以阅读)。我希望文本看起来与原始图像相同,只有黑色,背景为白色。我能做些什么? 附:当我对文档的一部分进行拍照时,文本很大,结果还可以。

我将不胜感激任何帮助。

Here are the example image I use and the result: enter image description here enter image description here


我的尝试,也许比你的更具可读性:

IplImage * pRGBImg  = 0;
pRGBImg = cvLoadImage(input_file.c_str(), CV_LOAD_IMAGE_UNCHANGED);
if(!pRGBImg)
{   
    std::cout << "ERROR: Failed to load input image" << std::endl;
    return -1; 
}   

// Allocate the grayscale image
IplImage * pGrayImg = 0;
pGrayImg = cvCreateImage(cvSize(pRGBImg->width, pRGBImg->height), pRGBImg->depth, 1); 

// Convert it to grayscale
cvCvtColor(pRGBImg, pGrayImg, CV_RGB2GRAY);

// Dilate
cvDilate(pGrayImg, pGrayImg, 0, 0.2);

cvThreshold(pGrayImg, pGrayImg, 30, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
cvSmooth(pGrayImg, pGrayImg, CV_BLUR, 2, 2);

cvSaveImage("out.png", pGrayImg);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OpenCV 将图像文档转换为黑白 的相关文章

随机推荐

  • 将 ldapjs 与 Bluebird Promise 结合使用

    我在这里发布了类似的内容 使用带有 Promise 的 ldapjs https stackoverflow com questions 30682597 use ldapjs with promise 不幸的是 它仍然没有解决 这次我尝试
  • 查找临时表的列名[重复]

    这个问题在这里已经有答案了 我需要找到列名 of 临时表 如果它是物理表那么我们可以使用sys columns or Information schema columns系统视图来查找列名称 同样 有没有办法找到临时表中存在的列名 SELE
  • 寻找一种简单、简约的方式在云端存储小数据包

    我正在寻找一个非常简单且免费的小数据包云存储 基本上 我想编写一个 Greasemonkey 脚本 用户可以在具有共享数据集的多台计算机上运行该脚本 数据主要只是一个数字 每个用户八个字节就足够了 这一切都归结为以下要求 易于开发 这是一个
  • MATLAB 支持嵌套变量作用域吗?

    MATLAB 可以定义像以下类伪 C 代码那样的变量吗 int a 0 int b c int a 42 b a c a 我们可以使用嵌套函数来 模拟 这一点 我们可以不使用函数来做到这一点吗 我问这个问题是因为我想将一些 C 代码转换为
  • 如何在 MPAndroidChart 中从右向左绘制数据?

    我最近更新了MPAndroid图表 https github com PhilJay MPAndroidChart从1 7 4到2 0 9的库 我忘记了我做了什么自定义折线图以使数据从右到左显示 有人知道吗 我想知道是否有一种方法可以调用来
  • 访客模式示例

    public class Song public string Genre get protected set public string Name get protected set public string Band get prot
  • GUI 被 uibackgroundmodes= voip, audio 困住

    我有基于选项卡栏的应用程序 当我放入 plist UIBackgroundModes 时 我的应用程序应该支持 voip GUI 不会加载 它在启动屏幕上很糟糕 并且不会加载第一个选项卡视图 当我从 info plist 中删除 UIBac
  • UIImage 减少字节大小

    我正在使用以下代码来调整图像大小 一切正常且符合预期 以正确的方式调整 UIImage 的大小 http vocaro com trevor blog 2009 10 12 resize a uiimage the right way 我使
  • 具有 ArrayList 成员变量的不可变对象 - 为什么可以更改该变量?

    我有一个包含各种成员变量的类 有一个构造函数 有 getter 方法 但没有 setter 方法 事实上 这个对象应该是不可变的 public class Example private ArrayList
  • 如何让matplotlib显示所有x坐标?

    例如在下面的代码中 import numpy as np import matplotlib pyplot as plt N 10 x 1 2 3 4 5 6 7 8 9 10 y np random rand N plt scatter
  • Android动态资源加载

    我正在尝试找到一种方法来打开名称仅在运行时确定的资源 更具体地说 我想要一个引用应用程序 apk 中的一堆其他 XML 文件的 XML 为了便于解释 我们假设主要的 XML 是main xml其他 XML 是file1 xml file2
  • 如何在 CSSResource 中使用非标准 CSS 选择器

    我正在尝试在 webkit 中使用滚动条的样式 CSS 选择器如下所示 webkit scrollbar corner webkit scrollbar track piece disabled 等等 当我在 ClientBundle 中使
  • 如何在 Ubuntu 上将 R 版本 3.2.2 降级到版本 3.1.1

    我使用 apt get 安装了它 现在显示 3 2 2 这是一个有问题的版本 如何降级到 3 1 1 Update install packages c batch bitops boot caTools data table doMC d
  • 使用MediaCodec和MediaExtractor对视频进行解码和编码

    我需要将视频解码为一系列位图 以便我能够修改它们 然后将它们压缩回 android 中的视频文件 我计划通过使用来管理这个getFrameAtTime并将其保存到图像序列中 然后我可以修改序列中的图像并将其编码回电影 但我对此有两个问题 首
  • Spark SQL 和时区 - 如何将 unix 时间戳转换为本地化时间戳

    我需要从 Spark DataFrame 将 epoch unix 时间戳列 例如 1509102527 GMT 星期五 2017 年 10 月 27 日 11 08 47 转换为本地化时间戳 以便获取特定时区的本地小时 是否有 Spark
  • Unix 上具有多个读取器的命名管道 (FIFO)

    我有两个程序 Writer 和 Reader 我有一个从写入器到读取器的 FIFO 因此当我向写入器中的标准输入写入内容时 它会从读取器打印到标准输出 我尝试在打开两个 Reader 的情况下执行此操作 并且仅从两个 Reader 程序之一
  • 更改通知标题的颜色 (Android)

    这是我的代码 一切正常 val builder NotificationCompat Builder this NOTI ID setSmallIcon R drawable ic stat name setContentTitle My
  • 双击标题栏时如何知道窗口是否最小化?

    This image is from SystemPreferences gt Appearance 我想知道如何以编程方式获取该值 我问这个问题是因为我正在绘制一个带有自定义标题栏的窗口 并且我希望它 在行为上 尽可能类似于普通 非自定义
  • 如何进行网站容量规划? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚读完书容量规划的艺术 https rads stackoverflow com amzn click com 0596518579 顺便说一句 我
  • 使用 OpenCV 将图像文档转换为黑白

    我是 OpenCV 和图像处理的新手 我不知道如何解决我的问题 我有一张用 iPhone 制作的文档照片 我想将该文档转换为黑白 我尝试使用阈值 但文本不太好 有点模糊且难以阅读 我希望文本看起来与原始图像相同 只有黑色 背景为白色 我能做