我有一个C ++可执行文件,它将图像路径作为输入,并使用opencv在输入图像中进行一些图像处理。当我尝试从命令行运行可执行文件时,它会提供输出。但是当我尝试使用下面的代码从php运行它时它会崩溃并给我一些错误,如下所示。
<?php
$date1 = new DateTime("now");
$name="/var/www/html/FailedBag2.jpg";
$addr="/var/www/html/BagsFeature '$name'";
exec($addr,$data);
var_dump($data);
$date2 = new DateTime("now");
$interval = date_diff($date1, $date2);
echo "Time Taken to Generate Feature in seconds : ".$interval ->format('%s');
?>
我得到的错误是:
OpenCV Error: Assertion failed (m.dims >= 2) in Mat, file /var/www/html/opencvpencv-2.4.5/modules/core/src/matrix.cpp, line 269
terminate called after throwing an instance of 'cv::Exception'
what(): /var/www/html/opencv/opencv-2.4.5/modules/core/src/matrix.cpp:269: ror: (-215) m.dims >= 2 in function Mat
Aborted (core dumped)
array(0) {
}
从命令行我运行exe:
cd /var/www/html
./BagsFeature /var/www/html/FailedBag2.jpg
如果代码有问题,它也会在命令行中崩溃,但它在命令行中运行顺畅,但只有当我们从php调用它时崩溃。如果使用exec调用可执行文件并调用有任何区别从命令行本身?我该如何解决这个问题?
另一个困惑是,如果我使用相同的崩溃图像调用相同的可执行文件,并运行其他计算机的相同php代码。这与php设置有什么关系吗?而这个问题只出现在少数图像中,大部分图像都来自php。