opencv批量灰度转换_转-OpenCV—RGB图像灰度化,并提取轮廓
OpenCV—RGB图像灰度化,并提取轮廓主要功能:加载一个RGB彩色图像,将其转化成灰度图,并采用Canny算法提取灰度图的边缘主要函数说明:<1> cvCvtColor(const CvArr* src, CvArr* dst, int code )表示将图像src的颜色空间转换后保存到图像dst中,其中code表示颜色空间转化形式,主要有CV_BGR2BGRA、CV_BGRA2B
OpenCV—RGB图像灰度化,并提取轮廓
主要功能:加载一个RGB彩色图像,将其转化成灰度图,并采用Canny算法提取灰度图的边缘
主要函数说明:
<1> cvCvtColor(
const CvArr* src, CvArr* dst, int code )
表示将图像src的颜色空间转换后保存到图像dst中,其中code表示颜色空间转化形式,主要有CV_BGR2BGRA、CV_BGRA2BGR、CV_BGR2RGBA、CV_RGBA2BGR、CV_BGR2RGB等60种颜色空间转换形式,本程序中code为:CV_RGB2GRAY。
<2> cvCanny( const
CvArr* image, CvArr* edges, double threshold1,
double threshold2, int aperture_size CV_DEFAULT(3)
);
表示将图像image中阈值为thresh1至thresh2间的轮廓提取出来,并将轮廓图像保存到edges中。
<3>另外在轮廓图像中添加了一个滑动条以控制阈值范围,查看不同阈值范围内的轮廓图像。
***********************
代码如下:
// RGB_Gray_Canny.cpp :
Defines the entry point for the console application.
#include
"stdafx.h"
#include
#include
#include
#include
using namespace
std;
//声明图像IplImage指针
IplImage*
pSrcImg=NULL;
IplImage* pGrayImg =
NULL;
IplImage* pCannyImg =
NULL;
int Thresh=50;
//滑动条响应函数
void onTrackerSlid(int
thresh)
{
cvCanny(pGrayImg,
pCannyImg,(float)thresh,(float)thresh*3, 3);
cvShowImage( "Canny
Image", pCannyImg );
}
int main( int argc, char**
argv )
{
if(argc!=2)
argv[1]="lena.jpg";
//载入图像,强制转化为Gray
if((pSrcImg = cvLoadImage( argv[1],1)) != 0 )
{
cout<
Quit"<
//将颜色空间由RGB转化为Gray
pGrayImg=cvCreateImage(cvGetSize(pSrcImg),8,1);
cvCvtColor(pSrcImg,pGrayImg,CV_RGB2GRAY);
//canny边缘检测
pCannyImg =
cvCreateImage(cvGetSize(pGrayImg),IPL_DEPTH_8U,1);
//cvCanny(pGrayImg, pCannyImg, 150,50, 3);
//创建窗口
cvNamedWindow( "Source Image",
CV_WINDOW_AUTOSIZE);
cvNamedWindow( "Gray Image",CV_WINDOW_AUTOSIZE);
cvNamedWindow( "Canny Image",CV_WINDOW_AUTOSIZE);
//添加滑动条来调节边缘检测的阈值
cvShowImage( "Gray Image", pCannyImg);
cvCreateTrackbar("Threshold", "Canny Image",
&Thresh, 100, onTrackerSlid);
onTrackerSlid(Thresh);
//显示图像
cvShowImage( "Source Image", pSrcImg );
cvShowImage( "Gray Image",pGrayImg);
//保存图像
cvSaveImage( "Gray_Image.jpg",pGrayImg);
cvSaveImage( "Canny_Image.jpg",pCannyImg);
//等待按"ESC"键退出
while(1)
if(cvWaitKey(100)==27)
break;
//销毁窗口
//cvWaitKey(0);
cvDestroyWindow( "Source Image" );
cvDestroyWindow( "Canny Image" );
cvDestroyWindow( "Gray Image");
//释放图像
cvReleaseImage( &pGrayImg );
cvReleaseImage( &pCannyImg );
cvReleaseImage( &pSrcImg);
return 0;
}
return
-1;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)