System () из c ++ не выполняет команду ImageMagick правильно - PullRequest
0 голосов
/ 25 января 2020

В рамках своей учебы я работаю над инструментом командной строки для вычисления искажений на изображениях. В настоящее время я сталкиваюсь со следующей проблемой: я хочу вызвать команду ImageMagick через system(). Вывод, который я получаю, следующий:

convert: command not found.

Тем не менее, вызов точно такой же функции непосредственно на терминале работает отлично.

Команда, которую я вызываю,

convert building.jpg -matte -virtual-pixel transparent \
         -distort Perspective \
              '7,40 4,30   4,124 4,123   85,122 100,123   85,2 100,30' \
          building_pers.png 

С http://www.imagemagick.org/Usage/distorts/#perspective_projection

Конечно, имя изображения другое, это всего лишь пример:

Мой код следующий :

int main(int argc, const char * argv[]) {
    enterPoints();
    std::string cmd;
    cmd = create_cmd_l1();
    cmd += create_cmd_l2();
    cmd += create_cmd_l3();
    cmd += create_cmd_l4();

    system(cmd.c_str());

    return 0;
}

Метод enterPoints() просто собирает контрольные точки, с этой частью проблем нет.

create_cmd-commands создает 4 строки всей команды ImageMagick. Вызов всех строк по отдельности приводит к одной и той же ошибке:

    system(create_cmd_l1().c_str());
    system(create_cmd_l2().c_str());
    system(create_cmd_l3().c_str());
    system(create_cmd_l4().c_str()); 
...