现在的位置: 首页 > 综合 > 正文

opencv 将BGR转为HSV

2014年08月28日 ⁄ 综合 ⁄ 共 1152字 ⁄ 字号 评论关闭
char* srcimg = "fj.jpg";
 	char* smoothtitle = "SmmonthImg";
	//char srcname[]="group_uncheck";
	
 	IplImage* pSrcImg = cvLoadImage( srcimg );
 	if( pSrcImg == NULL ) return;

	IplImage* pDestImg = cvCreateImage( cvGetSize( pSrcImg ),IPL_DEPTH_32F,3);
 	if( pDestImg == NULL ) return;
	
	IplImage* img_src = cvCreateImage( cvGetSize( pSrcImg ),IPL_DEPTH_32F,3);
	if( img_src == NULL ) return;

	cvConvertScale( pSrcImg,pDestImg,1.0,0);//IPL_DEPTH_8U=>IPL_DEPTH_32F
	cvCvtColor( pDestImg,img_src,CV_BGR2HSV );//BGR==>HSV(深度要一致)

	IplImage* img_h = cvCreateImage( cvGetSize( pSrcImg ),IPL_DEPTH_32F,1 );
	IplImage* img_s = cvCreateImage( cvGetSize( pSrcImg ),IPL_DEPTH_32F,1 );
	IplImage* img_v = cvCreateImage( cvGetSize( pSrcImg ),IPL_DEPTH_32F,1 );

	cvSplit( img_src,img_h,img_s,img_v,NULL );

	IplImage* img = cvCreateImage( cvGetSize( pSrcImg ),IPL_DEPTH_8U,3 );
	IplImage* h = cvCreateImage( cvGetSize( pSrcImg ),IPL_DEPTH_8U,1 );
	IplImage* s = cvCreateImage( cvGetSize( pSrcImg ),IPL_DEPTH_8U,1 );
	IplImage* v = cvCreateImage( cvGetSize( pSrcImg ),IPL_DEPTH_8U,1 );

	cvConvertScale( img_h,h,( 1.0/360.0)*255.0,0 );
	cvConvertScale( img_s,s,255.0,0 );
	cvConvertScale( img_v,v,1.0,0 );
	//cvCvtColor(  );
	cvMerge( h,s,v,NULL,img );
	
	cvNamedWindow( "hsv",CV_WINDOW_AUTOSIZE );
	cvShowImage( "hsv",img );
	cvWaitKey( 0 );

抱歉!评论已关闭.