亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? colormodelycbcr.cpp

?? color based segment in YCbCr space
?? CPP
字號:
#ifdef _CH_
#define WIN32
#error "The file needs cvaux, which is not wrapped yet. Sorry"
#endif

#ifndef _EiC
#include "cv.h"
#include "highgui.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <time.h>
#include <ctype.h>
#include <cvaux.h>

#include <fstream.h>
#include <limits>
#endif

#ifdef _EiC
#define WIN32
#endif

#ifdef _WIN32
/* use clock() function insted of time() */
#define time( arg ) (((double) clock()) / CLOCKS_PER_SEC)
#endif /* _WIN32 */

#ifndef PATH_MAX
#define PATH_MAX 512
#endif /* PATH_MAX */

void main( int argc, char** argv )
{
	int i,j;
//	int s = 0;    //計算總的象素點數
//	int n = 0;
//
//	FILE* info;
//	char* infoname;
//    char fullname[PATH_MAX];
//    //char detfilename[PATH_MAX];
//    char* filename;
//    //char detname[] = "";
//
//	int num;
//
	CvMat *M_Cov = cvCreateMat( 2, 2, CV_64FC1 );
	CvMat *M_U = cvCreateMat( 2, 1, CV_64FC1 );
	CvMat *T_Cov = cvCreateMat( 2, 2, CV_64FC1 );//協方差的逆
//    
//	for( i = 1; i < argc; i++ )
//    {
//        if( !strcmp( argv[i], "-info" ) )
//        {
//            infoname = argv[++i];
//        }
//        else if( !strcmp( argv[i], "-num" ) )
//        {
//            num = (int) atof( argv[++i] );
//        }
//	}
//
//	strcpy( fullname, infoname );
//	filename = strrchr( fullname, '\\' );
//	if( filename == NULL )
//	{
//		filename = strrchr( fullname, '/' );
//	}
//	if( filename == NULL )
//	{
//		filename = fullname;
//	}
//	else
//	{
//		filename++;
//	}
//
//	info = fopen( infoname, "r" );
//	if ( info != NULL)
//	{
//		
//		//unsigned char R8,B8,G8; //0~255
//		//float R,B,G, r,g,b;
//		//int rr,bb,gg;
//        unsigned char Y,Cb,Cr;
//
	    double U[2]={0};//均值
		

		double Cov[2][2]={0};//協方差
//	
//		float Cb_Cr[256][256]={0};
//		float p_CbCr[256][256]={0};
//		float cb[256]={0};
//		float cr[256]={0};
//		float p_cb[256]={0};
//		float p_cr[256]={0};

//		IplImage* image = NULL;
//		IplImage* Y_image = NULL;
//
//		while ( !feof( info ))
//		{
//			 if ( fscanf( info, "%s", filename) != 1 )
//				 break;
//			 image = cvLoadImage( fullname );//從文件中讀入一幅圖像
//			 if( !image ) 
//				 continue;
//
//			 s = s+image->height*image->width;
//			 n += 1;
//				 
//			 //把圖像由RGB空間轉換到YCbCr空間中
//			 IplImage* Y_image = cvCreateImage( cvGetSize(image),IPL_DEPTH_8U, 3 );//若為IPL_DEPTH_32F則報錯
//			 cvCvtColor(image, Y_image, CV_RGB2YCrCb);
//
//			 //讀取CbCr的值
//			 for ( i = 0; i < Y_image->height; i ++ )
//			 {
//				 for ( j = 0; j < Y_image->width; j ++ )
//				 {
//					 Y = (uchar) (*( Y_image->imageData + Y_image->widthStep*i+j*3 ));
//					 Cb = (uchar) (*( Y_image->imageData + Y_image->widthStep*i+j*3+1 ));
//				     Cr = (uchar) (*( Y_image->imageData + Y_image->widthStep*i+j*3+2 ));
//
//					 //二維直方圖(b,g)
//                     Cb_Cr[Cb][Cr]+=1;
//					 cb[Cb]+=1;
//					 cr[Cr]+=1;
//				 }
//			 }
//		}        
//		//每一級的概率
//        for( i=0;i<256;i++ )
//		{
//			for(j=0;j<256;j++)
//			{
//				p_CbCr[i][j]=Cb_Cr[i][j]/s;
//			}
//		}
//	    for(i=0;i<256;i++)
//		{
//			p_cb[i]=cb[i]/s;
//		    p_cr[i]=cr[i]/s;
//		}           
//
//		//二維統計值方圖的均值
//		for(i=0;i<256;i++)
//		{
//			U[0]=U[0]+i*p_cb[i];
//            U[1]=U[1]+i*p_cr[i];
//
//        //二維統計值方圖的協方差
//			Cov[0][0] += i*i*p_cb[i];
//			Cov[1][1] += i*i*p_cr[i];
//		}
//
//        Cov[0][0]=Cov[0][0]-U[0]*U[0];
//		Cov[1][1]=Cov[1][1]-U[1]*U[1];
//		for(i=0;i<256;i++)
//		{
//			for(j=0;j<256;j++)
//			{
//				Cov[0][1] += i*j*p_CbCr[i][j];
//			}
//		}
//		Cov[0][1]=Cov[0][1]-U[0]*U[1];
//		Cov[1][0]=Cov[0][1];
//		
		
        Cov[0][0]=55.3961;
		Cov[0][1]=-36.4732;
		Cov[1][0]=-36.4732;
		Cov[1][1]=60.4410;

		U[0]=112.0816;
		U[1]=148.8160;
        cvInitMatHeader( M_Cov, 2, 2, CV_64FC1, Cov);//數組變為矩陣
		cvInitMatHeader( M_U, 2, 1, CV_64FC1, U);//數組變為矩陣
	    cvInvert( M_Cov, T_Cov, CV_LU);	//用高斯消去法求逆矩陣,并存在T_Cov中
	
	
    IplImage* Test_image = NULL;
	IplImage* Test_image1 = NULL;
   
    double X[2];
	CvMat *M_X = cvCreateMat( 2, 1, CV_64FC1 );//Creates new matrix,the pointer to the matrix is M_X
	CvMat *Sub_XU = cvCreateMat( 2, 1, CV_64FC1 );
	CvMat *T_Sub_XU = cvCreateMat( 1, 2, CV_64FC1 );
	CvMat *temp = cvCreateMat( 1, 2, CV_64FC1 );
	CvMat *D = cvCreateMat( 1, 1, CV_64FC1 );
    //CString img=2.jpg;
	Test_image = Test_image1 = cvLoadImage("39.jpg" );//從文件中讀入一幅圖像
   

	IplImage* Test_Y_image = cvCreateImage( cvGetSize(Test_image),IPL_DEPTH_8U, 3 );//Creates header and allocates data
	IplImage* B_image = cvCreateImage( cvGetSize(Test_image),IPL_DEPTH_8U, 1 );

	cvCvtColor(Test_image, Test_Y_image, CV_RGB2YCrCb);//Converts image from RGB space to YCbCr


    
	for ( i = 0; i < Test_Y_image->height; i ++ )
	{
		for ( j = 0; j < Test_Y_image->width; j ++ )
		{
			X[0] = (uchar) (*( Test_Y_image->imageData + Test_Y_image->widthStep*i+j*3+1 ));//Cb  
			//char *imageData;  /* pointer to aligned image data */
			//int  widthStep;   /* size of aligned image row in bytes */

			X[1] = (uchar) (*( Test_Y_image->imageData + Test_Y_image->widthStep*i+j*3+2 ));//Cr
			
            cvInitMatHeader( M_X, 2, 1, CV_64FC1, X);//數組變為矩陣

            //求馬氏距離
			cvSub(M_X,M_U,Sub_XU);//Computes per-element difference between two arrays
			cvTranspose( Sub_XU, T_Sub_XU );//轉置
			cvMatMul( T_Sub_XU, T_Cov, temp);
            cvMatMul( temp, Sub_XU, D);

		    //double d = CV_MAT_ELEM(*D,double,0,0);
            if (CV_MAT_ELEM(*D,double,0,0)<=8.0)
				*( B_image->imageData + B_image->widthStep*i+j)=255;
			else
				*( B_image->imageData + B_image->widthStep*i+j)=0;
		}
	}
	cvNamedWindow( "binaryimage", CV_WINDOW_AUTOSIZE );
	cvShowImage( "binaryimage", B_image );
	cvWaitKey(10);//顯示窗口并停留一段時間
	//cvvSaveImage( "binaryimage.jpg", B_image );

	//形態學濾波
	int size = 3;
	IplConvKernel* Element = cvCreateStructuringElementEx( size, size, 0, 0,CV_SHAPE_ELLIPSE);
	//cvErode( B_image, B_image, Element, 1 );
    //cvDilate( B_image, B_image, Element, 1 );
	cvMorphologyEx( B_image, B_image, NULL , Element, CV_MOP_OPEN, 2 );

	cvNamedWindow( "Morphology", CV_WINDOW_AUTOSIZE );
	cvShowImage( "Morphology", B_image );
	cvWaitKey(1000);//顯示窗口并停留一段時間

	// Find ellipes in input_img by using its edge information
    // and draw the found ellipes on the images
    //void FindCircles(IplImage* input_img, IplImage* input_edge, CvBox2D* box2DArray, int* pEllipseNum)
    //{
	// DO SOME DECLARARTIONS
	// FOR ALL TYPES "Cv.." LOOK AT OPENCV-DOC !!
    //橢圓擬合
    CvMemStorage *storage;//Growing memory storage
    int header_size, count;
    CvSeq *contour;//Growable sequence of elements
	CvSeq MyContour;
    CvBox2D * myBox;
	CvBox2D* box2DArray;
    CvPoint *PointArray;
    CvPoint2D32f *PointArray32f;
	double MyContourArea;
	int pEllipseNum = 0;

	// ALLOCATE SOME MEMORY        
	myBox= (CvBox2D *) malloc(sizeof(CvBox2D));
	box2DArray= (CvBox2D *) malloc(sizeof(CvBox2D));
    header_size = sizeof(CvContour);
    storage = cvCreateMemStorage (0); // For FindContours.

    //THIS FUNCTION SEPARATES ALL CONTOURS
    // LOOK AT THE DOC !!!! AGAIN
    cvFindContours (B_image , storage, &contour, header_size, CV_RETR_LIST,  CV_CHAIN_APPROX_SIMPLE);
	
	// GO THROUGH ALL CONTOURS
    while(contour!=NULL)
    {
		
		if(CV_IS_SEQ_CURVE(contour))
		{
            // HOW MANY POITS HAS THE CONTOUR ??
            count = contour ->total;
           
            //ALLOC MEM
            PointArray = (CvPoint *)malloc(count * sizeof(CvPoint));
           
            //COPY THE POINTS TO A ARRAY
            cvCvtSeqToArray(contour, PointArray, CV_WHOLE_SEQ);

            // ALLOC MEM
            PointArray32f = (CvPoint2D32f *) malloc((count + 1) * sizeof(CvPoint2D32f));

            //CONVERT THE ARRAY TO A 2ND (32FLOAT)
            // THIS WE NEED FOR cvFitELLIPSE

            for (i=0; i<count-1; i++)
            {                              
                    PointArray32f[i].x = (float)(PointArray[i].x);
                    PointArray32f[i].y = (float)(PointArray[i].y);
            }
            PointArray32f[i].x = (float)(PointArray[0].x);
            PointArray32f[i].y = (float)(PointArray[0].y);        

            //cvFITELLIPSE NEEDS MIN. 6 POINTS
            if (count >= 7)
            {
				
				memcpy(&MyContour,contour,sizeof(CvSeq));
				MyContour.h_next=NULL;
				MyContour.h_prev=NULL;
				MyContourArea = fabs(cvContourArea(&MyContour,CV_WHOLE_SEQ));

				//FOR DEBUGGING YOU CAN DRAW THE CONTOUR
				//cvDrawContours(Test_image, contour, CV_RGB(255,0,0), CV_RGB(0,255,0),0);

				//cvNamedWindow( "DrawContours", CV_WINDOW_AUTOSIZE );
                //cvShowImage( "DrawContours", Test_image );
                //cvWaitKey(100);

				//FIND THE BEST FITTING ELLIPSE INTHIS CONTOUR
                cvFitEllipse(PointArray32f, count, myBox);

				//double sizeContour = fabs(cvContourArea(contour,CV_WHOLE_SEQ));
				double ellipseArea   = (double)(CV_PI*myBox->size.height*myBox->size.width/4);
                float lwb=0;//The ratio of 
                // IS THE ELLIPSE INSIDE THE IMAGE ??
				// Is it large enough?
                if ((myBox->center.x > 0) && (myBox->center.y >0) && (ellipseArea>100))// && (ellipseArea<20000))
                {  
					box2DArray[pEllipseNum].angle			= myBox->angle;
					box2DArray[pEllipseNum].center.x		= myBox->center.x;
					box2DArray[pEllipseNum].center.y		= myBox->center.y;
					box2DArray[pEllipseNum].size.height	= myBox->size.height;
					box2DArray[pEllipseNum].size.width		= myBox->size.width;
					box2DArray[pEllipseNum].angle			= myBox->angle;

					pEllipseNum++;		// one ellipse was found
                }
			}
			free(PointArray32f );
            free(PointArray );
		}
        // GOT TO THE NEXT CONTOUR (IF ANY)
        contour = contour->h_next;
    }      
	
	
    //free (myBox);            
    free (contour);
    cvReleaseMemStorage(&storage);

    for ( i=0; i<pEllipseNum; i++)
	{
		CvPoint center;
		center.x = (int) box2DArray[i].center.x;
		center.y = (int) box2DArray[i].center.y;
		CvSize size;
		size.width = (int)box2DArray[i].size.width/2;
		size.height = (int)box2DArray[i].size.height/2;
		//DRAW THE ELLIPSE
		cvEllipse(Test_image1, center, size, box2DArray[i].angle, 0, 360, CV_RGB(0,0,255),1);
	}
	cvNamedWindow( "Detect Result", CV_WINDOW_AUTOSIZE );
	cvShowImage("Detect Result", Test_image);
	cvvSaveImage( "39.jpg", Test_image1 );
	cvWaitKey(0);

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品免费观看| 国产在线视频一区二区| 91日韩精品一区| 亚洲精品福利视频网站| 欧美色视频在线| 日韩高清一区二区| 久久亚洲一区二区三区明星换脸 | 国产欧美日韩另类视频免费观看| 老汉av免费一区二区三区| 精品国产乱码久久久久久蜜臀 | 亚洲mv大片欧洲mv大片精品| 欧美性生活大片视频| 天天色 色综合| 2023国产精品| 99视频热这里只有精品免费| 亚洲主播在线观看| 精品久久久久久最新网址| 成人小视频免费观看| 亚洲男女一区二区三区| 欧美伦理影视网| 国产v综合v亚洲欧| 一区二区久久久久久| 日本一区二区免费在线观看视频| 国产精品一级片| 一区二区三区 在线观看视频| 欧美精品久久天天躁| 国产成人精品亚洲777人妖| 亚洲视频免费观看| 日韩欧美不卡一区| 99久久综合狠狠综合久久| 婷婷激情综合网| 中文字幕欧美激情| 91麻豆精品国产91久久久久久| 国产黄色精品网站| 肉肉av福利一精品导航| 国产亚洲va综合人人澡精品| 91黄色小视频| 国产a精品视频| 奇米综合一区二区三区精品视频| 国产精品网站一区| 欧美成人艳星乳罩| 在线视频你懂得一区| 国产成人精品午夜视频免费 | 日韩有码一区二区三区| 国产精品三级av| 日韩欧美国产一区在线观看| 91麻豆免费看| 国产成人午夜视频| 美腿丝袜在线亚洲一区| 一区二区三区精品视频在线| 欧美—级在线免费片| 日韩一级大片在线观看| 在线免费不卡电影| 成人黄色777网| 国产精品1区2区3区在线观看| 午夜精品福利一区二区三区av| 一区视频在线播放| 久久精品男人天堂av| 日韩女优制服丝袜电影| 欧美另类变人与禽xxxxx| 在线日韩国产精品| 99久久久精品免费观看国产蜜| 国产精品亚洲午夜一区二区三区 | 精品国一区二区三区| 欧美日本国产视频| 欧美日韩综合在线| 91黄色小视频| 欧美亚洲一区二区三区四区| 91农村精品一区二区在线| 波多野结衣视频一区| 国产成人精品免费一区二区| 蜜桃久久久久久| 麻豆成人av在线| 蜜桃在线一区二区三区| 久久99久久精品| 另类人妖一区二区av| 另类欧美日韩国产在线| 国内偷窥港台综合视频在线播放| 奇米一区二区三区| 乱一区二区av| 久久99精品久久久久久动态图| 久久精品国产色蜜蜜麻豆| 麻豆成人免费电影| 国产在线不卡一区| 国产成人精品www牛牛影视| 一本一本大道香蕉久在线精品 | 国产亚洲欧美日韩在线一区| 国产午夜精品美女毛片视频| 国产日韩精品一区二区三区| 国产女主播视频一区二区| 国产精品乱码妇女bbbb| 亚洲欧洲精品一区二区三区| 亚洲免费观看在线视频| 亚洲自拍都市欧美小说| 日韩 欧美一区二区三区| 麻豆视频观看网址久久| 国产一区二区0| 波多野结衣中文一区| 在线一区二区三区四区五区 | 国产精品少妇自拍| 亚洲女同一区二区| 亚洲成av人片www| 麻豆一区二区三区| 成人不卡免费av| 欧美性色欧美a在线播放| 在线播放亚洲一区| 国产亚洲人成网站| 一区二区三区毛片| 精品一二三四在线| 99国产一区二区三精品乱码| 欧美日韩国产色站一区二区三区| 日韩一区二区三区在线| 中文欧美字幕免费| 五月综合激情日本mⅴ| 国产美女av一区二区三区| 97久久精品人人澡人人爽| 欧美日韩1区2区| 国产精品青草综合久久久久99| 亚洲精品久久7777| 久久99国产精品尤物| 91亚洲资源网| 亚洲精品一区二区三区精华液| 亚洲欧洲日产国码二区| 日韩精品五月天| 99久久久无码国产精品| 欧美日韩成人在线| 亚洲欧洲精品成人久久奇米网| 午夜视频在线观看一区二区三区| 国产一区二区在线影院| 欧美日韩精品二区第二页| 国产丝袜欧美中文另类| 天天亚洲美女在线视频| 福利电影一区二区| 欧美一级午夜免费电影| 一区二区三区四区激情| 丰满白嫩尤物一区二区| 欧美一区二区三区爱爱| 亚洲一二三级电影| 暴力调教一区二区三区| 久久久精品黄色| 麻豆成人免费电影| 欧美人xxxx| 亚洲夂夂婷婷色拍ww47| 99久久精品99国产精品| 久久久久9999亚洲精品| 久国产精品韩国三级视频| 69久久夜色精品国产69蝌蚪网| 中文字幕综合网| 成人高清在线视频| 国产欧美日韩亚州综合| 国产精品一区二区91| 日韩精品中午字幕| 青青国产91久久久久久| 欧美日韩日本视频| 亚洲一区av在线| 91成人国产精品| 亚洲一二三四区不卡| 91免费国产在线观看| 国产精品成人免费精品自在线观看| 国产一区二区在线看| www欧美成人18+| 黄一区二区三区| 欧美成人官网二区| 麻豆精品一区二区| 精品日韩欧美一区二区| 精品在线播放午夜| 亚洲精品一线二线三线| 激情综合网天天干| 精品久久久久久综合日本欧美| 久久成人麻豆午夜电影| 精品国产伦一区二区三区观看方式| 蜜桃免费网站一区二区三区| 日韩精品专区在线| 国产一区二区精品久久| 国产片一区二区三区| 成人精品在线视频观看| 自拍偷拍亚洲激情| 欧美视频中文字幕| 日韩电影网1区2区| 精品国产伦一区二区三区观看体验| 久久国产精品99久久人人澡| 26uuu精品一区二区三区四区在线| 国产一区在线观看麻豆| 久久精品夜色噜噜亚洲a∨| 成人午夜电影小说| 一区二区三区高清| 欧美一区二区精美| 国产电影一区二区三区| 中文字幕视频一区二区三区久| 在线免费视频一区二区| 日韩精品久久理论片| www久久精品| 91麻豆精品视频| 日本不卡一二三| 久久精品欧美一区二区三区不卡| 99国产精品久久久久久久久久| 亚洲午夜一区二区三区| 2024国产精品| 91美女片黄在线观看91美女| 日韩av电影免费观看高清完整版 |