图像二值化

来源:互联网 发布:天下三捏脸数据 编辑:程序博客网 时间:2024/05/09 06:16
图像的二值化就是将图像上的像素点的灰度值设置为0255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。OpenCV中对图像进行二值化的关键函数——cvThreshold()

函数功能:采用Canny方法对图像进行边缘检测

函数原型:

voidcvThreshold(

  constCvArr*src,

  CvArr*dst,

  doublethreshold,

  doublemax_value,

  intthreshold_type

);

函数说明:

第一个参数表示输入图像,必须为单通道灰度图。

第二个参数表示输出的边缘图像,为单通道黑白图。

第三个参数表示阈值,大于此值为白(255),小于此值为黑(0)。

第四个参数表示最大值。

第五个参数表示运算方法。

// TestC.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <opencv.hpp>
#include <cxcore.h>
#include <highgui.h>
#include <stdio.h>
 
 
int main() 

 IplImage *ImageInfo = cvLoadImage("1.jpg");//读取图像
 unsigned short mWide = ImageInfo->width;
 unsigned short mHeight = ImageInfo->height;
 unsigned char *ImageData = (unsigned char*)ImageInfo->imageData;
 unsigned char nChannel = ImageInfo->nChannels;
 
 //double fscale=0.314;//缩放系数
   // int    SmallWide =mWide*fscale;//缩放后的宽度
 //int   SmallHeight=mHeight*fscale;//缩放后的高度

 IplImage *GrayImage = cvCreateImage(cvSize(mWide,mHeight),8,1);//新建图像函数
 //IplImage *SmallImage = cvCreateImage(cvSize(SmallWide,SmallHeight),8,3);//新建缩放图像函数
 IplImage *BinaryImage = cvCreateImage(cvSize(mWide,mHeight),8,1);//新建二值化图像函数

 cvCvtColor(ImageInfo,GrayImage,CV_RGB2GRAY);//将彩色图像改为灰度图像

 //cvResize(ImageInfo,SmallImage,CV_INTER_AREA);//将图像缩放

 cvThreshold(GrayImage,BinaryImage,180,255,CV_THRESH_BINARY);//转为二值图

 //printf("mWide = %d\r\n mHeight = %d\r\n nChannel = %d\r\n SmallWide=%d\r\n SmallHeight=%d\r\n",mWide,mHeight,nChannel,SmallWide,SmallHeight);


 cvNamedWindow("the Image of show:");//创建窗口函数
 cvShowImage("the Image of show:",ImageInfo);//显示函数

 cvNamedWindow("the GrayImage of show:");//创建窗口函数
 cvShowImage("the GrayImage of show:",GrayImage);//显示函数

 //cvNamedWindow("缩放图:");//创建窗口函数
 //cvShowImage("缩放图:",SmallImage);//显示函数

 cvNamedWindow("二值图:");//创建窗口函数
 cvShowImage("二值图:",BinaryImage);//显示函数

 cvWaitKey(-2);//等待按键事件

   return 0; 


 

0 0
原创粉丝点击