这里提供两种方法
一种是经典的方法---ostu算法
另外是采用kmeans进行聚类的方法,对图像进行二值化。int main(int argc, char* argv[])
{
IplImage* src ,*srcCopy;
src = cvLoadImage("C:\\images\\plate5.png",CV_LOAD_IMAGE_GRAYSCALE);
cvNamedWindow("src");
cvShowImage("src",src);
srcCopy=cvCreateImage(cvGetSize(src),8,1);
cvCopy(src,srcCopy);
//使用kmeans进行图像二值化
k_means(srcCopy);
cvNamedWindow("kmeans");
cvShowImage("kmeans",srcCopy);
//使用OSTU算法进行二值化
int threshold = OSTU_Region(src);
cvThreshold(src,src,threshold,255,CV_THRESH_BINARY);
cvNamedWindow("OSTU");
cvShowImage("OSTU",src);
cvWaitKey(0);
cvDestroyWindow("OSTU");
cvDestroyWindow("kmeans");
cvReleaseImage(&src);
cvReleaseImage(&srcCopy);
return 0;
}