opencv二维码识别demo

core.jpg

这个是本次的例图


pinghw.jpg

这个是转灰度的图


qrcode_binary.jpg

这个是应用直方图均衡化然后二值化的图
Threshold_output1.jpg

这个是未应用均衡化直方图,然后二值化的图
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace cv;
using namespace std;
using std::cout;
 
Mat src; Mat src_gray; Mat binary;
 
int main( int argc, char ** argv[] )
{
    src = imread( "core.jpg", 1 );
    Mat src_all=src.clone();
 
 
    //彩色图转灰度图
    cvtColor( src, src_gray, CV_BGR2GRAY );
    //对图像进行平滑处理
    blur( src_gray, src_gray, Size(3,3) );
    //使灰度图象直方图均衡化
   // equalizeHist( src_gray, src_gray );
    namedWindow("src_gray");
    imshow("src_gray",src_gray);
 imwrite("pinghw.jpg", src_gray);

    Scalar color = Scalar(1,1,255 );
    Mat threshold_output;
    vector > contours,contours2;
    vector hierarchy;
    Mat drawing = Mat::zeros( src.size(), CV_8UC3 );
    Mat drawing2 = Mat::zeros( src.size(), CV_8UC3 );
    Mat drawingAllContours = Mat::zeros( src.size(), CV_8UC3 );
 
    //otsu阀值进行二值化
     threshold(src_gray, threshold_output, 0, 255, THRESH_BINARY | THRESH_OTSU);

看来直方图均衡化造成了负面影响,可以验证后直方图均衡是否对后续产生影响,。。待续

你可能感兴趣的:(opencv二维码识别demo)