資源簡介
OpenCV種子填充實現(xiàn)彩色圖像分割的代碼
代碼片段和文件信息
#ifdef?_CH_
#pragma?package?
#endif
#ifndef?_EiC
#include?“cv.h“
#include?“highgui.h“
#include?
#include?
#endif
IplImage*?color_img0;
IplImage*?mask;
IplImage*?color_img;
IplImage*?gray_img0?=?NULL;
IplImage*?gray_img?=?NULL;
int?ffill_case?=?1;
int?lo_diff?=?20?up_diff?=?20;
int?connectivity?=?4;
int?is_color?=?1;
int?is_mask?=?0;
int?new_mask_val?=?255;
void?on_mouse(?int?event?int?x?int?y?int?flags?VOID*P)
{
??if(?!color_img?)
????return;
??switch(?event?)
??{
??case?CV_EVENT_LBUTTONDOWN:
????{
????????CvPoint?seed?=?cvPoint(xy);
????????int?lo?=?ffill_case?==?0???0?:?lo_diff;
????????int?up?=?ffill_case?==?0???0?:?up_diff;
????????int?flags?=?connectivity?+?(new_mask_val?<8)?+
????????????????(ffill_case?==?1???CV_FLOODFILL_FIXED_RANGE?:?0);
????????int?b?=?rand()?&?255?g?=?rand()?&?255?r?=?rand()?&?255;
????????CvConnectedComp?comp;
????????if(?is_mask?)
??????????cvThreshold(?mask?mask?1?128?CV_THRESH_BINARY?);
????????
????????if(?is_color?)
????????{
??????????CvScalar?color?=?CV_RGB(?r?g?b?);
??????????cvFloodFill(?color_img?seed?color?CV_RGB(?lo?lo?lo?)
??????????????????CV_RGB(?up?up?up?)?&comp?flags?is_mask???mask?:?NULL?);
??????????cvShowImage(?“image“?color_img?);
????????}
????????else
????????{
??????????CvScalar?brightness?=?cvRealScalar((r*2?+?g*7?+?b?+?5)/10);
??????????cvFloodFill(?gray_img?seed?brightness?cvRealScalar(lo)
??????????????????cvRealScalar(up)?&comp?flags?is_mask???mask?:?NULL?);
??????????cvShowImage(?“image“?gray_img?);
????????}
????????printf(“%g?pixels?were?repainted\n“?comp.area?);
????????if(?is_mask?)
??????????cvShowImage(?“mask“?mask?);
????}
????break;
??}
}
int?main(?int?argc?char**?argv?)
{
??char*?filename?=?argc?>=?2???argv[1]?:?(char*)“fruits.jpg“;
??if(?(color_img0?=?cvLoadImage(filename1))?==?0?)
????return?0;
??printf(?“Hot?keys:?\n“
????????“\tESC?-?quit?the?program\n“
????????“\tc?-?switch?color/grayscale?mode\n“
????????“\tm?-?switch?mask?mode\n“
????????“\tr?-?restore?the?original?image\n“
????????“\ts?-?use?null-range?floodfill\n“
????????“\tf?-?use?gradient?floodfill?with?fixed(absolute)?range\n“
????????“\tg?-?use?gradient?floodfill?with?floating(relative)?range\n“
????????“\t4?-?use?4-connectivity?mode\n“
????????“\t8?-?use?8-connectivity?mode\n“?);
????
??color_img?=?cvCloneImage(?color_img0?);
??gray_img
- 上一篇:c語言模擬進程
- 下一篇:三次B樣條曲線算法 計算機圖形學(xué) 案例代碼
評論
共有 條評論