Огромное количество ошибок при компиляции программы с помощью Magick++

Во время компиляции моей программы, использующей библиотеку Magick++, появилось невероятно огромное количество ошибок.

Это командная строка, которую я использовал для ее компиляции (версия g++ 4.9.2, работает на Ubuntu 12.04):

g++ -std=c++14 -g -fopenmp `Magick++-config --cppflags --cxxflags` main.cpp -o glitch_img2 `Magick++-config --ldflags --libs`

Вот код программы:

#include <iostream>
#include <cstdlib>
#include <cstdint>
#include <cstring>
#include <cmath>
#include <string>
#ifdef __OPENMP
    #include <omp.h>
#endif
#include <Magick++.h>

double d_max(double a,double b)
{
    return (a>b) ? a : b;
}

int ui_clip(int x,int a,int b)
{
    return (x<b) ? b : ((x>a) ? a : x);
}

int transform(int x)
{
    return ((x*32+1654)%21+x*11+642)%164%33%16;
}

using namespace std;
using namespace Magick;

int main(int argc,char **argv)
{
    InitializeMagick(*argv);
    Image img1;
    img1.read(argv[1]);

    int size_x = img1.columns();
    int size_y = img1.rows();
    int np = size_x*size_y;
    Image out;
    out.size(Geometry(size_x,size_y));
    double *buff_img1 = new double[3*size_x*size_y];
    double *buff_out  = new double[3*size_x*size_y];

    img1.write(0,0,size_x,size_y,"RGB",DoublePixel,buff_img1);

    int ix, iy;
#ifdef __OPENMP
    #pragma omp for private(ix,iy) schedule(static)
#endif
    for (iy=0;iy<size_y;iy++)
    {
        for (ix=0;ix<size_x;ix++)
        {
            int loc = (size_x*iy+ix)*3;
            double pimg1[3] = {
                buff_img1[3*loc  ],
                buff_img1[3*loc+1],
                buff_img1[3*loc+2]
            };
            int x1 = (ix*(1+transform(ix)))%size_x;
            int y1 = (iy*(1+transform(iy)))%size_y;
            int loc1 = ui_clip((size_x*y1+x1)%np,0,np-1)*3;
            double out_pix[3] = {
                buff_img1[3*loc1  ],
                buff_img1[3*loc1+1],
                buff_img1[3*loc1+2]
            };
            buff_out[3*loc  ] = abs(out_pix[0]-pimg1[0]);
            buff_out[3*loc+1] = abs(out_pix[1]-pimg1[1]);
            buff_out[3*loc+2] = abs(out_pix[2]-pimg1[2]);
        }
    }
    out.read(size_x,size_y,"RGB",DoublePixel,buff_out);
    out.write("Output.png");
}

И эти ошибки размещены здесь.

Что вызывает такие ошибки и как их можно исправить?


РЕДАКТИРОВАТЬ: упомянутое поведение исчезает, когда я удаляю Magick++.h заголовок.

0 ответов

Другие вопросы по тегам