OpenCV实现彩色图像转换为灰度图及二值化处理
2012-12-18 03:44
816 查看
// lab_1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <cv.h> #include <cxcore.h> #include <highgui.h> #include <iostream> using namespace std; //声明图像IplImage指针 IplImage* pSrcImg=NULL; IplImage* pGrayImg=NULL; IplImage* pBinaryImg=NULL; int Thresh=127;//初始化滑动条位置 //滑动条响应函数 void onTrackerSlid(int thresh) { //将图像转化为二值图 pBinaryImg=cvCreateImage(cvGetSize(pSrcImg),pSrcImg->depth,pSrcImg->nChannels); cvCopy(pSrcImg,pBinaryImg);//复制图像数据 CvScalar scalar; int avg; for(int i=0;i<pBinaryImg->height;i++) { for(int j=0;j<pBinaryImg->width;j++) { scalar=cvGet2D(pBinaryImg,i,j);//获取点(i,j)的像素 avg=(scalar.val[0]+scalar.val[1]+scalar.val[2])/3; if(avg<thresh)//与阈值比较 { scalar.val[0]=scalar.val[1]=scalar.val[2]=0; cvSet2D(pBinaryImg,i,j,scalar); } else { scalar.val[0]=scalar.val[1]=scalar.val[2]=255; cvSet2D(pBinaryImg,i,j,scalar); } } } //显示图像 cvShowImage("二值化图像",pBinaryImg); } int main(int argc, char** argv) { if(argc!=2) argv[1]="lena.jpg"; //载入图像 if((pSrcImg=cvLoadImage(argv[1],1))!=0) { cout<<"按Esc键退出..."<<endl; //将颜色空间由RGB转化为Gray pGrayImg=cvCreateImage(cvGetSize(pSrcImg),8,1); cvCvtColor(pSrcImg,pGrayImg,CV_RGB2GRAY); //创建图像窗口 cvNamedWindow("原图像",CV_WINDOW_AUTOSIZE); cvNamedWindow("灰度图像",CV_WINDOW_AUTOSIZE); cvNamedWindow("二值化图像",CV_WINDOW_AUTOSIZE); //添加滑动条来调节阈值 cvCreateTrackbar("阈值","二值化图像",&Thresh,255,onTrackerSlid); onTrackerSlid(Thresh); //显示图像 cvShowImage("原图像",pSrcImg); cvShowImage("灰度图像",pGrayImg); //保存图像 cvSaveImage("Gray_Image.jpg",pGrayImg); cvSaveImage("Binary_Image.jpg",pBinaryImg); //等待按"Esc"键退出 while(true) if(cvWaitKey(100)==27) break; //销毁窗口 cvDestroyWindow("原图像"); cvDestroyWindow("灰度图像"); cvDestroyWindow("二值化图像"); //释放图像 cvReleaseImage(&pSrcImg); cvReleaseImage(&pGrayImg); cvReleaseImage(&pBinaryImg); return 0; } return -1; }
相关文章推荐
- C++ OpenCV 实现RGB彩色图像转化成灰度图像再转换成二值图像
- 使用 Java 进行图像处理 - 将彩色图像转换为灰度图
- opencv+cuda实现彩色图转灰度图或二值化
- opencv摄像头采集图像彩色图转换成灰度图
- Opencv实现图像的灰度处理,二值化,阀值选择
- Javascript图像处理之将彩色图转换成灰度图
- 图像配准 - 三张灰度图合成彩色图 ECC算法 OpenCV C++/Python实现
- opencv学习(一)实现将彩色图像转换成灰度图像和二值图像
- android 使用NDK进行图像处理(openCV)时的图像转换问题(灰度图显示)
- RGB彩色图像与灰度图像转换 opencv实现 代码及分析
- Matlab图像处理:使用函数将彩色图转换为灰度图
- Opencv实现图像的灰度处理,二值化,阀值选择
- 本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等功能
- opencv实现将RGB图像转换到HSI空间
- otsu结合OpenCV实现灰度图像自动阈值处理
- 5-python图像处理opencv(1.读图,显示,转换,存储)
- matlab实现将彩色图像转换成灰色图像的方法
- opencv实现图像的灰度转换,均值滤波,实现图像的显示和存储
- javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印
- 【OpenCV图像处理入门学习教程二】不同阈值二值化图像