本文整理汇总了C++中DstView::row_begin方法的典型用法代码示例。如果您正苦于以下问题:C++ DstView::row_begin方法的具体用法?C++ DstView::row_begin怎么用?C++ DstView::row_begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DstView
的用法示例。
在下文中一共展示了DstView::row_begin方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sobel_xy
void sobel_xy(const SrcView& src, const DstView& dst) {
typedef typename channel_type<DstView>::type dst_channel_t;
int max_x = src.width() - 1;
int width = src.width();
for (int y=1; y<src.height()-1; ++y) {
typename SrcView::x_iterator src_it = src.row_begin(y);
typename DstView::x_iterator dst_it = dst.row_begin(y);
for (int x=1; x < max_x; ++x) {
for (int c=0; c< num_channels<rgb8_view_t>::value; ++c) {
dst_channel_t srcPlus1 = src_it[x+width][c]; //TODO should be replaced by line length
dst_channel_t srcMinus1 = src_it[x-width][c];
dst_channel_t sobelY = (srcPlus1 > srcMinus1) ?
srcPlus1 - srcMinus1 :
srcMinus1 - srcPlus1;
srcPlus1 = src_it[x+1][c];
srcMinus1 = src_it[x-1][c];
dst_channel_t sobelX = (srcPlus1 > srcMinus1) ?
srcPlus1 - srcMinus1 :
srcMinus1 - srcPlus1;
dst_it[x][c] = max(sobelX, sobelY);
}
}
}
}
示例2: blur
void blur(const SrcView& src, const DstView& dst) {
typedef typename channel_type<DstView>::type dst_channel_t;
int max_x = src.width() - 1;
int width = src.width();
for (int y=1; y<src.height()-1; ++y) {
typename SrcView::x_iterator src_it = src.row_begin(y);
typename DstView::x_iterator dst_it = dst.row_begin(y);
for (int x=1; x < max_x; ++x) {
for (int c=0; c< num_channels<rgb8_view_t>::value; ++c) {
dst_it[x][c] =
src_it[x-1-width][c] / 16 +
src_it[x-width][c] / 8 +
src_it[x-1-width][c] / 16 +
src_it[x-1][c] / 8 +
src_it[x][c] / 4 +
src_it[x-1][c] / 8 +
src_it[x-1+width][c] / 16 +
src_it[x+width][c] / 8 +
src_it[x-1+width][c] / 16;
}
}
}
}
示例3: runtime_error
inline void boost::gil::rescale_cols(const SrcView& src, const DstView& dst, const Filter& filter)
{
typedef typename SrcView::value_type src_pixel_t;
typedef typename gil::detail::create_accum_pixel_type<src_pixel_t>::type accum_pixel_t;
if (src.height() != dst.height())
{
throw std::runtime_error("rescale_cols: height of source and destination views must match");
}
detail::weight_table weights;
weights.reset(filter, src.width(), dst.width());
detail::weight_table::const_iterator const table_begin = weights.begin();
detail::weight_table::const_iterator const table_end = weights.end();
typedef typename DstView::coord_t coord_t;
coord_t const height = dst.height();
for (coord_t y=0; y<height; y++)
{
detail::rescale_line<accum_pixel_t>(
src.row_begin(y)
, dst.row_begin(y)
, table_begin
, table_end
);
}
}
示例4: resample_pixels
void resample_pixels(const SrcView& src_view, const DstView& dst_view, const MapFn& dst_to_src, Sampler sampler=Sampler()) {
typename DstView::point_t dst_dims=dst_view.dimensions();
typename DstView::point_t dst_p;
//typename mapping_traits<MapFn>::result_type src_p;
for (dst_p.y=0; dst_p.y<dst_dims.y; ++dst_p.y) {
typename DstView::x_iterator xit = dst_view.row_begin(dst_p.y);
for (dst_p.x=0; dst_p.x<dst_dims.x; ++dst_p.x) {
sample(sampler, src_view, transform(dst_to_src, dst_p), xit[dst_p.x]);
}
}
}
示例5: x_gradient
void x_gradient(const SrcView& src, const DstView& dst) {
typedef typename channel_type<DstView>::type dst_channel_t;
for (int y=0; y<src.height(); ++y) {
typename SrcView::x_iterator src_it = src.row_begin(y);
typename DstView::x_iterator dst_it = dst.row_begin(y);
for (int x=1; x<src.width()-1; ++x)
static_transform(src_it[x-1], src_it[x+1], dst_it[x],
halfdiff_cast_channels<dst_channel_t>());
}
}
示例6:
inline void boost::gil::rescale(const SrcView& src, const DstView& dst, const Filter& filter)
{
typedef typename SrcView::value_type src_pixel_t;
typedef typename gil::detail::create_accum_pixel_type<src_pixel_t>::type accum_pixel_t;
// construct weights tables
detail::weight_table horizontal_weights;
horizontal_weights.reset(filter, src.width(), dst.width());
detail::weight_table vertical_weights;
vertical_weights.reset(filter, src.height(), dst.height());
// allocate intermediary pixels row
std::vector<accum_pixel_t> intermediate_row( src.width() );
typedef typename DstView::coord_t coord_t;
coord_t const src_width = src.width();
coord_t const dst_height = dst.height();
for (coord_t y=0; y<dst_height; y++)
{
// create the intermediate row by vertically sampling the source image pixels
detail::weight_table::const_iterator const vtable_begin = vertical_weights.begin() + y;
detail::weight_table::const_iterator const vtable_end = vtable_begin + 1;
for (coord_t x=0; x<src_width; x++)
{
detail::rescale_line<accum_pixel_t>(
src.col_begin(x)
, intermediate_row.begin() + x
, vtable_begin
, vtable_end
);
}
// scale horizontally the intermediate row into the destination row
detail::weight_table::const_iterator const htable_begin = horizontal_weights.begin();
detail::weight_table::const_iterator const htable_end = horizontal_weights.end();
detail::rescale_line<accum_pixel_t>(
intermediate_row.begin()
, dst.row_begin(y)
, htable_begin
, htable_end
);
}
}
示例7: x_gradient
void x_gradient(const SrcView& src, const DstView& dst) {
int max_x = src.width()-1;
for (int y=0; y<src.height(); ++y) {
typename SrcView::x_iterator src_it = src.row_begin(y);
typename DstView::x_iterator dst_it = dst.row_begin(y);
for (int x=1; x < max_x; ++x) {
for (int c=0; c< num_channels<rgb8_view_t>::value; ++c) {
dst_it[x][c] = (src_it[x+1][c] - src_it[x-1][c])/2;
}
}
}
}
示例8: grayToRgbView
void grayToRgbView(const SrcView& src, const DstView& dst) {
typedef typename channel_type<DstView>::type dst_channel_t;
int width = src.width();
for (int y=0; y< src.height(); ++y) {
typename SrcView::x_iterator src_it = src.row_begin(y);
typename DstView::x_iterator dst_it = dst.row_begin(y);
for (int x=0; x < width; ++x) {
dst_channel_t grayValue = (dst_channel_t) src_it[x];
for (int c=0; c< num_channels<rgb8_view_t>::value; ++c) {
dst_it[x][c] = grayValue;
}
}
}
}
示例9: rgbToGrayView
void rgbToGrayView(const SrcView& src, const DstView& dst) {
typedef typename channel_type<DstView>::type dst_channel_t;
int width = src.width();
for (int y=0; y< src.height(); ++y) {
typename SrcView::x_iterator src_it = src.row_begin(y);
typename DstView::x_iterator dst_it = dst.row_begin(y);
for (int x=0; x < width; ++x) {
int combination = 0;
for (int c=0; c< num_channels<rgb8_view_t>::value; ++c) {
combination += src_it[x][c] * RGB_TO_GRAY_INT[c];
}
dst_it[x] = (dst_channel_t) (combination / 100);
}
}
}
示例10: view_multiplies_scalar
inline void view_multiplies_scalar(const SrcView& src,const Scalar& scalar,const DstView& dst) {
BOOST_ASSERT(src.dimensions() == dst.dimensions());
using PIXEL_SRC_REF = typename pixel_proxy<typename SrcView::value_type>::type;
using PIXEL_DST_REF = typename pixel_proxy<typename DstView::value_type>::type;
int height=src.height();
for(int rr=0;rr<height;++rr) {
typename SrcView::x_iterator it_src=src.row_begin(rr);
typename DstView::x_iterator it_dst=dst.row_begin(rr);
typename SrcView::x_iterator it_src_end=src.row_end(rr);
while(it_src!=it_src_end) {
pixel_assigns_t<PixelAccum,PIXEL_DST_REF>()(
pixel_multiplies_scalar_t<PIXEL_SRC_REF,Scalar,PixelAccum>()(*it_src,scalar),
*it_dst);
++it_src; ++it_dst;
}
}
}
示例11: sobel_x
void sobel_x(const SrcView& src, const DstView& dst) {
typedef typename channel_type<DstView>::type dst_channel_t;
int max_x = src.width()-1;
for (int y=0; y<src.height(); ++y) {
typename SrcView::x_iterator src_it = src.row_begin(y);
typename DstView::x_iterator dst_it = dst.row_begin(y);
for (int x=1; x < max_x; ++x) {
for (int c=0; c< num_channels<rgb8_view_t>::value; ++c) {
dst_channel_t srcPlus1 = src_it[x+1][c];
dst_channel_t srcMinus1 = src_it[x-1][c];
dst_it[x][c] = (srcPlus1 > srcMinus1) ?
srcPlus1 - srcMinus1 :
srcMinus1 - srcPlus1;
}
}
}
}
示例12: resample_pixels_progress
// Models MappingFunctionConcept
void resample_pixels_progress( const SrcView& src_view, const DstView& dst_view, const MapFn& dst_to_src, const OfxRectI& procWindow, tuttle::plugin::IProgress* p, Sampler sampler = Sampler() )
{
typename DstView::point_t dst_p;
typename DstView::value_type black;
color_convert( boost::gil::rgba32f_pixel_t( 0.0, 0.0, 0.0, 0.0 ), black );
for( dst_p.y = procWindow.y1; dst_p.y < procWindow.y2; ++dst_p.y )
{
typename DstView::x_iterator xit = dst_view.row_begin( dst_p.y );
for( dst_p.x = procWindow.x1; dst_p.x < procWindow.x2; ++dst_p.x )
{
if( !boost::gil::sample( sampler, src_view, transform( dst_to_src, dst_p ), xit[dst_p.x] ) )
{
xit[dst_p.x] = black; // if it is outside of the source image
}
}
if( p->progressForward() )
return;
}
}