本文整理汇总了C++中cvDilate函数的典型用法代码示例。如果您正苦于以下问题:C++ cvDilate函数的具体用法?C++ cvDilate怎么用?C++ cvDilate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cvDilate函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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> ¢ers) {
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
示例16: cvThreshold
void TextLocation::getGlobalThImg(const IplImage* src, double th, IplImage* globalThImg, int dilateDeg) {
cvThreshold(src, globalThImg, th, 255, 0);
inverseBinaryImage(m_globalThImg);
cvDilate(m_globalThImg, m_globalThImg, NULL, dilateDeg);
}
开发者ID:browny,项目名称:invoiceq-core,代码行数:7,代码来源:textlocation.cpp
示例17: cvDilate
/*
功能:
OpenCV图像膨胀
*/
void CDIP1View::OnCvErode()
{
// TODO: Add your command handler code here
if(alert(1))
return;
//**************************OpenCV图像处理主要步骤*****************************
//0、判断当前图像是彩图还是灰度图
int GrayOrColor;
if(m_dib.IsGrade())
GrayOrColor = 1;
else
GrayOrColor = 3;
//1、把当前bmp图像转化为IplImage图像。1:表示当前bmp图像是灰度图;3:表示当前bmp图像是彩色图
IplImage *temp = m_dib.cvBmpToIplImage(GrayOrColor);
//2、开始图像处理
cvDilate(temp,temp);
//3、将处理后的图像(一般指第2步创建的图像)数据赋到bmp图像数据
m_dib.cvDataToBmp(temp);
//4、释放前两步创建的IplImage图像
cvReleaseImage(&temp);//释放temp
//刷新屏幕
Invalidate(1);
}
开发者ID:jnulzl,项目名称:DIP,代码行数:29,代码来源:DIP1View.cpp
示例18: main
int main(int argc, char** argv)
{
IplImage *img = cvLoadImage("4un-zishiying.jpg", 0);
if (img == NULL)
{
printf("img load failed!\n");
return 0;
}
IplImage *img_erode = cvCreateImage(cvGetSize(img), 8, 1);
IplImage *img_dilate = cvCreate+Image(cvGetSize(img), 8, 1);
cvErode(img, img_erode, NULL, 1); //腐蚀
cvDilate(img, img_dilate, NULL, 1); //膨胀
cvNamedWindow("img_erode");
cvNamedWindow("img_dilate");
cvShowImage("img_erode", img_erode);
cvShowImage("img_dilate", img_dilate);
cvWaitKey(-1);
cvReleaseImage(&img_dilate);
cvReleaseImage(&img_erode);
cvDestroyAllWindows();
return 0;
}
开发者ID:geekieo,项目名称:opencvDemo,代码行数:31,代码来源:Eroding_and_Dilating.cpp
示例19: test_backremoval
void test_backremoval(){
float max_value;
float min_value;
IplImage * rimage = cvCreateImage(cvGetSize(image),image->depth,image->nChannels);
IplImage * min_image = cvCreateImage(cvGetSize(image),image->depth,image->nChannels);
int values [] = {0,0,0,0,0,0,0,0,0};
IplConvKernel * kernel = cvCreateStructuringElementEx(3,3,1,1,CV_SHAPE_RECT,values);
cvDilate(image,rimage,kernel);
display_image("dilate",rimage);
cvErode(rimage,rimage,kernel);
display_image("erode",rimage);
//cvDilate(max_image,max_image,kernel);
//cvDilate(max_image,max_image,kernel);
display_image("original",image);
display_image("rimage",rimage);
//rimage = test_background_subtraction(image,max_image);
//display_image("back removed",rimage);
//IplImage * otsu_image = otsu_algorithm(rimage);
//otsu_image = invert_image(otsu_image);
//display_image("otsu image",otsu_image);
}
开发者ID:olivernina,项目名称:binatool,代码行数:25,代码来源:SuAlgorithmTest.cpp
示例20: bn_closure
void bn_closure(IplImage* img,int n)
{
bn_reverse(img);
cvDilate(img,img,NULL,n);
cvErode(img,img,NULL,n);
bn_reverse(img);
}
开发者ID:rodjonraskolnikov,项目名称:Rasta2,代码行数:7,代码来源:template_extractor.c
注:本文中的cvDilate函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论