opencv学习(一)实现将彩色图像转换成灰度图像和二值图像

1)使用cvCvtColor(img_color,img_gray,CV_BGR2GRAY);将彩色图像转换为灰度图像

2)使用cvThreshold(img_gray,img_binary,100,255,CV_THRESH_BINARY);将灰度图像转换为二值图像(该函数只适用于单通道图像)


#include <opencv2\opencv.hpp>

#include <iostream>
using namespace cv;
using namespace std;

int main()
{
IplImage*img_color=cvLoadImage("img_color.jpg",1);//原彩色图像(1表示读取彩色图)

//将彩色图像转换为灰度图像,并保存
IplImage*img_gray=cvCreateImage(cvGetSize(img_color),img_color->depth,1);//灰度图像(参数:图像宽、高、像素的位深度和通道数(单通道为灰度图像))
cvCvtColor(img_color,img_gray,CV_BGR2GRAY);
cvSaveImage("img_gray.jpg",img_gray);//保存灰度图像


//将灰度图像转换为二值图像,并保存
IplImage*img_binary=cvCreateImage(cvGetSize(img_color),img_gray->depth,1);//二值图像
cvThreshold(img_gray,img_binary,100,255,CV_THRESH_BINARY);//固定阈值操作(cvThreshold函数只针对单通道图像)
cvSave("img_binary",img_binary);//使用cvSaveImage保存二值图像报错?


//创建窗口(用于显示图像)
cvNamedWindow("img_color",CV_WINDOW_AUTOSIZE);
    cvNamedWindow("img_gray",CV_WINDOW_AUTOSIZE);
cvNamedWindow("img_binary",CV_WINDOW_AUTOSIZE);
    
    cvShowImage("img_color",img_color);//显示彩色图像和对应的灰度图像、二值图像
    cvShowImage("img_gray",img_gray);
cvShowImage("img_binary",img_binary);

    cvWaitKey(0);//直到按下任意键,才处理之后的语句

//释放窗口对象和图像对象
    cvDestroyWindow("img_color");
    cvDestroyWindow("img_gray");
cvDestroyWindow("img_binary");
    cvReleaseImage(&img_color);
    cvReleaseImage(&img_gray);
cvReleaseImage(&img_binary);

    return 0;

}

实验结果:

原彩色图像:

灰度图像:

二值图像:

展开阅读全文

没有更多推荐了,返回首页