【问题标题】:Convert image document to black and white with OpenCV使用 OpenCV 将图像文档转换为黑白
【发布时间】:2011-09-29 12:16:47
【问题描述】:

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

如果有任何帮助,我将不胜感激。

这是我使用的示例图像和结果:

【问题讨论】:

  • 顺便说一下,我刚才建议的链接是第一个 Google 结果:opencv black and white
  • 我尝试了那个解决方案,但结果并不好。我的图像有点模糊,因此结果可能很糟糕,但我不知道如何改善它。我用了 erode 但也没有成功。
  • @bialek:你能提供一些示例图片吗?
  • 只是为了搜索,现在有一个自适应阈值opencv.willowgarage.com/documentation/cpp/…

标签: c image opencv photo


【解决方案1】:

阈值图像用于不同目的。

如果您只想将其转换为黑白图像,请执行此操作。使用 openCV 2.2

cv::Mat image_name = cv::imread("fileName", 0);

第二个参数 0 表示将彩色图像读取为黑白图像。

如果你想保存为黑白图像文件。

编码

cv::Mat image_name = cv::imread("fileName", 0);
cv::imwrite(image_name, "bw_filename.jpg");

【讨论】:

  • 对不起,我忘了写,我在 iPhone 上使用 OpenCV 并使用 Objective-c,但我没有 imread 功能。
  • 这不是黑白,而是灰度图像。不好的答案
【解决方案2】:

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

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);

【讨论】:

  • 感谢您的回复。它好一点,但不是超级好。是否有可能只删除背景而不更改文本?恐怕我做不了太多,因为那张图片的分辨率只有 720x960 像素,而且质量不太好。
  • 你可以为此编写一个算法。迭代灰度图像的像素,将与背景颜色(或该特定颜色附近的像素)对应的像素替换为白色像素。
  • 如何找到背景颜色?我试过了: for (int i = 0; iimageData[i* img->宽度+j];总和 += 你;计数++; } } int gray = sum / count;但结果并不好。
【解决方案3】:

在这里使用自适应高斯阈值是一个好主意。这也将提高图像中文字的质量。 你可以通过简单地给出命令来做到这一点:

AdaptiveThreshold(src_Mat, dst_Mat, Max_value, Adaptive_Thresholding_Method, Thresholding_type, blocksize, C);

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多