Проблема PHP shell_exec с OpenCV exec (ошибка библиотеки MAMP)

0

Я пытаюсь запустить исполняемый файл OpenCV с shell_exec в простой PHP файл. Когда я запускаю исполняемый файл в терминале, он просто распечатывает инструкции, чтобы он выглядел так:

 Method [0] Perfect, Base-Half : 1.000000, 0.999990 
 Method [1] Perfect, Base-Half : 0.000000, 0.018286 
 Method [2] Perfect, Base-Half : 1.260779, 1.225753 
 Method [3] Perfect, Base-Half : 0.000000, 0.052663 
Done 

Но когда я пытаюсь получить тот же вывод с php, ничего не появляется. Я пробовал играть с другими исполняемыми shell_exec которые не являются OpenCV, и они отлично работают с shell_exec но когда я использую исполняемый файл OpenCV, ничего не появляется.

Heres my php file:

<?php
$argv = "./OpenCV\ Test IMGS/oranges1.jpg";
$test=shell_exec($argv);
echo $test;

Переменная $argv - это то, что я набираю в терминале в том же каталоге и дает мне вывод, который я написал выше. Мой код OpenCV выглядит так:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

/** @function main */
int main( int argc, char** argv )
{
  Mat src_base, hsv_base;
  Mat hsv_half_down;

  /// Load three images with different environment settings
  if( argc < 2 )
    { printf("** Error. Usage: ./compareHist_Demo <image_settings0> <image_setting1> <image_settings2>\n");
      return -1;
    }

  src_base = imread( argv[1], 1 );

  /// Convert to HSV
  cvtColor( src_base, hsv_base, CV_BGR2HSV );

  hsv_half_down = hsv_base( Range( hsv_base.rows/2, hsv_base.rows - 1 ), Range( 0, hsv_base.cols - 1 ) );

  /// Using 30 bins for hue and 32 for saturation
  int h_bins = 50; int s_bins = 60;
  int histSize[] = { h_bins, s_bins };

  // hue varies from 0 to 256, saturation from 0 to 180
  float h_ranges[] = { 0, 256 };
  float s_ranges[] = { 0, 180 };

  const float* ranges[] = { h_ranges, s_ranges };

  // Use the o-th and 1-st channels
  int channels[] = { 0, 1 };

  /// Histograms
  MatND hist_base;
  MatND hist_half_down;

  /// Calculate the histograms for the HSV images
  calcHist( &hsv_base, 1, channels, Mat(), hist_base, 2, histSize, ranges, true, false );
  normalize( hist_base, hist_base, 0, 1, NORM_MINMAX, -1, Mat() );

  calcHist( &hsv_half_down, 1, channels, Mat(), hist_half_down, 2, histSize, ranges, true, false );
  normalize( hist_half_down, hist_half_down, 0, 1, NORM_MINMAX, -1, Mat() );

  /// Apply the histogram comparison methods
  for( int i = 0; i < 4; i++ )
     { int compare_method = i;
       double base_base = compareHist( hist_base, hist_base, compare_method );
       double base_half = compareHist( hist_base, hist_half_down, compare_method );

       printf( " Method [%d] Perfect, Base-Half : %f, %f \n", i, base_base, base_half );
     }

  printf( "Done \n" );

  return 0;
 }

Я проверил свои журналы ошибок, и у меня нет ошибки PHP, но у меня есть еще одна ошибка в моей консоли, я не уверен, что это значит. Вот что он говорит Изображение 174551

Было бы здорово, если бы кто-нибудь мог объяснить мне, что это за ошибка, и как я могу это исправить?

Теги:
opencv
mamp

1 ответ

0

Хорошо после того, как я погубил, мне удалось найти то, что было не так. Похоже, что MAMP меняет свой путь изменения окружающей среды. Я не слишком уверен, что это такое, но кто лучше знает об этом, пожалуйста, будь моим гостем, чтобы объяснить это другим. В любом случае мне просто пришлось прокомментировать две строки $DYLD_LIBRARY_PATH и это решило мою ошибку.

Heres веб-страница, которую я использовал, чтобы помочь мне.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню