//图像的放缩与插值voidresize_demo(){
Mat zoomin,zoomout;int h = image.rows;int w = image.cols;resize(image, zoomin,Size(w/2,h/2),0,0,INTER_LINEAR);imshow("zoomin", zoomin);resize(image, zoomout,Size(w*1.5,h*1.5),0,0, INTER_LINEAR);imshow("zoomout", zoomout);}
2.图像归一化
//图像归一化voidnorm_demo(Mat &image){
Mat dst;
cout<<image.type()<<endl;
image.convertTo(image,CV_32F);
cout<<image.type()<<endl;normalize(image, dst,1.0,0,NORM_MINMAx);
cout<<dst.type()<<endl;imshow("图像数据归一化",dst);}
3.直方图&图像卷积
//直方图voidHistogram_demo(Mat &image){//三通道分离
vector<Mat>bgr_plane;split(imag, bgr_plane);//定义参数变量constint channels[1]={0};constint bins[1]={256};constfloat* ranges[1]={hranges};
Mat b_hist;
Mat g_hist;
Mat r_hist;//计算blue,green,red通道的直方图calcHist(&bgr_plane[0],0,Mat(),b_hist,1,bins,ranges);calcHist(&bgr_plane[1],0,Mat(),g_hist,1,bins,ranges);calcHist(&bgr_plane[2],0,Mat(),r_hist,1,bins,ranges);//显示直方图int hist_w =512;
int hist_h =400;
int bin_w =cvRound(double)hist_w/bins[0];
Mat hisImage =Mat::zeros(hist_h,hist_w,CV_8UC3);//归一化直方图数据normalize(b_hist, b_hist,0, hisImage.rows, NORM_MINMAx,-1,Mat());normalize(g_hist, g_hist,0, hisImage.rows, NORM_MINMAx,-1,Mat());normalize(r_hist, r_hist,0, hisImage.rows, NORM_MINMAx,-1,Mat());//绘制直方图曲线for(int i=1;i<bins[0]; i++){line(hisImage,Point(bin_w*(i-1), hist_h -cvRound(b_hist.at<float>(i-1))),Point(bin_w*(i),hist_h-cvRound(b_hist.at<float>(i))),Scalar(255,0,0),2,8,0);line(hisImage,Point(bin_w*(i-1), hist_h -cvRound(g_hist.at<float>(i-1))),Point(bin_w*(i),hist_h-cvRound(b_hist.at<float>(i))),Scalar(0,255,0),2,8,0);line(hisImage,Point(bin_w*(i-1), hist_h -cvRound(r_hist.at<float>(i-1))),Point(bin_w*(i),hist_h-cvRound(b_hist.at<float>(i))),Scalar(0,0,255),2,8,0);}//显示直方图nameWindow("Histogram demo", WINDOWS_AUTOSIZE);imshow("Histogram demo", hisImage);}
4.图像卷积
//图像卷积操作voidblur_demo(Mat &image){
Mat dst;blur(image, dst,Size(15,1),Point(-1,-1));imshow("图像模糊", dst);}
5.高斯模糊
//高斯模糊voidgaussian_blur_demo(Mat &image){
Mat dst;GaussianBlur(image, dst,Size(5,5),15);//第三个参数:卷积和的大小必须是奇数而且是正数imshow("高斯模糊",dst);}