位置: 编程技术 - 正文

【Rayeager PX2分享】OpenCV入门之线段检测

编辑:rootadmin
线段检测主要运用Hough变换,Hough变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。最基本的霍夫变换是从黑白图像中检测直线(线段)。在OpenCV编程中,实现线段检测主要使用cvHoughLines2函数。函数原型:CvSeq* cvHoughLines2( CvArr* image, void* line_storage, int method, double rho, double theta, int threshold, double param1=0, double param2=0);参数说明:第一个参数表示输入图像,必须为二&#;图像(黑白图)。第二个参数表示存储容器,可以传入CvMemStorage类型的指针。第三个参数表示变换变量,可以取下面的&#;: CV_HOUGH_STANDARD - 传统或标准 Hough 变换. 每一个线段由两个浮点数 (ρ, θ) 表示,其中 ρ 是线段与原点 (0,0) 之间的距离,θ 线段与 x-轴之间的夹角。 CV_HOUGH_PROBABILISTIC - 概率 Hough 变换(如果图像包含一些长的线性分割,则效率更高)。它返回线段分割而不是整个线段。每个分割用起点和终点来表示。 CV_HOUGH_MULTI_SCALE - 传统 Hough 变换的多尺度变种。线段的编码方式与 CV_HOUGH_STANDARD 的一致。第四个参数表示与象素相关单位的距离精度。第五个参数表示弧度测量的角度精度。第六个参数表示检测线段的最大条数,如果已经检测这么多条线段,函数返回。第七个参数与第三个参数有关,其意义如下: 对传统 Hough 变换,不使用(0). 对概率 Hough 变换,它是最小线段长度. 对多尺度 Hough 变换,它是距离精度 rho 的分母 (大致的距离精度是 rho 而精确的应该是 rho / param1 ).第八个参数与第三个参数有关,其意义如下: 对传统 Hough 变换,不使用 (0). 对概率 Hough 变换,这个参数表示在同一条线段上进行碎线段连接的最大间隔&#;(gap), 即当同一条线段上的两条碎线段之间的间隔小于param2时,将其合二为一。 对多尺度 Hough 变换,它是角度精度 theta 的分母 (大致的角度精度是 theta 而精确的角度应该是 theta / param2)。示例程序:hough.cpp #include <opencv2/core/core.hpp>#include <opencv2/opencv.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace std;int main (int argc, char **argv) { const char *pstrWindowsSrcTitle = "initial";const char *pstrWindowsLineName = "hough";IplImage *pSrcImage = cvLoadImage("hough.jpg", CV_LOAD_IMAGE_UNCHANGED);IplImage *pGrayImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1); cvCvtColor(pSrcImage, pGrayImage, CV_BGR2GRAY);IplImage *pCannyImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 1); cvCanny(pGrayImage, pCannyImage, , );CvMemStorage *pcvMStorage = cvCreateMemStorage(); double fRho = 1; double fTheta = CV_PI / ; int nMaxLineNumber = ;//最多检测条直线double fMinLineLen = ;//最小线段长度double fMinLineGap = ;//最小线段间隔CvSeq *pcvSeqLines = cvHoughLines2(pCannyImage, pcvMStorage, CV_HOUGH_PROBABILISTIC, fRho, fTheta, nMaxLineNumber, fMinLineLen, fMinLineGap);IplImage *pColorImage = cvCreateImage(cvGetSize(pSrcImage), IPL_DEPTH_8U, 3);cvCvtColor(pCannyImage, pColorImage, CV_GRAY2BGR);int i;for(i = 0; i < pcvSeqLines->total; i&#;&#;) { CvPoint* line = (CvPoint*)cvGetSeqElem(pcvSeqLines, i); cvLine(pColorImage, line[0], line[1], CV_RGB(,0,0), 2); }cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_AUTOSIZE); cvShowImage(pstrWindowsSrcTitle, pSrcImage); cvNamedWindow(pstrWindowsLineName, CV_WINDOW_AUTOSIZE); cvShowImage(pstrWindowsLineName, pColorImage); cvWaitKey(0); cvReleaseMemStorage(&pcvMStorage); cvDestroyWindow(pstrWindowsSrcTitle); cvDestroyWindow(pstrWindowsLineName); cvReleaseImage(&pSrcImage); cvReleaseImage(&pGrayImage); cvReleaseImage(&pCannyImage); cvReleaseImage(&pColorImage); return 0; }makefile: INCLUDE = $(shell pkg-config --cflags opencv) LIBS = $(shell pkg-config --libs opencv) SOURCES = hough.cpp # 目标文件 OBJECTS = $(SOURCES:.cpp=.o) # 可执行文件 TARGET = hough $(TARGET):$(OBJECTS) g&#;&#; -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS) $(OBJECTS):$(SOURCES) g&#;&#; -c $(SOURCES) clean: rm $(OBJECTS) $(TARGET) # 编译规则 $@代表目标文件 $< 代表第一个依赖文件 %.o:%.cpp g&#;&#; -I $(INCLUDE) -o $@ -c $<所在文件夹上已有hough.jpg图片,make后执行./hough hough.jpg 【Rayeager PX2分享】OpenCV入门之线段检测感谢fjjjnk的分享更多请参考:

推荐整理分享【Rayeager PX2分享】OpenCV入门之线段检测,希望有所帮助,仅作参考,欢迎阅读内容。

【Rayeager PX2分享】OpenCV入门之线段检测

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Android开发资源文件用法小结 本文用来记录在Android开发中经常用到的一些用法arrays.xml定义数组例:resources!--shareitems--string-arrayname="app_share_items"item新浪微博/itemitem腾讯微博/item/string-

Android 官方文档之Activity和Task 原文地址什么知识,看官方的API是最好的了。但是鉴于很多人英语不好,便转载了这篇文章,翻译的非常好了。搞不懂Activity声明周期,和程序框架设计

Android常用代码之APK root权限静默安装

标签: 【Rayeager PX2分享】OpenCV入门之线段检测

本文链接地址:https://www.jiuchutong.com/biancheng/386021.html 转载请保留说明!

上一篇:如何使用adb查看各个文件属性详细信息(adb查看ip地址)

下一篇:Android开发资源文件用法小结(android完整开源项目)

  • 小规模修理修配的税率是多少
  • 异地提供建筑服务
  • 利息收入为什么记贷方
  • 城建税属于什么税种
  • 企业增资认缴是什么意思
  • 企业发生劳动仲裁还可以进行融资吗
  • 先进技术企业的企业所得税税率
  • 公益机构可以收费吗
  • 当月进项发票忘了怎么办
  • 第三方用人单位应承担哪些责任
  • 新成立公司注资流程
  • 金税系统年度维护费发票抵扣需要认证吗?
  • 企业出售房屋交什么税
  • 个体户上季度未申报能补报吗
  • 不能抵扣的进项税怎么做账
  • 烟草消费税计算方法
  • 税控盘月度统计表怎么打印
  • 销售方收到红字信息表
  • 比赛奖金支出计入什么科目
  • 企业增资需要缴纳什么税
  • 香港企业股东分红税
  • 怎样将u盘制作成电脑系统启动盘?
  • 股票属于以下哪一类金融工具
  • 如何加快身体的新陈代谢
  • player windows
  • 人力资源规划系统包括哪些主要内容
  • 商品先入库后得发票如何做账
  • react组件如何设置dom
  • 美国大峡谷在哪儿
  • 日出时的麦克拱岩,俄勒冈南海岸 (© Dennis Frates/Alamy)
  • 企业资产负债表有何作用
  • 支付劳务公司的劳务费计入应付账款还是其他应付款
  • 企业所得税必须要季度缴纳吗
  • h5支付功能
  • php web socket
  • 税前扣除 发票
  • 受托支付转给个人账户需要交税吗为什么
  • 使用命令方式安装程序
  • 在境外提供的广播影视节目(作品)的播映服务征收增值税
  • 家禽养殖企业
  • 上月未结账本月是否能记账
  • 火车票可以抵扣进项税
  • 小规模企业其他增值税发票不含税销售额是灰色的
  • 一般纳税人适用什么会计准则
  • 购买的电子承兑公司怎么平账做收据
  • 建筑企业预缴税
  • 已认证发票红冲全流程操作
  • 开具红字发票后所冲销的销项税应该怎么处理?
  • 税款返点如何做账务处理
  • 承兑汇票贴现利息会计分录
  • 企业固定资产内部控制风险防范体系的构建原则
  • 工业企业应付账款怎么算
  • sql server 数据库介绍
  • MySQL 5.5.x my.cnf参数配置优化详解
  • mysql57安装过程怎样选安装目录
  • mac安装软件提示无法检查更新
  • awk统计nginx日志
  • Linux系统配置网关
  • SymSPort.exe - SymSPort是什么进程 有何作用
  • 进程mmc.exe
  • WNxp下让所有用户桌面显示系统默认图标的方法
  • unix和linux是使用较为广泛的多用户交互
  • win1021h2正式版
  • 系统解决问题的方法
  • 双硬盘 win10
  • pcc是什么文件
  • 电脑系统win8
  • win7系统连不了网络
  • node.js安装教程详细
  • CocoStudio textfiled 文本点击区域按背景拉伸
  • ubuntu列出用户
  • android list
  • 跟踪快件
  • json python 字段读取
  • 怎么用发票号码查询商品
  • 管道运输是什么意思?运输的是什么
  • 深圳沙井社保局在哪个位置
  • 自然资源税税率
  • 国家税务局宝鸡市税务局
  • 上海各区财政收入
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设