opencv 玻璃镜面缺陷检测,缺陷信息标记及提取
作者:scutjy2015@163.com
Part 1 部分效果图
Part 2 源程序
#include <opencv2\opencv.hpp>
#include <iostream>
//#include <cv.h>
//#include <cxcore.h>
//#include <highgui.h>
//#include <iostream>
//#include<opencv2/imgproc/imgproc.hpp>
#include <string>
//#include <list>
//#include <vector>
//#include <map>
//#include <stack>
//#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>
//#include <math.h>
using namespace cv;
using namespace std;
//定义灰度图像变量
IplImage *g_GrayImage = NULL;
//定义二值化图片变量
IplImage *g_BinaryImage = NULL;
//定义二值化窗口标题
const char *WindowBinaryTitle = "二值化图片";
//定义滑块响应函数
//创建源图像窗口标题变量
const char *WindowSrcTitle = "灰度图像";
//创建滑块标题变量
const char *TheSliderTitle = "二值化阀值";
const char *SrcPath = "G:/AA computer vision/vs_opencv_example/defect detecting 201706291343/picture/1706201246_ 38.jpg"; 定义图片路径
IplImage *g_pGrayImage_liantong = NULL;
IplImage *g_pBinralyImage_liantong = NULL;
int contour_num = 0; //数字编号
char number_buf[10]; 数字编号存入数组,puttext
#define num_col 11 二维数组的列,每一个点缺陷信息的详细信息
long int liantong_all_area = 0; 连通区域总面积
long int Rect_all_area = 0; 保存最小外接矩形总的面积
=====================================================================
struct my_struct1{
double scale; 定义显示图像的比例
const int threshold_value_binaryzation; 定义第一次二值化阀值
const int threshold_value_second_binaryzation; 定义第一次二值化阀值
};
my_struct1 picture = { 0.3, 50, 100 };
=====================================================================
struct my_struct2{
int Model1_k1 ; 图像膨胀腐蚀
int Model1_k2 ; 图像膨胀腐蚀
int Model2_k1 ; 图像膨胀腐蚀
int Model2_k2 ; 图像膨胀腐蚀
} ;
my_struct2 value = {5,2,3,2};
=====================================================================
struct my_struct3{
double maxarea ; 最大缺陷面积
double minarea ; 最小显示保留的缺陷面积
double font_scale ; 字体大小
int font_thickness ; 字体粗细
const int Feature_value2_number ; 定义一个二维数组的列,即缺陷的个数
};
my_struct3 value2 = { 0, 4, 0.6, 0.8 , 100};
=========================================================