2017-03-10 14 views
0

BoostライブラリのGILを使ってC++で新しく作成した画像内に画像を配置する方法を解明しようとしています。あなたはちょうどそれらをコピーするためにあなたのイメージとcopy_pixelsを配置するsubimage_viewを使用することができますC++のBoostのGILを使って画像内に画像を配置する

#define png_infopp_NULL (png_infopp)NULL 
#define int_p_NULL (int*)NULL 
#include <boost/gil/gil_all.hpp> 
#include <boost/gil/extension/io/png_dynamic_io.hpp> 
using namespace boost::gil; 
int main() 
{ 
    rgb8_image_t img(512, 512); 
    rgb8_image_t img1; 
    rgb8_image_t img2; 
    png_read_image("img1.png", img1);//Code for loading an image 
    png_read_image("img2.png", img2); //Code for loading 2nd image "img2.png" 
    //loading position of the images to an array or some kind of variable 
    //passing in images and postions to the function to apply changes on newly created image with the size of 512, 512 
    png_write_view("output.png", const_view(img)); //saving changes as "output.png" 
} 

image of what i want to do

答えて

1


入力イメージのサイズと出力サブビューが一致するように注意する必要があります。一致しない場合はresize_viewを使用することもできます。そのような
何か:誰でも好奇心旺盛であれば

rgb8_image_t img1; 
jpeg_read_image("img1.jpg", img1); 
rgb8_image_t img2; 
jpeg_read_image("img2.jpg", img2); 

rgb8_image_t out_img(512, 512); 
copy_pixels (view(img1), subimage_view(view(out_img), x, y, width, height)); 
copy_pixels (view(img2), subimage_view(view(out_img), x, y, width, height)); 
png_write_view("output.png", const_view(out_img)); 
0

これがソリューションです。 (PNGをロードするために必要)

How to install Boost

How to install LibPng

#define _CRT_SECURE_NO_DEPRECATE 
#define _SCL_SECURE_NO_WARNINGS 
#define png_infopp_NULL (png_infopp)NULL 
#define int_p_NULL (int*)NULL 
#include <boost/gil/gil_all.hpp> 
#include <boost/gil/extension/io/png_dynamic_io.hpp> 
using namespace boost::gil; 
int main() 
{ 
    rgb8_image_t out_img(512, 512); 
    rgb8_image_t img1; 
    rgb8_image_t img2; 
    png_read_image("img1.png", img1);//Code for loading img1 
    png_read_image("img2.png", img2);//Code for loading img2 
    copy_pixels(view(img1), subimage_view(view(out_img), 0, 0, 50, 50)); 
    copy_pixels(view(img2), subimage_view(view(out_img), 462, 462, 50, 50)); 
    png_write_view("output.png", const_view(out_img)); 

}

それらの#defineのすべてがエラーを示すからのVisual Studioを停止するために必要とされます。

Btwプログラムのディレクトリにimg1.pngとimg2.pngがなければなりません。それ以外の場合はメモリエラーが表示されます。

関連する問題