OpenCV将考试卷中的直线提取出来并标注直线
一、概述
案例:识别考试卷中的填空的直线,并用红色线描述出来
实现步骤:
1.载入图像
2.转灰度图像
3.图像二值化
4.使用形态学开操作去除文本部分,只保留直线
5.使用形态学膨胀操作使保留的直线黏连
6.使用使用霍夫直线检测找到图中的直线
7.根据直线坐标绘制直线到原图上
8.输出最终图片
二、代码示例
//【1】载入原图 Mat src = imread(filePath); if(src.empty()){ qDebug()<<"图片为空"; return; } imshow("src",src); //【2】图像灰度化 Mat gray; cvtColor(src,gray,COLOR_BGR2GRAY); imshow("gray",gray); //【3】图像二值化 threshold(gray,gray,0,255,THRESH_BINARY_INV|THRESH_OTSU); imshow("threshold",gray); //【4】使用开操作消除图中文字,只保留直线 Mat kernel = getStructuringElement(MORPH_RECT,Size(50,1),Point(-1,-1)); morphologyEx(gray,gray,MORPH_OPEN,kernel,Point(-1,-1),1); imshow("morphologyEx_open",gray); //【5】膨胀操作 kernel = getStructuringElement(MORPH_RECT,Size(3,3),Point(-1,-1)); dilate(gray,gray,kernel); imshow("dilate",gray); //【6】使用霍夫直线检测直线坐标 vector<Vec4f> lines; HoughLinesP(gray,lines,1,CV_PI/180,10,30,1); //【7】根据直线坐标绘制直线 for(size_t i=0;i<lines.size();i++){ Vec4f l = lines[i]; line(src,Point(l[0],l[1]),Point(l[2],l[3]),Scalar(0,0,255),3,LINE_4); } //【8】显示最终图像 imshow("resultImage",src);
三、图片演示
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~