aihot  2017-05-06 12:57:43  OpenCV |   查看评论   

 

 1 void calcGradientFeat(const Mat& imgSrc, vector<float>& feat)   2 {   3     float sumMatValue(const Mat& image); // 计算图像中像素灰度值总和 
 4     
 5     Mat image;   6     cvtColor(imgSrc,image,CV_BGR2GRAY);   7     resize(image,image,Size(8,16));   8     
 9     // 计算x方向和y方向上的滤波 
10     float mask[3][3] = { { 1, 2, 1 }, { 0, 0, 0 }, { -1, -2, -1 } }; 11 
12     Mat y_mask = Mat(3, 3, CV_32F, mask) / 8;  13     Mat x_mask = y_mask.t(); // 转置 
14     Mat sobelX, sobelY; 15 
16     filter2D(image, sobelX, CV_32F, x_mask);  17     filter2D(image, sobelY, CV_32F, y_mask); 18 
19     sobelX = abs(sobelX);  20     sobelY = abs(sobelY); 21 
22     float totleValueX = sumMatValue(sobelX);  23     float totleValueY = sumMatValue(sobelY); 24 
25     // 将图像划分为4*2共8个格子,计算每个格子里灰度值总和的百分比 
26     for (int i = 0; i < image.rows; i = i + 4)  27     {  28         for (int j = 0; j < image.cols; j = j + 4)  29         {  30             Mat subImageX = sobelX(Rect(j, i, 4, 4));  31             feat.push_back(sumMatValue(subImageX) / totleValueX);  32             Mat subImageY= sobelY(Rect(j, i, 4, 4));  33             feat.push_back(sumMatValue(subImageY) / totleValueY);  34         }  35     }  36 }  37 float            
          
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自OpenCV进阶之路:神经网络识别车牌字符

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]