當前位置:編程學習大全網 - 熱門推薦 - cvcircle

cvcircle

static const int R=2;

static const int G=1;

static const int B=0;

IplImage *src = cvLoadImage("E:/test.png");

cvShowImage("s",src);

IplImage *dst = cvCreateImage(cvGetSize(src),src->depth,src->nChannels);

cvSet(dst,cvScalar(0,0,0));

for (int h=0;h<src->height;h++) {

unsigned char* prgb=(unsigned char*)src->imageData+h*src->widthStep;

unsigned char* pdst=(unsigned char*)dst->imageData+h*dst->widthStep;

for (int w=0;w<src->width;w++) {

if (prgb[R]>=200&&prgb[G]>0&&prgb[G]<50&&prgb[B]>0&&prgb[B]<50)

{

memcpy(pdst,prgb,3);

}

prgb+=3;

pdst+=3;

}

}

IplImage *gray = cvCreateImage(cvGetSize(src),src->depth,1);

cvCvtColor(dst,gray,CV_BGR2GRAY);

cvThreshold(gray,gray,50,255,CV_THRESH_BINARY);

cvSmooth(gray,gray,CV_GAUSSIAN,5,5);

cvShowImage("red",gray);

CvMemStorage *pcvMStorage = cvCreateMemStorage();

double fMinCircleGap = gray->height / 10;

CvSeq *pcvSeqCircles = cvHoughCircles(gray, pcvMStorage, CV_HOUGH_GRADIENT, 1, fMinCircleGap);

int i;

for (i = 0; i < pcvSeqCircles->total; i++)

{

float* p = (float*)cvGetSeqElem(pcvSeqCircles, i);

cvCircle(src, cvPoint(cvRound(p[0]), cvRound(p[1])), cvRound(p[2]), CV_RGB(0, 255, 0), 3);

}

cvShowImage("result",src);

  • 上一篇:安之若素什麽意思
  • 下一篇:《炮妹》遊戲的畫面是怎麽樣的 《炮妹》是壹款什麽
  • copyright 2024編程學習大全網