opencv实践项目-识别图片中的字符

1. 流程

• 读取图像
• 灰度图像
• 进行膨胀和腐蚀以消除图像中不需要的噪声。
• 去除噪点后写图像。
• 应用阈值以获取唯一的黑白图片。
• 写入相同的图像以进行进一步的识别过程。
• 使用Tesseract进行字符识别。

2. 代码实现

int main()
{
	char* path = "E:\\code\\Yolov5_Tensorrt_Win10-master\\pictures\\2.png";
	Mat src = imread(path);
	if (src.empty()) {
		return -1;
	}
	cv::Mat gray;
	cv::cvtColor(src, gray, COLOR_BGR2GRAY);
	cv::Mat kernel = cv::getStructuringElement(MORPH_RECT, Size(1, 1));
	cv::dilate(gray, gray, kernel, cv::Point2d(-1, -1), 20);
	cv::erode(gray, gray, kernel, cv::Point2d(-1, -1), 20);
	cv::adaptiveThreshold(gray, gray, 300, cv::ADAPTIVE_THRESH_GAUSSIAN_C, cv::THRESH_BINARY, 31, 2);
	cv::imshow("gray", gray);
	cv::waitKey(0);
	cv::imwrite("threshold.tiff", gray);
	
	char* outText;

	tesseract::TessBaseAPI* api = new tesseract::TessBaseAPI();
	// Initialize tesseract-ocr with English, without specifying tessdata path
	char* config = "--oem 1";
	if (api->Init("E:\\code\\Yolov5_Tensorrt_Win10-master\\build\\3rdparty\\tesseract-3.05.01", "eng", tesseract::OcrEngineMode::OEM_DEFAULT)) {
		fprintf(stderr, "Could not initialize tesseract.\n");
		exit(1);
	}

	 Open input image with leptonica library
	Pix* img_pix = pixRead("threshold.tiff");
	api->SetImage(img_pix);
	// Get OCR result
	outText = api->GetUTF8Text();
	printf("OCR output:\n%s", outText);

	// Destroy used object and release memory
	api->End();
	delete api;
	delete[] outText;
	pixDestroy(&img_pix);

	return 0;
}

3. 识别效果

输入图
在这里插入图片描述
目前来说识别效果不太好,还需进行调整
参考:Python视觉实战项目71讲(更新).pdf 将python代码修改c++

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值