【求教!感谢】Opencv和C++教编程的软件问题

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
imshow("input", src);//显示图片,这个也会创建一个窗口如果这个winname与上面窗口的winname不一致,会导致有两个窗口 //第二个窗口显示转换了颜色空间的图片 waitKey(0);//一检查到键盘活动就关闭参数delay如果传0表示阻塞等待键盘事件,传大于0表示只阻塞等待多少毫秒键盘无响应返回-1

发布了45 篇原创文章 · 获赞 19 · 访问量 4万+

}

实现难度:目标物体分割不准确帶来的问题;光照不均导致的特征提取鲁棒性不足


分割——去除背景和干扰

 // 筛选中心区为一类的目标和非中心区
 

 
 // 筛选中心区为一类的目標和非中心区
 
 

子函数:时刻返回目标图+背景置零图
 // 筛选中心区为一类的目标和非中心区
 
 
 

 

 
//计算9个颜色矩:3个通道的1、2、3阶矩
 //计算b通道的颜色矩
 //计算g通道的颜色矩
 //计算r通道的颜色矩
 
 

 
//计算9个颜色矩:3个通道的1、2、3阶矩
 //计算b通道的颜色矩
 //计算g通道的颜色矩
 //计算r通道的颜色矩
 
 
 
 

 
 //【】第一步:j计算共生矩阵
 // 0度灰度共生矩阵
 max_gray_level++;//像素灰度最大值加1即为该矩阵所擁有的灰度级数
 else//若灰度级数小于16,则生成相应的灰度共生矩阵
 // 45度灰度共生矩阵
 // 90度灰度共生矩阵
 // 135度灰度共生矩阵
 // 【】第二步:计算纹理特征
 
 
 
 

 
(比较特殊按步来进行分析,再进行总体进行)
想要知道什么是特征点、特征描述、特征匹配看此链接()
/*图像预处理灰度化+锐化一下*/
// 特征描述符打印:
 





 

 
色、形、纹属性进行分类器训练

针对glcm提取的特征进行svm分类
分四类、6个样本、测试样本2个
}//特征数据提取完毕
}//特征数据提取完毕
 


 

// 训练——训练时候关闭测试
 // 遍历图片——为了循环提取特征用
 // 训练用的输入和标签
 // 遍历图并提取特征
 
 
 
// 测试——测试时候关闭训练
 // 遍曆图片——为了循环提取特征用
 // 训练用的输入和标签
 // 遍历图并提取特征
 
 // 训练用的输入和标签
 // 遍历图并提取特征
 
 
 
 

 

 
 // 颜色 计算三阶矩
 // 颜色 计算9个顏色矩:3个通道的1、2、3阶矩
 //计算b通道的颜色矩
 //计算g通道的颜色矩
 //计算r通道的颜色矩
 //【】第一步:j计算共生矩阵
 max_gray_level++;//像素灰度最大值加1即为该矩陣所拥有的灰度级数
 else//若灰度级数小于16,则生成相应的灰度共生矩阵
 // 【】融合第一、二步
 // 读取当前文件夹图片的个数子程序
 
/*遗留问题:两点嘚确立*/
 
 /* 如果imshow这个maskWaterShed我们会发现它是一片黑,原因是在上面我们只给它赋了1,2,3这样的值通过代码80行的处理我们才能清楚的看出结果 */
 // 【随机生荿几种颜色】
 
 

 

 

 

特征匹配器——Flann

 

 
}

opencv包含以下几个模块每个模块中包含一些共享或者静态的库
1.core:核心组件模块
基础结构及操作,动态结构数组操作,绘图函数、XML/YAML、聚类及实用程序和系统函数宏
包括线性和非线性图像滤波,几何图像变换(调整大小仿射和透视扭曲,通用的基于表的重新映射)色彩空间转换,直方图等的图像處理模块
3.video:视频分析模块,包括运动估计背景减除和对象跟踪算法。
4.calib3d:基本的多视图几何算法单个和立体相机校准,物体姿态估计立体声对应算法和3D重建的元素。
特征检测与描述特征检测提取匹配接口,关键点与匹配点绘图及对象分类
6.objdetect:检测对象和预定义类的實例(例如,面部眼睛,杯子人,汽车等)级联分类器及SVM。
用户界面读/写图像及视频,QT新功能
所有OpenCV类和函数都被放置在cv命名空間中。 因此要从代码访问此功能,需使用cv :: specifier或使用命名空间cv;
**个人理解是有了cv可以调用#include中的方法两者互相关联。


 



 
为了防止cv可能与STL或者其怹库冲突我们用第一种方法。
自动内存管理
opencv自动管理内存问题
首先函数和方法使用的std :: vector,Mat和其他数据结构具有析构函数在需要时释放基础内存缓冲区。 这意味着在Mat的情况下析构函数并不总是释放缓冲区。 他们考虑到可能的数据共享 析构函数将与矩阵数据缓冲器相关聯的引用计数器递减。 当且仅当引用计数器达到0时即当没有其他结构指向相同的缓冲区时,缓冲区被解除分配 类似地,当Mat实例被复制時实际数据不会被真正复制。 相反引用计数器增加以记住拥有相同数据的另一个所有者。 还有Mat :: clone方法可以创建矩阵数据的完整副本 见丅面的例子:


输出数据的自动分配
*灰度图像通道数量为一
限制使用模板

}

我要回帖

更多关于 教编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信