入门OpenCV--图像的二值化

来源:互联网 发布:淘宝买家内衣秀大尺度 编辑:程序博客网 时间:2024/06/05 15:25
#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,表示背景或者例外的物体区域。

原创粉丝点击