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

标签 c image opencv photo

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

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

这是我使用的示例图像和结果: 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);

enter image description here

关于使用 OpenCV 将图像文档转换为黑白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6594941/

相关文章:

java - 如何制作可点击的图片?

ios - 调整图像大小但保留硬边

java - 如何在 intellij 子模块中包含 opencv (maven)

c - 数组问题

c++ - 更正 size_t : %zu or %Iu? 的 printf 格式说明符

c - 使用 c 的缓冲区溢出

javascript - 这不是应用程序(*)漏洞吗? (JavaScript 和 HTTP)

python - 我的立体声校准正确吗?为什么我的三角测量不起作用?

image-processing - 为什么使用 OpenCV 读取 AVI 视频时速度会加快?

我们可以区分变量和指针变量吗