#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
const char* imagename = "C://Users//huashuo111//Desktop//路飞.jpg";
//从文件中读入图像
Mat img = imread(imagename);
//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return-1;
}
resize(img,img,Size(),0.5,0.5);
imshow("原图",img);
Mat imggray;
cvtColor(img,imggray,COLOR_BGR2GRAY);
IplImage img1=imggray;
IplImage *di=cvCreateImage(cvGetSize(&img1),IPL_DEPTH_8U,1);
IplImage *di1=cvCreateImage(cvGetSize(&img1),IPL_DEPTH_8U,1);
IplImage *di2=cvCreateImage(cvGetSize(&img1),IPL_DEPTH_8U,1);
cvThreshold(&img1,di,128,255, CV_THRESH_OTSU);
cvDilate(di,di1,NULL,1);
cvErode(di,di2,NULL,1);
Mat img2(di,true);
Mat img3(di1,true);
Mat img4(di2,true);
imshow("全局自适应阈值二值化",img2);
imshow("膨胀",img3);
imshow("腐蚀",img4);
imwrite("C://Users//huashuo111//Desktop//二值化.jpg",img2);
imwrite("C://Users//huashuo111//Desktop//膨胀.jpg",img3);
imwrite("C://Users//huashuo111//Desktop//腐蚀.jpg",img4);
//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;
}
原图(未缩小):
二值化:
腐蚀:
膨胀: