我正在尝试在一个简单的PHP文件中运行带有shell_exec
的OpenCV可执行文件。当我在终端中运行可执行文件时,它只打印出语句,如下所示:
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获得相同的输出时,没有任何显示。我试过玩其他不是OpenCV的可执行文件,它们与shell_exec
一起工作正常,但是当我使用OpenCV可执行文件时,没有显示任何内容。
继承我的php文件:
<?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错误,但我在控制台中遇到了另一个错误,但我不确定它的含义。下面是
的内容如果有人可以向我解释这个错误是什么以及我该如何解决它会很棒?
答案 0 :(得分:0)
在谷歌搜索后,我设法找到了什么问题。似乎MAMP改变了它的环境变量路径。我不太确定这是什么,但任何了解它的人都应该是我的客人向其他人解释。无论如何,我只需要注释掉两条$DYLD_LIBRARY_PATH
行并解决了我的错误。
这是我曾经帮助过我的webpage。