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


C++ Image::C方法代码示例

本文整理汇总了C++中Image::C方法的典型用法代码示例。如果您正苦于以下问题:C++ Image::C方法的具体用法?C++ Image::C怎么用?C++ Image::C使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Image的用法示例。


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

示例1: convertRGB

static void convertRGB( Image & luv, const Image & rgb ) {
	if( rgb.C()!= 3 )
		throw std::invalid_argument( "RGB image required!" );
	const int W = rgb.W(), H = rgb.H();
	luv.create( W, H, 3 );
	int i;
	for( i=0; i+3<W*H; i+=4 ) {
		__m128 r,g,b,l,u,v;
		float * rr = (float*)&r, * gg = (float*)&g, * bb = (float*)&b;
		float * ll = (float*)&l, * uu = (float*)&u, * vv = (float*)&v;
		for( int k=0; k<4; k++ ){
			rr[k] = rgb[3*(i+k)+0];
			gg[k] = rgb[3*(i+k)+1];
			bb[k] = rgb[3*(i+k)+2];
		}
		convertRGB<SRGB,type>( l, u, v, r, g, b );
		for( int k=0; k<4; k++ ){
			luv[3*(i+k)+0] = ll[k];
			luv[3*(i+k)+1] = uu[k];
			luv[3*(i+k)+2] = vv[k];
		}
	}
	for( ; i<W*H; i++ )
		convertRGB<SRGB,type>( luv[3*i+0],luv[3*i+1],luv[3*i+2], rgb[3*i+0],rgb[3*i+1],rgb[3*i+2] ); 
}
开发者ID:ClarkWang12,项目名称:object-proposals,代码行数:25,代码来源:color.cpp

示例2: convert

static Image convert( const Image & image ) {
	if( image.C() != 3 )
		throw std::invalid_argument( "3-channel image required" );
	Image r( image.W(), image.H(), 3 );
	cfun[T]( r, image );
	return r;
}
开发者ID:CUAir,项目名称:edges,代码行数:7,代码来源:imgproc.cpp

示例3: rgb2hsv

void rgb2hsv( Image & hsv, const Image & rgb ) {
	if( rgb.C()!= 3 )
		throw std::invalid_argument( "RGB image required!" );
	const int W = rgb.W(), H = rgb.H();
	hsv.create( W, H, 3 );
	const int N = W*H;
	for( int i=0; i<N; i++ ) {
		float s,v;
		hsv[3*i+2] = v = std::max(rgb[3*i+0],std::max(rgb[3*i+1],rgb[3*i+2]));
		hsv[3*i+1] = s = v-std::min(rgb[3*i+0],std::min(rgb[3*i+1],rgb[3*i+2]));
		if( v == rgb[3*i+0] )
			hsv[3*i+0] = (rgb[3*i+1] - rgb[3*i+2]) / (6.*s+1e-10);
		else if( v == rgb[3*i+1] )
			hsv[3*i+0] = (2+rgb[3*i+2] - rgb[3*i+0]) / (6.*s+1e-10);
		else if( v == rgb[3*i+2] )
			hsv[3*i+0] = (4+rgb[3*i+0] - rgb[3*i+1]) / (6.*s+1e-10);
		if( hsv[3*i+0] < 0 )
			hsv[3*i+0] += 1;
	}
}
开发者ID:CUAir,项目名称:edges,代码行数:20,代码来源:color.cpp

示例4: convertRGB

static void convertRGB( Image & luv, const Image & rgb ) {
	if( rgb.C()!= 3 )
		throw std::invalid_argument( "RGB image required!" );
	const int W = rgb.W(), H = rgb.H();
	luv.create( W, H, 3 );
	int i;
	for( i=0; i+3<W*H; i+=4 ) {
		__m128 r = _mm_set_ps( rgb[3*i+0], rgb[3*(i+1)+0], rgb[3*(i+2)+0], rgb[3*(i+3)+0] );
		__m128 g = _mm_set_ps( rgb[3*i+1], rgb[3*(i+1)+1], rgb[3*(i+2)+1], rgb[3*(i+3)+1] );
		__m128 b = _mm_set_ps( rgb[3*i+2], rgb[3*(i+1)+2], rgb[3*(i+2)+2], rgb[3*(i+3)+2] );
		__m128 l,u,v;
		convertRGB<SRGB,type>( l, u, v, r, g, b );
		float * ll = (float*)&l, * uu = (float*)&u, * vv = (float*)&v;
		for( int k=0; k<4; k++ ){
			luv[3*(i+k)+0] = ll[k];
			luv[3*(i+k)+1] = uu[k];
			luv[3*(i+k)+2] = vv[k];
		}
	}
	for( i=0; i<W*H; i++ )
		convertRGB<SRGB,type>( luv[3*i+0],luv[3*i+1],luv[3*i+2], rgb[3*i+0],rgb[3*i+1],rgb[3*i+2] ); 
}
开发者ID:CUAir,项目名称:edges,代码行数:22,代码来源:color.cpp

示例5: extractBoxes

static np::ndarray extractBoxes( const Image &im, const RMatrixXi & b, int W, int H ) {
	// Create the output array
	const int C = im.C();
	const int im_W = im.W();
	
	np::ndarray res = np::empty( make_tuple( b.rows(), H, W, C ), np::dtype::get_builtin<float>() );
	const float * pim = (const float *)im.data();
	float * pres = (float *)res.get_data();
#pragma omp parallel for
	for( int i=0; i<b.rows(); i++ ) {
		// Build the lerp lookup table
		const float Y0=b(i,0), X0=b(i,1);
		const float dy=b(i,2)-Y0-1, dx=b(i,3)-X0-1;
		std::vector< int > x0( W ), y0( H ), x1( W ), y1( H );
		std::vector< float > wx( W ), wy( H );
		for( int j=0; j<H; j++ ) {
			float p = Y0 + j*dy/(H-1);
			y0[j] = floor(p); y1[j] = ceil(p);
			wy[j] = y1[j]-p;
		}
		for( int j=0; j<W; j++ ) {
			float p = X0 + j*dx/(W-1);
			x0[j] = floor(p); x1[j] = ceil(p);
			wx[j] = x1[j]-p;
		}
		
		// Run the lerp
		float * pr = pres + i*H*W*C;
		for( int j=0; j<H; j++ )
			for( int i=0; i<W; i++ ) 
				for( int k=0; k<C; k++ )
					pr[ (j*W+i)*C+k ] =    wx[i] *   wy[j] *pim[ ( y0[j]*im_W+x0[i] )*C+k ]
					                   +   wx[i] *(1-wy[j])*pim[ ( y1[j]*im_W+x0[i] )*C+k ]
					                   +(1-wx[i])*   wy[j] *pim[ ( y0[j]*im_W+x1[i] )*C+k ]
					                   +(1-wx[i])*(1-wy[j])*pim[ ( y1[j]*im_W+x1[i] )*C+k ];
	}
	return res;
}
开发者ID:CUAir,项目名称:edges,代码行数:38,代码来源:imgproc.cpp


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