У меня была та же проблема, что и у вас, и мне потребовалось два месяца, чтобы решить эту проблему.
Наконец, я поместил opencv_highgui220d.dll
и opencv_core220d.dll
в каталог index.php
, и этоработает!
Более подробно, мое окружение содержит следующее:
ОС: Windows Vista SP1
HTTP-сервер: Appserv2.5.10 (Apache2.2.8 + php5.2.6)
Root: C: / Appserv / www / test
Root содержит.
index.php:
<?php
exec("cv.exe", $out, $val);
echo $val;
?>
cv.cpp:
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
Mat img = imread("a.jpg");
if(!img.data) return -1;
imwrite("b.jpg",img);
return 0;
}
Используйте Visual Studio 2010 для компиляции,
Настройка проекта:
Use Run-Time Library: /Mtd
VC++ > Include Directories:
C:\Program Files\OpenCV2.2\include
C:\Program Files\OpenCV2.2\include\opencv
VC++ > Library Directory
C:\Program Files\OpenCV2.2\lib
Linker > Additional Dependencies:
C:\Program Files\OpenCV2.2\lib\opencv_core220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_highgui220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_video220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_ml220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_legacy220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_imgproc220d.lib
После сборки поместите cv.exe
в корневой веб-каталог, но получитесообщение об ошибке и получить возвращаемое значение: 0xc0000135
(In $val
).
Google код и знать, что это потеря некоторой DLL, используйте обходчик зависимости (http://www.dependencywalker.com/), чтобы узнать, что ему нужно opencv_highgui220d.dll
и opencv_core220d.dll
.
Так что поместите их в корень сети.