core.jpg
这个是本次的例图
pinghw.jpg
这个是转灰度的图
qrcode_binary.jpg
这个是应用直方图均衡化然后二值化的图
Threshold_output1.jpg
这个是未应用均衡化直方图,然后二值化的图
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <opencv2/imgproc/types_c.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <vector>
#include <opencv2/opencv.hpp>
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<vector<Point> > contours,contours2;
vector<Vec4i> 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);
看来直方图均衡化造成了负面影响,可以验证后直方图均衡是否对后续产生影响,。。待续