GOCVHelper(GreenOpen Computer Version Helper )是我在这几年编写图像处理程序的过程中积累下来的函数库。主要是对Opencv的适当扩展和在实现Mfc程序时候的功能增强。

    这里将算法库开放源代码,并且编写一系列blog对函数实现进行说明。目的是在于“取之于互联网,用之于互联网”。并且也希望该库能够继续发展下去。
    由于算法库基于Opencv和Mfc进行编写,所以要求阅读使用者具备一定基础。
    最终提交的是GOCVHelper.h 和GOCVHelper版本号.cpp两个文件。
    
    通过阅读头文件,能够对算法库实现的功能加以了解:
    //名称:GOCVHelper0.7b.cpp
    //功能:图像处理和MFC增强
    //作者:jsxyhelu(1755311380@qq.com http://jsxyhelu.cnblogs.com)
    //组织:GREENOPEN
    //日期:2016-09-24
    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    #include <io.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <vector>
    #include "opencv2/core/core.hpp"
    #include "opencv2/highgui/highgui.hpp"
    #include "opencv2/imgproc/imgproc.hpp"
    using namespace std;
    using namespace cv;
    #define  VP  vector<cv::Point>  //用VP符号代替 vector<point>
    #define  DIRECTION_X 0
    #define  DIRECTION_Y 1
    //调用算法库请在Opencv和Mfc正确配置的环境下。
    //并且配置 项目-属性-配置属性-常规-字符集 设置为 使用多字节字符集
    //和 项目-属性-配置属性-c/c++-预处理器-预处理器定义 加入 _CRT_SECURE_NO_WARNINGS
    namespace GO{
        //读取灰度或彩色图片到灰度
        Mat imread2gray(string path);
        //带有上下限的threshold
        Mat threshold2(Mat src,int minvalue,int maxvalue);
        //自适应门限的canny算法 
        Mat canny2(Mat src);
        void AdaptiveFindThreshold( Mat src,double *low,double *high,int aperture_size=3);
        void _AdaptiveFindThreshold(CvMat *dx, CvMat *dy, double *low, double *high);
        //填充孔洞
        Mat fillHoles(Mat src);
        float getWhiteRate(Mat src);
        Mat getInnerHoles(Mat src);
        //顶帽去光差,radius为模板半径
        Mat moveLightDiff(Mat src,int radius = 40);
        //将 DEPTH_8U型二值图像进行细化  经典的Zhang并行快速细化算法
        void thin(const Mat &src, Mat &dst, const int iterations=100);
        //使得rect区域半透明
        Mat translucence(Mat src,Rect rect,int idepth = 90);
        //使得rect区域打上马赛克
        Mat mosaic(Mat src,Rect rect,int W = 18,int H = 18);
        //----------------------------------------------------------------------------------------------------------------------------------------//
        //寻找最大的轮廓
        VP FindBigestContour(Mat src);
        //寻找并绘制出彩色联通区域
        vector<VP> connection2(Mat src,Mat& draw);
        vector<VP> connection2(Mat src);
        //根据轮廓的面积大小进行选择
        vector<VP>  selectShapeArea(Mat src,Mat& draw,vector<VP> contours,int minvalue,int maxvalue);
        vector<VP>  selectShapeArea(vector<VP> contours,int minvalue,int maxvalue);
        //根据轮廓的圆的特性进行选择
        vector<VP>  selectShapeArea(Mat src,Mat& draw,vector<VP> contours,int minvalue,int maxvalue);
        vector<VP>  selectShapeArea(vector<VP> contours,int minvalue,int maxvalue);
        //计算轮廓的圆的特性
        float calculateCircularity(VP contour);
        //返回两点之间的距离
        float getDistance(Point2f f1,Point2f f2);
        //----------------------------------------------------------------------------------------------------------------------------------------//
        //投影到x或Y轴上,上波形为vup,下波形为vdown,gap为误差间隔
        void projection2(Mat src,vector<int>& vup,vector<int>& vdown,int direction = DIRECTION_X,int gap = 10);
        //----------------------------------------------------------------------------------------------------------------------------------------//
        //递归读取目录下全部文件
        void getFiles(string path, vector<string>& files,string flag ="r"/*如果不想递归这里不写r就可以*/);
        //递归读取目录下全部图片
        void getFiles(string path, vector<Mat>& files,string flag = "r");
        //递归读取目录下全部图片和名称
        void getFiles(string path, vector<pair<Mat,string>>& files,string flag="r");
        //删除目录下的全部文件
        void deleteFiles(string path,string flag = "r");
        //创建或续写目录下的csv文件,填写“文件位置-分类”对
        int writeCsv(const string& filename,const Vector<pair<string,string>>srcVect,char separator=';');
        //读取目录下的csv文件,获得“文件位置-分类”对
        vector<pair<string,string>> readCsv(const string& filename, char separator = ';') ;
        //----------------------------------------------------------------------------------------------------------------------------------------//
        //C++的spilt函数
        void SplitString(const string& s, vector<string>& v, const string& c);
        //! 通过文件夹名称获取文件名,不包括后缀
        void getFileName(const string& filepath, string& name,string& lastname);
        //-----------------------------------------------------------------------------------------------------------------------------------------//
        //ini 操作
        CString  GetInitString( CString Name1 ,CString Name2);
        void WriteInitString( CString Name1 ,CString Name2 ,CString strvalue);
        //excel操作
        CString ExportListToExcel(CString  sExcelFile,CListCtrl* pList, CString strTitle);
        BOOL GetDefaultXlsFileName(CString& sExcelFile);

}

 
来自为知笔记(Wiz)

目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com

【20160924】GOCVHelper综述相关推荐

  1. 【20160924】GOCVHelper MFC增强算法(1)

        //递归读取目录下全部文件(flag为r的时候递归)     void getFiles(string path, vector<string>& files,string ...

  2. 【20160924】GOCVHelper 图像处理部分(2)

    //根据轮廓的面积大小进行选择     vector<VP>  selectShapeArea(Mat src,Mat& draw,vector<VP> contour ...

  3. 【20160924】GOCVHelper MFC增强算法(2)

    //创建或续写目录下的csv文件,填写"文件位置-分类"对     int writeCsv(const string& filename,const Vector< ...

  4. 1-1 机器学习和深度学习综述-paddle

    课程>我的课程>百度架构师手把手教深度学习>1-1 机器学习和深度学习综述> 1-1 机器学习和深度学习综述 paddle初级课程 王然(学生) Notebook 教育 初级深 ...

  5. 深度学习编译器综述The Deep Learning Compiler

    深度学习编译器综述The Deep Learning Compiler The Deep Learning Compiler: A Comprehensive Survey 参考文献: https:/ ...

  6. ADAS系统长篇综述(下)

    ADAS系统长篇综述(下) 四.ADAS架构设计的进化阶梯 前面谈到的产品的商业化推广渗透和产品的功能演进渗透,目的是让大家去概念化.当然,最后的赢家一定是实干者,能够在具体技术实现路径上进行深度耕耘 ...

  7. YOLOv3和YOLOv4长篇核心综述(下)

    YOLOv3和YOLOv4长篇核心综述(下) 4.3.3 Neck创新 在目标检测领域,为了更好的提取融合特征,通常在Backbone和输出层,会插入一些层,这个部分称为Neck.相当于目标检测网络的 ...

  8. 服务器技术综述(四)

    服务器技术综述(四) .

  9. 服务器技术综述(三)

    服务器技术综述(三)

最新文章

  1. git命令每次都要输入账号密码解决方法
  2. 最近在学C语言,非常痛苦,怎么办?
  3. pythonsklearn乳腺癌数据集_使用sklearn的样本数据集
  4. 【mysql】str_to_date()字符串转化为日期类型
  5. 移动开发框架,第【一】弹:QuoJs 官方文档(汉化版)
  6. tars框架php,TarsPHP: TARS-PHP是针对php使用tars二进制协议,以及tars平台整体运维、RPC等一系列能力的解决方案...
  7. Spring MVC 返回NULL时客户端用$.getJSON的问题
  8. ea mysql建模_UML数据建模工具之Enterprise Architect(EA)实例-UML应用
  9. 狗换了新主人会想旧主人吗?
  10. oracle sql取查询结果第一条,SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...
  11. 软件测试职业发展-王学丹
  12. R语言ETL工程:集合运算(intersect/union/setdiff)
  13. OpenStack Queens版本Barbican项目介绍
  14. 搭建moon服务器,实现zerotier飞速穿透
  15. 全国计算机技术与软件专业技术考试----(中级资格/工程师)各资格证详细介绍
  16. ROS_Kinetic_03 ROS入门向导
  17. 特教培智学校计算机教案,培智学校第四册第一单元实用语文《小书包》特殊教育教案...
  18. Appium WebView 技术原理
  19. phpcms内容限制(转发自王小明爱红领巾)
  20. Oracle EBS R12 AP付款模块 帐龄表计算逻辑

热门文章

  1. 华农软件工程实验报告_华南农业大学15年软件工程复习提纲
  2. mysql sql语句最大长度设置方法
  3. sonar做代码检测时如何忽略一些代码文件
  4. django captcha 验证码插件
  5. 《OpenACC并行程序设计:性能优化实践指南》一 3.5 在应用程序执行期间记录性能信息...
  6. JAVA 重载,重写(覆盖)个人理解
  7. System.arraycopy 和Arrays.copyOf
  8. nodejs在windows平台下搭建部署环境教程
  9. GCC中同时使用动态和静态库链接的编译
  10. java 列表组件_Jsp页面列表组件框架设计