hyperlpr自测题

1.hyperlpr 识别流程是什么?

1)PlateDetection::plateDetectionRough:cascade.detectMultiScale,粗检测一些车牌位置(并向外扩一部分0.3w, 2h),即剪切的车牌图片

2)resize到140x60, 转换成gray, 使用不同阈值进行cv::adaptiveThreshold,同一个车牌图片,得到多个阈值图片,对于面积大概符合车牌文字的contour, 满足:if (( lwRatio>0.7&&bdbox.width*bdbox.height>100 && bdboxAera<300)|| (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)), 记录下左上和右下角点

3)对于得到的很多左上点,使用cv::fitLine, 拟合直线,得到(vx,vy,x0,y0), 其中(vx, vy)是直线方向的模为1的向量,(x0,y0) 为直线上的点

int lefty = static_cast<int>((-x * vy / vx) + y);//求图片上左边的y
int righty = static_cast<int>(((136- x) * vy / vx) + y);//求与图片右边相交的y
res.first = lefty+PADDING_UP_DOWN+zeroadd;
res.second = righty+PADDING_UP_DOWN+zeroadd;

4)进行角度矫正:由于fitLine可能有误差,导致文字有倾斜,所以通过fastdeskew,进行矫正,使用:

 下面 的x2,y2,相当于理解为椭圆的一个半径,从而求得这个blocksize,的纹理角度

cv::Mat eigen;
cv::cornerEigenValsAndVecs(skewImage,eigen,blockSize,5);
//eigen:lambda1, lambda2, x0,y0, x1,y1
for( int j = 0; j < skewImage.rows; j+=blockSize )
{ for( int i = 0; i < skewImage.cols; i+=blockSize )
    {
        float x2 = eigen.at<cv::Vec6f>(j, i)[4];
        float y2 = eigen.at<cv::Vec6f>(j, i)[5];
        int angle_cell = angle(x2,y2);//感觉这里,x,y顺序写反了。其实没有写反,后面求了余角
        angle_list[(angle_cell + 180)%180]+=1.0;

    }
}

5)然后使用一个简单的网络模型,输出两个小数,乘以宽,就是左右两边的其实x,切掉左边和右边多余部分

6)最后送入识别模型识别

2.opencv mat clone和copyTo是什么区别?

clone调用copyTo,一样的

3.bitwise_not如何操作图像

4.cmake如何使得项目输出的二进制文件,在指定目录

   set(CMAKE_RUNTIME_OUTPUT_DIRECTORY, $(CMAKE_CURRENT_DIRECTORY))

5. CMakeLists.txt设置了set(CMAKE_C_FLAGS_DEBUG "-g -DDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-g -DDEBUG"), 也无法调试,提示gdb xx 提示无法load symbol怎么处理?

  设置set(CMAKE_BUILD_TYPE, DEBUG),这样就可以了

6.cornerEigenValsAndVecs(skewImage,eigen,blockSize,sobel_window_size)的作用是什么?

    求一个图像,每个blockSize,里面梯度矩阵的特征值和特征向量,两个特征值的根号分之一,分别为椭圆的两个半径:

  1/\sqrt\lambda

参考:https://www.cnblogs.com/ronny/p/4009425.html

7.Harris角点检测,其矩阵,特征值,特征向量分别代表什么意义?

 矩阵代表,一个窗口中,先对每个点,求梯度,构成

\begin{bmatrix} I_x^2 & I_xI_y \\ I_yI_x & I_y^2 \end{bmatrix}

,然后窗口所有点梯度矩阵求和。

 特征值,代表椭圆的两个半径 ,所以两个特征值都 比较大,那么表示是一个角点。

8.hyperlpr车牌检测使用的是什么算法?

   使用的是haar特征的 cascade forest检测算法

9.识别用的什么算法?

  conv,relu,maxpool

   conv,relu, maxpool

   conv, relu,

   dense, relu

    dense,relu

10.实测效果:

一些复杂情况,无法检测出,建议使用dnn方式检测车牌,crnn检测文字

    

发布了159 篇原创文章 · 获赞 55 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/northeastsqure/article/details/103833669
今日推荐