当前位置: 首页>>代码示例>>C++>>正文


C++ cvDilate函数代码示例

本文整理汇总了C++中cvDilate函数的典型用法代码示例。如果您正苦于以下问题:C++ cvDilate函数的具体用法?C++ cvDilate怎么用?C++ cvDilate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了cvDilate函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: skinDetect

void HandDetect::handDetecting()
{
	skinDetect();
	IplImage *tmp = cvCreateImage(cvGetSize(backproject), 8, 1);
	cvZero(tmp);

	if(track_comp.rect.height>0&&track_comp.rect.width>0)
	{
		cvCircle(tmp, handCen, track_box.size.width, CV_RGB(255, 255, 255), -1);
		cvDrawRect(tmp, cvPoint(track_window.x-(int)(track_box.size.width*0.2), track_window.y-(int)(track_box.size.height*0.2)), 
			cvPoint(track_window.x+(int)(track_box.size.width*1.2), track_window.y+track_box.size.height), CV_RGB(255, 255, 255), -1);
		
	}
	cvAnd(backproject, tmp, backproject, 0);
	cvDilate(backproject, backproject, 0, 1);
	cvErode(backproject, backproject, 0, 1);
	
	UsingYCbCr();
	cvAnd(gray, tmp, gray, 0);
	cvErode(gray, gray, 0, 1);
	cvDilate(gray, gray, 0, 1);
//	cvShowImage("52", gray);
	cvReleaseImage(&tmp);

	cvOr(gray, backproject, backproject, 0);
	
	handCen=cvPoint(track_box.center.x, track_box.center.y);
	
	setRad();
//	cvDrawRect(image, cvPoint(track_window.x, track_window.y), cvPoint(track_window.x+track_window.width, track_window.y+track_window.height), CV_RGB(255, 0, 0));
	cvCircle(image, handCen, 2, CV_RGB(255, 0, 0), 2);

}
开发者ID:gunbaek,项目名称:Hand2Mouse,代码行数:33,代码来源:HandDetect.cpp

示例2: lhMorpHMTC

//形态学约束击中-击不中变换 针对二值和灰度图像
void lhMorpHMTC(const IplImage* src, IplImage* dst, IplConvKernel* sefg, IplConvKernel* sebg =NULL)
{
	assert(src != NULL && dst != NULL && src != dst && sefg!= NULL && sefg!=sebg);

	if (sebg == NULL)
	{
		sebg = lhStructuringElementNot(sefg);

	}
	
	IplImage*  temp1 = cvCreateImage(cvGetSize(src), 8, 1);
	IplImage*  temp2 = cvCreateImage(cvGetSize(src), 8, 1);
	IplImage*  temp3 = cvCreateImage(cvGetSize(src), 8, 1);
	IplImage*  temp4 = cvCreateImage(cvGetSize(src), 8, 1);

	IplImage*  mask1 = cvCreateImage(cvGetSize(src), 8, 1);
	IplImage*  mask2 = cvCreateImage(cvGetSize(src), 8, 1);
	IplImage*  mask3 = cvCreateImage(cvGetSize(src), 8, 1);
	IplImage*  mask4 = cvCreateImage(cvGetSize(src), 8, 1);

	cvZero(mask1);
	cvZero(mask2);
	cvZero(mask3);
	cvZero(mask4);

	cvZero(dst);

	//P107 (5.5)
	cvErode( src, temp1, sebg);
	cvDilate( src, temp2, sebg);
	cvErode( src, temp3, sefg);
	cvDilate( src, temp4, sefg);

	cvCmp(src, temp3, mask1, CV_CMP_EQ);
	cvCmp(temp2, src,  mask2, CV_CMP_LT);
	cvAnd(mask1, mask2, mask2);

	cvCmp(src, temp4, mask3 , CV_CMP_EQ);
	cvCmp(temp1, src, mask4 , CV_CMP_GT);
	cvAnd(mask3, mask4, mask4);

	cvSub(src, temp2, dst, mask2);
	cvSub(temp1, src, dst, mask4);




	cvReleaseImage(&mask1);
	cvReleaseImage(&mask2);
	cvReleaseImage(&mask3);
	cvReleaseImage(&mask4);

	cvReleaseImage(&temp1);
	cvReleaseImage(&temp2);
	cvReleaseImage(&temp3);
	cvReleaseImage(&temp4);

	cvReleaseStructuringElement(&sebg);

}
开发者ID:CareShaw,项目名称:OCR,代码行数:61,代码来源:Morphology1.cpp

示例3: cvCreateImage

void Image_OP::Dilate(int iter, IplImage * orig_img, IplImage* manipulated_img)
{
	if( iter > 0)
	{
	 this->Reset_Manipulators();
	  this->my_pic_manipulators.dilate = true;
	  
    if (manipulated_img == NULL)
	{
       manipulated_img = cvCreateImage(cvSize(orig_img->width,
		                  orig_img->height),IPL_DEPTH_8U,3);

	   // third parameter is structuring element for operations;
	   // if null then 3x3 area; can be defined by using cvCreatingStructuringElementEx
	   // iter (4th parameter) is the number of applied iterations
	   cvDilate(orig_img, manipulated_img, NULL,iter);
                   
       cvShowImage("dilate",manipulated_img); 

	   cvReleaseImage(&manipulated_img);
	}
	else
		cvDilate(orig_img, manipulated_img, NULL,iter);

	 this->my_manipulation_applied = iter;
	 
	 
	 }

}
开发者ID:surferran,项目名称:3Drobot,代码行数:30,代码来源:OpenCv_Video_METH.cpp

示例4: cvCopy

void TextLocation::maxNumLimitedConnectComponet(const IplImage* img, const int maxNum,
        vector<CvRect> &rects, vector<CvPoint> &centers) {

    cvCopy(img, m_copyForCC);
    cvDilate(m_copyForCC, m_copyForCC, NULL, 2);

    // connected component
    int ccNum = 200;
    connectComponent(m_copyForCC, 1, kccPerimeter, &ccNum, rects, centers);

    // too many ccNum, dilate the cc img then cc again
    cvZero(m_maskForCC);
    cvCopy(img, m_copyForCC);

    while (ccNum > kboxMaxNum) {

        getMaskImgFromRects(m_copyForCC, rects, m_maskForCC);
        cvDilate(m_maskForCC, m_maskForCC, NULL, 2);

#ifdef DEBUG
        cvShowImage("maskImg", m_maskForCC);
#endif

        cvCopy(m_maskForCC, m_copyForCC);
        connectComponent(m_maskForCC, 1, kccPerimeter, &ccNum, rects, centers);

    }

}
开发者ID:browny,项目名称:invoiceq-core,代码行数:29,代码来源:textlocation.cpp

示例5: cvDilate

// Dilate -> Erode -> Dilate
void Filterling ::noiseEraser (IplImage *srcImage, IplImage *dstImage) {
	int COL =3, ROW = 3, ITERATIONS = 1 ;

	IplConvKernel *elem =cvCreateStructuringElementEx (COL, ROW, 0, 0, CV_SHAPE_RECT, NULL) ;
	//cvMorphologyEx (img, img, NULL, elem, CV_MOP_CLOSE, 1) ; // 닫힘
	cvDilate (srcImage, dstImage, elem, ITERATIONS) ;	// 팽창
	cvErode (dstImage, dstImage, elem, ITERATIONS * 2) ;	//침식
	cvDilate (dstImage, dstImage, elem, ITERATIONS) ;	// 팽창
}
开发者ID:astroluj,项目名称:VC_OpenCV_Coin_Detection,代码行数:10,代码来源:filterling.cpp

示例6: lhMorpRDilate

//形态学测地膨胀和膨胀重建运算
void lhMorpRDilate(const IplImage* src, const IplImage* msk, IplImage* dst, IplConvKernel* se = NULL, int iterations=-1)
{

	assert(src != NULL && msk != NULL && dst != NULL && src != dst );

	if(iterations < 0)
	{
		//膨胀重建
		cvMin(src, msk, dst);
		cvDilate(dst, dst, se);
		cvMin(dst, msk, dst);

		IplImage*  temp1 = cvCreateImage(cvGetSize(src), 8, 1);
		//IplImage*  temp2 = cvCreateImage(cvGetSize(src), 8, 1);

		do
		{
			//record last result
			cvCopy(dst, temp1);
			cvDilate(dst, dst, se);
			cvMin(dst, msk, dst);
			//cvCmp(temp1, dst, temp2, CV_CMP_NE );

		}
		//while(cvSum(temp2).val[0] != 0);
		while(lhImageCmp(temp1, dst)!= 0);

		cvReleaseImage(&temp1);
		//cvReleaseImage(&temp2);

		return;	

	}
	else if (iterations == 0)
	{
		cvCopy(src, dst);
	}
	else
	{

		//普通测地膨胀 p136(6.1)
		cvMin(src, msk, dst);
		cvDilate(dst, dst, se);
		cvMin(dst, msk, dst);

		for(int i=1; i<iterations; i++)
		{
			cvDilate(dst, dst, se);
			cvMin(dst, msk, dst);

		}

	}
}
开发者ID:CareShaw,项目名称:OCR,代码行数:55,代码来源:Morphology1.cpp

示例7: cvCreateStructuringElementEx

void CTransformImage::Morphology()
{
	if(!m_transImage)
		return;

	IplConvKernel* element = cvCreateStructuringElementEx(3, 3, 1, 1, CV_SHAPE_RECT, NULL);

	cvDilate(m_transImage, m_transImage, element, 1);
	cvDilate(m_transImage, m_transImage, element, 1);
	cvErode (m_transImage, m_transImage, element, 1);
	cvErode (m_transImage, m_transImage, element, 1);

	cvReleaseStructuringElement(&element);
}
开发者ID:wonjb,项目名称:wprobot,代码行数:14,代码来源:[NEXE]TransformImage.cpp

示例8: cvMorphologyEx

CV_IMPL void
cvMorphologyEx( const void* src, void* dst,
                void* temp, IplConvKernel* element, int op, int iterations )
{
    CV_FUNCNAME( "cvMorhologyEx" );

    __BEGIN__;

    if( (op == CV_MOP_GRADIENT ||
        ((op == CV_MOP_TOPHAT || op == CV_MOP_BLACKHAT) && src == dst)) && temp == 0 )
        CV_ERROR( CV_HeaderIsNull, "temp image required" );

    if( temp == src || temp == dst )
        CV_ERROR( CV_HeaderIsNull, "temp image is equal to src or dst" );

    switch (op)
    {
    case CV_MOP_OPEN:
        CV_CALL( cvErode( src, dst, element, iterations ));
        CV_CALL( cvDilate( dst, dst, element, iterations ));
        break;
    case CV_MOP_CLOSE:
        CV_CALL( cvDilate( src, dst, element, iterations ));
        CV_CALL( cvErode( dst, dst, element, iterations ));
        break;
    case CV_MOP_GRADIENT:
        CV_CALL( cvErode( src, temp, element, iterations ));
        CV_CALL( cvDilate( src, dst, element, iterations ));
        CV_CALL( cvSub( dst, temp, dst ));
        break;
    case CV_MOP_TOPHAT:
        if( src != dst )
            temp = dst;
        CV_CALL( cvErode( src, temp, element, iterations ));
        CV_CALL( cvDilate( temp, temp, element, iterations ));
        CV_CALL( cvSub( src, temp, dst ));
        break;
    case CV_MOP_BLACKHAT:
        if( src != dst )
            temp = dst;
        CV_CALL( cvDilate( src, temp, element, iterations ));
        CV_CALL( cvErode( temp, temp, element, iterations ));
        CV_CALL( cvSub( temp, src, dst ));
        break;
    default:
        CV_ERROR( CV_StsBadArg, "unknown morphological operation" );
    }

    __END__;
}
开发者ID:273k,项目名称:OpenCV-Android,代码行数:50,代码来源:cvmorph.cpp

示例9: Posterize

void CHandDrawEffect::EffectImage(IplImage* back, IplImage* frame, IplImage* alpha, IplImage* mask, IplImage* res)
{
	if(drawMode & 0x01) {
		//基本エフェクト
		Posterize(0xD0, frame, imageA);
	//	DrawHatching(frame, imageA);
		cvAnd(imageA, mask, imageB); //エフェクト処理後のCG部分のくりぬき

		//囲み
		cvNot(mask, imageA);
		cvDilate(imageA, imageD, 0, 1);
		cvDilate(mask, imageE, 0, 3);
		cvXor(imageE, imageD, mask);

		//アルファマスク更新
		cvNot(mask, imageA);
		cvConvertScale(imageA, imageA, 0.5);
		cvOr(alpha, imageA, alpha);

		//色付きの囲み
		cvNot(mask, imageA);
		cvAnd(imageA, imageC, imageA);
		cvOr(imageA, imageB, imageB);

		//走査線
		cvAnd(imageB, scanningLine, imageB);

		//アルファブレンド
		AlphaBlend(back, imageB, alpha, res);

		if(0) { //drawMode & 0x02) {
		//	DrawEdge(frame, imageB, res, 2);

			cvNot(mask, frame);
			cvDilate(frame, imageA, 0, 1);
			cvDilate(mask, imageB, 0, 3);
			cvXor(imageA, imageB, mask);
			cvAnd(mask, res, res);

			//色付きの線
			cvNot(mask, imageA);
			cvAnd(imageA, scanningLine, imageA);
			cvAnd(imageA, imageC, imageA);
			cvOr(res, imageA, res);
		}
	} else if(drawMode & 0x02) {
	//	DrawEdge(frame, imageB, res, 2);
	}
}
开发者ID:zphilip,项目名称:VirtualTS,代码行数:49,代码来源:CCVEffect.cpp

示例10: memset

void TargetDetector::filterForGreen(Image* input)
{
    // Remove top and bottom chunks if desired
    if (m_topRemovePercentage != 0)
    {
        int linesToRemove = (int)(m_topRemovePercentage * m_image->getHeight());
        size_t bytesToBlack = linesToRemove * m_image->getWidth() * 3;
        memset(m_image->getData(), 0, bytesToBlack);
    }

    if (m_bottomRemovePercentage != 0)
    {
        int linesToRemove = 
            (int)(m_bottomRemovePercentage * m_image->getHeight());
        size_t bytesToBlack = linesToRemove * m_image->getWidth() * 3;
        int startIdx = 
            m_image->getWidth() * m_image->getHeight() * 3 - bytesToBlack;
        memset(&(m_image->getData()[startIdx]), 0, bytesToBlack);
    }

    // Filter the image so all green is white, and everything else is black
    m_filter->filterImage(m_image);

    if (m_erodeIterations)
    {
        cvErode(m_image->asIplImage(), m_image->asIplImage(), 0, 
                m_erodeIterations);
    }
    if (m_dilateIterations)
    {
        cvDilate(m_image->asIplImage(), m_image->asIplImage(), 0, 
                 m_dilateIterations);
    }

}
开发者ID:katzchen,项目名称:tortuga,代码行数:35,代码来源:TargetDetector.cpp

示例11: openHand

int openHand(PointCloud handPcl) {
	
	IplImage *imageHandBw = cvCreateImage(cvSize(640,480), 8, 1);
	
	binaryImage(handPcl, imageHandBw);
	cvDilate(imageHandBw, imageHandBw, NULL, 5);
	cvErode(imageHandBw, imageHandBw, NULL, 3);

	
	int perimeter = 0, area = 0;
	int i;
	for (i=0; i<FREENECT_FRAME_PIX; i++) {
		if(((unsigned char*)(imageHandBw->imageData))[i]) {
			area++;
			
			if (((unsigned char*)(imageHandBw->imageData))[i+1] == 0 ||
				((unsigned char*)(imageHandBw->imageData))[i-1] == 0 ||
				((unsigned char*)(imageHandBw->imageData))[i+FREENECT_FRAME_W] == 0 ||
				((unsigned char*)(imageHandBw->imageData))[i-FREENECT_FRAME_W] == 0)
				perimeter++;
		}
	}
	
	formFactor= 4 * M_PI * area / (perimeter * perimeter);
	
	//printf("PointCount: %d - Perimeter: %d - FF: %f\n", area, perimeter, formFactor);
	// cvShowImage("Depth", imageHandBw);

	cvReleaseImage(&imageHandBw);
	return (formFactor < OPEN_HAND_FORM_FACTOR);
	
}
开发者ID:Muffo,项目名称:KinectGraffiti,代码行数:32,代码来源:gestureManager.c

示例12: cvCreateImage

void Hand_recognition::Sub_prevFrame(IplImage *src, IplImage *dst){
	static int frame_count = 0;

	if(prev_ground == NULL){
		prev_ground = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
		present_ground = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
		cvCvtColor(src, prev_ground, CV_BGR2GRAY);
	}

	cvZero(dst);

	if(frame_count == 1){
		cvCvtColor(src, present_ground, CV_BGR2GRAY);
		for(int i = 0; i < src->width; i++){
			for(int j = 0; j < src->height; j++){
				int pixel_sub = abs((unsigned char)prev_ground->imageData[i + j * prev_ground->widthStep] - (unsigned char)present_ground->imageData[i + j * present_ground->widthStep]);
				if(pixel_sub > SUB_THRESHOLD)
					dst->imageData[i + j * dst->widthStep] = (unsigned char)255;
			}
		}

		//prev_ground = cvCloneImage(present_ground);
		cvCopy(present_ground, prev_ground);

		cvSmooth(dst, dst, CV_MEDIAN,3,3);
		cvErode(dst, dst, 0, 5);
		cvDilate(dst, dst, 0, 20);

		frame_count = 0;
	}

	frame_count++;
}
开发者ID:sp9103,项目名称:OpenCVE,代码行数:33,代码来源:Hand_recognition.cpp

示例13: findContours

void findContours( IplImage* img, CvMemStorage* storage, CvSeq **contours)
{
    //for findContour function
    IplImage* timg  =NULL;
    IplImage* gray  =NULL;
    IplImage* tgray =NULL;

    CvSize sz = cvSize( img->width, img->height );

	// make a copy of input image
	gray = cvCreateImage( sz, img->depth, 1 );
	timg = cvCreateImage( sz, img->depth, 1 );
	tgray = cvCreateImage( sz, img->depth, 1 );

	cvSetImageCOI(img,1);
    cvCopy( img, timg,NULL );
	cvSetImageCOI(img,0);

    cvCopy( timg, tgray, 0 );

    cvCanny( tgray, gray, ct1, ct2, 5 );
    // holes between edge segments
    cvDilate( gray, gray, 0, 2 );

    cvFindContours( gray, storage, contours,
                    sizeof(CvContour),CV_RETR_LIST,
                    CV_CHAIN_APPROX_NONE, cvPoint(0,0) );

    //release all the temporary images
    cvReleaseImage( &gray );
    cvReleaseImage( &tgray );
    cvReleaseImage( &timg );

}
开发者ID:ntavish,项目名称:tri,代码行数:34,代码来源:main.c

示例14: lhMorpHMTU

//形态学非约束击中-击不中变换 针对二值和灰度图像
void lhMorpHMTU(const IplImage* src, IplImage* dst, IplConvKernel* sefg, IplConvKernel* sebg =NULL)
{
	assert(src != NULL && dst != NULL && src != dst && sefg!= NULL && sefg!=sebg);

	if (sebg == NULL)
	{
		sebg = lhStructuringElementNot(sefg);

	}
	
	IplImage*  temp = cvCreateImage(cvGetSize(src), 8, 1);
	IplImage*  mask = cvCreateImage(cvGetSize(src), 8, 1);
	cvZero(mask);

	//P106 (5.4)
	cvErode( src, temp, sefg);
	cvDilate(src, dst, sebg);
	cvCmp(temp, dst, mask, CV_CMP_GT);

	cvSub(temp, dst, dst, mask);
	cvNot(mask, mask);
	cvSet(dst, cvScalar(0), mask);

	//cvCopy(dst, mask);
	//cvSet(dst, cvScalar(255), mask);
	cvReleaseImage(&mask);
	cvReleaseImage(&temp);

	cvReleaseStructuringElement(&sebg);
}
开发者ID:CareShaw,项目名称:OCR,代码行数:31,代码来源:Morphology1.cpp

示例15: opencv_image_filter

void opencv_image_filter(IplImage* src, IplImage* dst) {
    cvSobel(src, dst, 1, 0);
    cvSubS(dst, cvScalar(50,50,50), src);
    cvScale(src, dst, 2, 0);
    cvErode(dst, src);
    cvDilate(src, dst);
}
开发者ID:werdnac92,项目名称:harris-matching,代码行数:7,代码来源:opencv_top.cpp


注:本文中的cvDilate函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。