基于opencv的裂纹纹检测系统c源代码内容摘要:
ist_height / max_val)。 //要绘制的高度 rectangle(hist_img, Point(i*scale, hist_height 1), Point((i + 1)*scale 1, hist_height intensity), CV_RGB(255, 255, 255))。 } dstImg = hist_img。 } int CrackDetection::FilterContours(Mat amp。 imgSrc, Mat amp。 imgDst, bool isSpecify = true, int numContours = 100, double ratioThreshold = 2) { Mat imgTmp = Mat::zeros((), CV_8UC1)。 vectorvectorPoint contoursToKeep。 vectorvectorPoint contoursAll。 本文中代码为作者参考网络相关资料 基础上 的 开发成果 , 仅供参考学习 ,如有其他机器视觉领域算法和软件定制需要, 请联系作者 Email: vectorVec4i hierarchy。 /// 寻找轮廓 findContours(imgSrc, contoursAll, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_TC89_KCOS, Point(0, 0))。 if (() = 0) { return 0。 } double thresholdPARatio = ratioThreshold。 double thresholdArea = 0, thresholdSpan = 0。 sort((), (), ContoursSortByArea)。 double tmpSpan = GetContourSpan(contoursAll[0])。 double tmpArea = contourArea(contoursAll[0])。 //if the biggest shadow has the crack features if (tmpSpan ( + )*) { //isSpecify=false: so we just filter the img with no specifications if (false == isSpecify) { for (int i = 0。 i () amp。 amp。 i numContours。 i++) { tmpSpan = GetContourSpan(contoursAll[i])。 if (tmpSpan ( + )*) 本文中代码为作者参考网络相关资料 基础上 的 开发成果 , 仅供参考学习 ,如有其他机器视觉领域算法和软件定制需要, 请联系作者 Email: { (contoursAll[i])。 } } } else { thresholdArea += contourArea(contoursAll[0])。 sort((), (), ContoursSortBySpan)。 thresholdSpan += GetContourSpan(contoursAll[0])。 for (int i = 0。 i () amp。 amp。 i numContours。 i++) { tmpArea = contourArea(contoursAll[i])。 tmpSpan = GetContourSpan(contoursAll[i])。 if ((tmpSpan / 2)*(tmpSpan / 2)* / tmpArea ratioThreshold amp。 amp。 tmpSpan / thresholdSpan amp。 amp。 tmpArea / thresholdArea ) { //删除面积小于设定值的轮廓 (contoursAll[i])。 } 本文中代码为作者参考网络相关资料 基础上 的 开发成果 , 仅供参考学习 ,如有其他机器视觉领域算法和软件定制需要, 请。基于opencv的裂纹纹检测系统c源代码
相关推荐
t slowdown=。 float xspeed。 // X 轴速度 float yspeed。 // Y 轴速度 float zoom=。 int a。 float xg1。 float yg1=。 GLuint loop。 // 循环变量 GLuint col=5。 // 初始颜色 GLuint texture[1]。 // 创建数组存储纹理 typedef struct // 创建结构体
工具 ,等等都能定义一个对它来说是重要的词汇 ,以来自若干的其他字汇的 URIrefs 作为它的词汇的部份。 除此之外,有时 一个组织将会以字汇的 namespace URLref作为提供关于那一个字汇的进一步的资讯网络资源的网址。 在 RDF陈述中的对象可能是 URIrefs, 或者是由字符串描述的常量 (被称为文字的 ),为了要表现特定类型的值。 文字的不可能被当作
方案书 第 4 页 11 MAX32 1 用于电平转换 总体介绍 所谓 MP3 播放,就是使用 MP3 播放器对 MP3 文件进行实时的解压缩 (解码 ),这样,高品质的 MP3 音乐就播放出来了。 具有 MP3 播放功能的指纹机中就内嵌了 MP3 播放 器,可以播放格式为 Layer III 的 mp3 语音文件。 其播放的方式类似定时响铃,可以设置八个时间段,当到达所设置的时间段时,
[x] += fValue。 } // 频带系数 for (i = 0。 i nHalfH。 i++) { pData[i][x] *= fRadius。 pData[nHalfH + i][x] /= fRadius。 } } } delete[] pData。 delete[] pRow。 delete[] pColumn。 } } } // 二维离散小波恢复(单通道浮点图像) void
源蜂鸣器驱动需要 130mA,所以就要加 9012NPN 三极管来获得大电流。 9012 的常温最大输出 500mA 电流。 6 本设计的不足和反思 最为一个温度监控系统,应该加上按钮,当温度异常,蜂鸣器 报警时,按下复位按钮,蜂鸣器停止报警,但是红灯继续闪烁。 当故障排除后,红灯灭,系统恢复正常。 如果一分钟后故障没有排除,蜂鸣器再次报警。 检测的实时温度应该通过 UART 上传到上位机
图像进行二值化,然后轮廓平滑处理后,图像的每个点为两个离散值中的一个,这两个值代表开 (1)与关 (0),即只有黑与白的特殊灰度图像,并且整个图像只有两个域 (如果有多个域需改变参数后重新进行一此剔除干扰对象处理 ),全 1 的域即为车牌区域,并且近似矩形,长宽比为 :1,也可以用这两个特性去检验提取的区域是否为车牌区域。 经区域确定了,即可将车牌的四个边界值确定下来。