入门OpenCV--图像的二值化

#include <opencv2/opencv.hpp>
using namespace std;
const char *binaryWindowsName = "二值图";
//const double S = 50;
//const double b = 5;
//double f = 0.0;
//double f2 = 0.0;
IplImage *srcImage = NULL;
IplImage *grayImage = NULL;
IplImage *binaryImage = NULL;
int main()
{
	CvCapture *cap = cvCreateCameraCapture(0);
	if(!cap)
	{
		cerr<<"Error!"<<endl;
		exit(-1);
	}
	IplImage *tempImage = cvQueryFrame(cap);
	CvSize size = cvSize(
		(int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH),
		(int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT)
		);
	srcImage = cvCreateImage(size, IPL_DEPTH_8U, 3);
	cvNamedWindow(binaryWindowsName, CV_WINDOW_AUTOSIZE);
	while((tempImage = cvQueryFrame(cap)) != NULL)
	{
		cvCopy(tempImage, srcImage);
		if(srcImage->origin == IPL_ORIGIN_TL)
			cvFlip(srcImage, srcImage);
		grayImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 1);
		cvCvtColor(srcImage, grayImage, CV_BGR2GRAY);
		binaryImage = cvCreateImage(cvGetSize(grayImage), IPL_DEPTH_8U, 1);
		cvThreshold(grayImage, binaryImage, 250, 255, CV_THRESH_BINARY);
		cvShowImage(binaryWindowsName, binaryImage);
		char c = cvWaitKey(44);
		if(c == 27) break;
	}
	cvReleaseImage(&srcImage);
	cvReleaseImage(&grayImage);
	cvDestroyWindow(binaryWindowsName);
	return 0;
}

图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。

将256个亮度等级的灰度图像通过适当的阈值(threshold)选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像
所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值