资源简介
OpenCV种子填充实现彩色图像分割的代码
代码片段和文件信息
#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样条曲线算法 计算机图形学 案例代码
相关资源
- 将彩色图片转换为灰度图片mfc实现
- 遥感图像彩色合成C++
- 使用c语言实现基于图的图像分割代码
- 自适应图像增强完整OpenCV代码
- 图像分割 grabcut C++版本的源码,包含
- 使用DirectX3D、传统方法绘制的绕Y轴不
- MFC数字图像处理BMP格式读取 保存 DF
- Adobe Photoshop CS6中文版经典教程(彩色
- C++坦克大战彩色(控制台小游戏源码
- FLICM算法C_Opencv代码,,可用于做图像
- 24位真彩色转单色bmp1位
- 用种子+扫描线的区域填充算法演示
- 四连通种子填充算法C++实现
- 基于opencv的彩色图像分解为hsv单通道
- c++ 图像中值梯度锐化、拉普拉斯锐化
- C语言 种子填充 计算机图形学
- vc++将8位和24位彩色图像转换成灰度图
评论
共有 条评论