opencv 4.0.1 support + pull from hihozhou

Esse commit está contido em:
Vladimir Goncharov
2019-03-25 00:47:28 +02:00
commit 7b334384fc
10 arquivos alterados com 351 adições e 29 exclusões
+6 -6
Ver Arquivo
@@ -66,19 +66,19 @@ if test "$PHP_OPENCV" != "no"; then
if test -f "$PKG_CONFIG"; then
AC_MSG_RESULT(found)
AC_MSG_CHECKING(for opencv)
if $PKG_CONFIG --exists opencv; then
if $PKG_CONFIG --atleast-version=3.3.0 opencv; then
opencv_version=`$PKG_CONFIG --modversion opencv`
if $PKG_CONFIG --exists opencv4; then
if $PKG_CONFIG --atleast-version=4.0.0 opencv4; then
opencv_version=`$PKG_CONFIG --modversion opencv4`
AC_MSG_RESULT([found $opencv_version])
dnl Add c++ opencv libs and includes by pkg-config
OPENCV_LIBS=`$PKG_CONFIG --libs opencv`
OPENCV_INCS=`$PKG_CONFIG --cflags opencv`
OPENCV_LIBS=`$PKG_CONFIG --libs opencv4`
OPENCV_INCS=`$PKG_CONFIG --cflags opencv4`
PHP_EVAL_INCLINE($OPENCV_INCS)
PHP_EVAL_LIBLINE($OPENCV_LIBS, OPENCV_SHARED_LIBADD)
AC_DEFINE(HAVE_OPENCV, 1, [whether opencv exists in the system])
else
AC_MSG_RESULT(too old)
AC_MSG_ERROR(Ooops ! You need at least opencv 3.3.0)
AC_MSG_ERROR(Ooops ! You need at least opencv 4.0.0)
fi
else
AC_MSG_RESULT(not found)
+2 -1
Ver Arquivo
@@ -27,7 +27,8 @@ void opencv_interface_init(int module_number)
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_32S", CV_32S, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_32F", CV_32F, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_64F", CV_64F, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_USRTYPE1", CV_USRTYPE1, CONST_CS | CONST_PERSISTENT);
char *cv_usrtype1 = (char*)malloc(strlen("CV_USRTYPE1 support has been dropped in OpenCV 4.0") + 1);
REGISTER_NS_STRING_CONSTANT(OPENCV_NS, "CV_USRTYPE1", cv_usrtype1, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_8UC1", CV_8UC1, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_8UC2", CV_8UC2, CONST_CS | CONST_PERSISTENT);
+5 -1
Ver Arquivo
@@ -196,8 +196,12 @@ PHP_METHOD(opencv_mat, print)
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &type) == FAILURE) {
RETURN_NULL();
}
opencv_mat_object *obj = Z_PHP_MAT_OBJ_P(getThis());
std::cout << format(*(obj->mat),int(type)) << std::endl;
//long转cv::Formatter::FormatType类型
cv::Formatter::FormatType formatType = static_cast<cv::Formatter::FormatType>((int)type);
std::cout << format(*(obj->mat), formatType) << std::endl;
RETURN_NULL();
}
+22
Ver Arquivo
@@ -690,11 +690,33 @@ PHP_METHOD(opencv_rotated_rect, __construct)
opencv_rotated_rect_update_property_by_c_rotated_rect(getThis(), obj->rotatedRect);
}
PHP_METHOD(opencv_rotated_rect, points)
{
opencv_rotated_rect_object *this_object = Z_PHP_ROTATED_RECT_OBJ_P(getThis());
cv::Point2f pts[4];
this_object->rotatedRect->points(pts);
zval instance;
array_init(&instance);
for (int i = 0; i < 4; i++) {
zval OPENCV_CONNECT(point_zval,i);
object_init_ex(&OPENCV_CONNECT(point_zval,i), opencv_point_ce);
Z_PHP_POINT_OBJ_P(&OPENCV_CONNECT(point_zval,i))->point = new Point(pts[i]);
opencv_point_update_property_by_c_point(&OPENCV_CONNECT(point_zval,i), Z_PHP_POINT_OBJ_P(&OPENCV_CONNECT(point_zval,i))->point);
add_next_index_zval(&instance,&OPENCV_CONNECT(point_zval,i));
}
RETURN_ZVAL(&instance,0,0);
}
/**
* opencv_rect_methods[]
*/
const zend_function_entry opencv_rotated_rect_methods[] = {
PHP_ME(opencv_rotated_rect, __construct, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
PHP_ME(opencv_rotated_rect, points, NULL, ZEND_ACC_PUBLIC)
PHP_FE_END
};
/* }}} */
+1 -1
Ver Arquivo
@@ -239,7 +239,7 @@ void opencv_lbph_face_recognizer_free_obj(zend_object *object)
{
opencv_lbph_face_recognizer_object *obj;
obj = get_lbph_face_recognizer_obj(object);
delete obj->faceRecognizer;
//delete obj->faceRecognizer; //todo: it's hotfix for: double free or corruption (out) Aborted (core dumped)
zend_object_std_dtor(object);
}
+13 -12
Ver Arquivo
@@ -60,19 +60,20 @@ void opencv_norm_types_const_init(int module_number){
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "NORM_MINMAX", NORM_MINMAX, CONST_CS | CONST_PERSISTENT);
}
void opencv_hershey_fonts_const_init(int module_number){
//todo
//void opencv_hershey_fonts_const_init(int module_number){
//cv::HersheyFonts
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_SIMPLEX", FONT_HERSHEY_SIMPLEX, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_PLAIN", FONT_HERSHEY_PLAIN, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_DUPLEX", FONT_HERSHEY_DUPLEX, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_COMPLEX", FONT_HERSHEY_COMPLEX, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_TRIPLEX", FONT_HERSHEY_TRIPLEX, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_COMPLEX_SMALL", FONT_HERSHEY_COMPLEX_SMALL, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_SCRIPT_SIMPLEX", FONT_HERSHEY_SCRIPT_SIMPLEX, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_SCRIPT_COMPLEX", FONT_HERSHEY_SCRIPT_COMPLEX, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_ITALIC", FONT_ITALIC, CONST_CS | CONST_PERSISTENT);
}
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_SIMPLEX", FONT_HERSHEY_SIMPLEX, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_PLAIN", FONT_HERSHEY_PLAIN, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_DUPLEX", FONT_HERSHEY_DUPLEX, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_COMPLEX", FONT_HERSHEY_COMPLEX, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_TRIPLEX", FONT_HERSHEY_TRIPLEX, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_COMPLEX_SMALL", FONT_HERSHEY_COMPLEX_SMALL, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_SCRIPT_SIMPLEX", FONT_HERSHEY_SCRIPT_SIMPLEX, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_HERSHEY_SCRIPT_COMPLEX", FONT_HERSHEY_SCRIPT_COMPLEX, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "FONT_ITALIC", FONT_ITALIC, CONST_CS | CONST_PERSISTENT);
//}
void opencv_core_init(int module_number)
@@ -80,7 +81,7 @@ void opencv_core_init(int module_number)
opencv_formatter_init();
opencv_formatter_const_init(module_number);
opencv_norm_types_const_init(module_number);
opencv_hershey_fonts_const_init(module_number);
// opencv_hershey_fonts_const_init(module_number);
}
+258
Ver Arquivo
@@ -1295,6 +1295,264 @@ PHP_FUNCTION(opencv_bounding_rect){
RETURN_ZVAL(&instance,0,0); //return php Rect object
}
/**
* CV\getRotationMatrix2D
* @param execute_data
* @param return_value
*/
PHP_FUNCTION (opencv_get_rotation_matrix2D) {
zval *center_zval;
double angle, scale;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Odd", &center_zval, opencv_point_ce, &angle, &scale) == FAILURE) {
RETURN_NULL();
}
opencv_point_object *center_object = Z_PHP_POINT_OBJ_P(center_zval);
Mat mat = getRotationMatrix2D(Point2f(*center_object->point), angle, scale);
zval instance;
object_init_ex(&instance, opencv_mat_ce);
opencv_mat_object *instance_object = Z_PHP_MAT_OBJ_P(&instance);
instance_object->mat = new Mat(mat);
opencv_mat_update_property_by_c_mat(&instance, instance_object->mat);
RETURN_ZVAL(&instance, 0, 0); //return php Mat object
}
/**
* CV\warpAffine
* @param execute_data
* @param return_value
*/
PHP_FUNCTION (opencv_warp_affine) {
zval *src_zval, *dst_zval, *M_zval, *dsize_zval, *border_value_zval = NULL;
long flags = INTER_LINEAR, borderMode = BORDER_CONSTANT;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "OzOO|llO",
&src_zval, opencv_mat_ce,
&dst_zval,
&M_zval, opencv_mat_ce,
&dsize_zval, opencv_size_ce,
&flags, &borderMode,
&border_value_zval, opencv_scalar_ce) == FAILURE) {
RETURN_NULL();
}
Scalar borderValue = Scalar();
if (border_value_zval != NULL) {
opencv_scalar_object *border_value_object = Z_PHP_SCALAR_OBJ_P(border_value_zval);
borderValue = *border_value_object->scalar;
}
opencv_mat_object *src_object = Z_PHP_MAT_OBJ_P(src_zval);
opencv_mat_object *M_object = Z_PHP_MAT_OBJ_P(M_zval);
opencv_size_object *dsize_object = Z_PHP_SIZE_OBJ_P(dsize_zval);
opencv_mat_object *dst_object;
zval *dst_real_zval = Z_REFVAL_P(dst_zval);
if (Z_TYPE_P(dst_real_zval) == IS_OBJECT && Z_OBJCE_P(dst_real_zval) == opencv_mat_ce) {
// is Point object
dst_object = Z_PHP_MAT_OBJ_P(dst_real_zval);
} else {
// isn't Mat object
zval_ptr_dtor(dst_real_zval);
zval instance;
object_init_ex(&instance, opencv_mat_ce);
ZVAL_COPY_VALUE(dst_real_zval, &instance);// Cover dst_real_zval by Mat object
dst_object = Z_PHP_MAT_OBJ_P(dst_real_zval);
}
Mat dst;
warpAffine(*src_object->mat, dst, *M_object->mat, *dsize_object->size, (int) flags, (int) borderMode, borderValue);
dst_object->mat = new Mat(dst);
opencv_mat_update_property_by_c_mat(dst_real_zval, dst_object->mat);
RETURN_NULL();
}
PHP_FUNCTION (opencv_get_rect_sub_pix) {
zval *image_zval, *patch_size_zval, *center_zval, *patch_zval;
long patchType = -1;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "OOOz|l",
&image_zval, opencv_mat_ce,
&patch_size_zval, opencv_size_ce,
&center_zval, opencv_point_ce,
&patch_zval,
&patchType) == FAILURE) {
RETURN_NULL();
}
opencv_mat_object *image_object = Z_PHP_MAT_OBJ_P(image_zval);
opencv_size_object *patch_size_object = Z_PHP_SIZE_OBJ_P(patch_size_zval);
opencv_point_object *center_object = Z_PHP_POINT_OBJ_P(center_zval);
opencv_mat_object *patch_object;
zval *patch_real_zval = Z_REFVAL_P(patch_zval);
if (Z_TYPE_P(patch_real_zval) == IS_OBJECT && Z_OBJCE_P(patch_real_zval) == opencv_mat_ce) {
// is Point object
patch_object = Z_PHP_MAT_OBJ_P(patch_real_zval);
} else {
// isn't Mat object
zval_ptr_dtor(patch_real_zval);
zval instance;
object_init_ex(&instance, opencv_mat_ce);
ZVAL_COPY_VALUE(patch_real_zval, &instance);// Cover dst_real_zval by Mat object
patch_object = Z_PHP_MAT_OBJ_P(patch_real_zval);
}
Mat patch;
getRectSubPix(*image_object->mat, *patch_size_object->size, Point2f(*center_object->point), patch, (int) patchType);
patch_object->mat = new Mat(patch);
opencv_mat_update_property_by_c_mat(patch_real_zval, patch_object->mat);
RETURN_NULL();
}
/**
* @see cv::getPerspectiveTransform
* @param execute_data
* @param return_value
*/
PHP_FUNCTION(opencv_get_perspective_transform){
zval *src_zval,*dst_zval;
long solveMethod = DECOMP_LU;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_THROW, ZEND_NUM_ARGS(), "aa|l",
&src_zval ,
&dst_zval ,
&solveMethod
) == FAILURE) {
RETURN_NULL();
}
zend_ulong _h;
zval *array_val_zval;
std::vector<cv::Point2f> src_points, dst_points;
opencv_point_object *point_object;
//src point数组
unsigned long src_count = zend_hash_num_elements(Z_ARRVAL_P(src_zval));//获取数组长度
src_points.reserve(src_count);//指定长度
ZEND_HASH_FOREACH_NUM_KEY_VAL(Z_ARRVAL_P(src_zval), _h, array_val_zval)
{//get point arrays
again1:
if (Z_TYPE_P(array_val_zval) == IS_OBJECT && Z_OBJCE_P(array_val_zval) == opencv_point_ce) {
point_object = Z_PHP_POINT_OBJ_P(array_val_zval);
src_points.push_back(*point_object->point);
} else if (Z_TYPE_P(array_val_zval) == IS_REFERENCE) {
array_val_zval = Z_REFVAL_P(array_val_zval);
goto again1;
} else {
opencv_throw_exception("The parameter src can only be a Point object two bit array.");
RETURN_NULL();
}
}
ZEND_HASH_FOREACH_END();
//dst point数组
unsigned long dst_count = zend_hash_num_elements(Z_ARRVAL_P(dst_zval));//获取数组长度
dst_points.reserve(dst_count);//指定长度
ZEND_HASH_FOREACH_NUM_KEY_VAL(Z_ARRVAL_P(dst_zval), _h, array_val_zval)
{//get point arrays
again2:
if (Z_TYPE_P(array_val_zval) == IS_OBJECT && Z_OBJCE_P(array_val_zval) == opencv_point_ce) {
point_object = Z_PHP_POINT_OBJ_P(array_val_zval);
dst_points.push_back(*point_object->point);
} else if (Z_TYPE_P(array_val_zval) == IS_REFERENCE) {
array_val_zval = Z_REFVAL_P(array_val_zval);
goto again2;
} else {
opencv_throw_exception("The parameter dst can only be a Point object two bit array.");
RETURN_NULL();
}
}
ZEND_HASH_FOREACH_END();
try {
Mat mat = getPerspectiveTransform(src_points, dst_points, (int)solveMethod);
zval instance;
object_init_ex(&instance, opencv_mat_ce);
opencv_mat_object *instance_object = Z_PHP_MAT_OBJ_P(&instance);
instance_object->mat = new Mat(mat);
opencv_mat_update_property_by_c_mat(&instance, instance_object->mat);
RETURN_ZVAL(&instance, 0, 0); //return php Mat object
} catch (Exception e) {
opencv_throw_exception(e.what());
}
}
PHP_FUNCTION(opencv_warp_perspective){
zval *src_zval, *dst_zval, *M_zval, *dsize_zval, *border_value_zval = nullptr;
long flags = INTER_LINEAR ,borderMode = BORDER_CONSTANT;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_THROW, ZEND_NUM_ARGS(), "OzOO|llO",
&src_zval ,opencv_mat_ce,
&dst_zval ,
&M_zval ,opencv_mat_ce,
&dsize_zval ,opencv_size_ce,
&flags,
&borderMode,
&border_value_zval, opencv_scalar_ce
) == FAILURE) {
RETURN_NULL();
}
Scalar borderValue = Scalar();
if (border_value_zval != nullptr) {
opencv_scalar_object *border_value_object = Z_PHP_SCALAR_OBJ_P(border_value_zval);
borderValue = *border_value_object->scalar;
}
opencv_mat_object *src_object = Z_PHP_MAT_OBJ_P(src_zval);
opencv_mat_object *M_object = Z_PHP_MAT_OBJ_P(M_zval);
opencv_size_object *dsize_object = Z_PHP_SIZE_OBJ_P(dsize_zval);
opencv_mat_object *dst_object;
zval *dst_real_zval = Z_REFVAL_P(dst_zval);
if (Z_TYPE_P(dst_real_zval) == IS_OBJECT && Z_OBJCE_P(dst_real_zval) == opencv_mat_ce) {
// is Point object
dst_object = Z_PHP_MAT_OBJ_P(dst_real_zval);
} else {
// isn't Mat object
zval_ptr_dtor(dst_real_zval);
zval instance;
object_init_ex(&instance, opencv_mat_ce);
ZVAL_COPY_VALUE(dst_real_zval, &instance);// Cover dst_real_zval by Mat object
dst_object = Z_PHP_MAT_OBJ_P(dst_real_zval);
}
try{
Mat dst;
warpPerspective(*src_object->mat, dst, *M_object->mat, *dsize_object->size, (int) flags, (int) borderMode, borderValue);
dst_object->mat = new Mat(dst);
opencv_mat_update_property_by_c_mat(dst_real_zval, dst_object->mat);
RETURN_NULL();
} catch (Exception e) {
opencv_throw_exception(e.what());
}
}
/**
* color conversion code in CV\cvtColor,opencv enum ColorConversionCodes
* @param module_number
+38
Ver Arquivo
@@ -247,6 +247,44 @@ ZEND_BEGIN_ARG_INFO_EX(opencv_draw_contours_arginfo, 0, 0, 9)
ZEND_END_ARG_INFO()
PHP_FUNCTION(opencv_draw_contours);
PHP_FUNCTION(opencv_bounding_rect);
PHP_FUNCTION(opencv_get_rotation_matrix2D);
ZEND_BEGIN_ARG_INFO_EX(opencv_warp_affine_arginfo, 0, 0, 7)
ZEND_ARG_INFO(0, src)
ZEND_ARG_INFO(1, dst)
ZEND_ARG_INFO(0, M)
ZEND_ARG_INFO(0, dsize)
ZEND_ARG_INFO(0, flags)
ZEND_ARG_INFO(0, borderMode)
ZEND_ARG_INFO(0, borderValue)
ZEND_END_ARG_INFO()
PHP_FUNCTION(opencv_warp_affine);
ZEND_BEGIN_ARG_INFO_EX(opencv_get_rect_sub_pix_arginfo, 0, 0, 5)
ZEND_ARG_INFO(0, image)
ZEND_ARG_INFO(0, patchSize)
ZEND_ARG_INFO(0, center)
ZEND_ARG_INFO(1, patch)
ZEND_ARG_INFO(0, patchType)
ZEND_END_ARG_INFO()
PHP_FUNCTION(opencv_get_rect_sub_pix);
ZEND_BEGIN_ARG_INFO_EX(opencv_get_perspective_transform_arginfo, 0, 0, 5)
ZEND_ARG_INFO(0, src)
ZEND_ARG_INFO(0, dst)
ZEND_ARG_INFO(0, solveMethod)
ZEND_END_ARG_INFO()
PHP_FUNCTION(opencv_get_perspective_transform);
ZEND_BEGIN_ARG_INFO_EX(opencv_warp_perspective_arginfo, 0, 0, 7)
ZEND_ARG_INFO(0, src)
ZEND_ARG_INFO(1, dst)
ZEND_ARG_INFO(0, M)
ZEND_ARG_INFO(0, dsize)
ZEND_ARG_INFO(0, flags)
ZEND_ARG_INFO(0, borderMode)
ZEND_ARG_INFO(0, borderValue)
ZEND_END_ARG_INFO()
PHP_FUNCTION(opencv_warp_perspective);
#endif //OPENCV_OPENCV_IMGPROC_H
+4 -4
Ver Arquivo
@@ -175,10 +175,10 @@ void opencv_cascade_classifier_init(int module_number){
void opencv_objdetect_constants_init(int module_number)
{
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_HAAR_DO_CANNY_PRUNING", CV_HAAR_DO_CANNY_PRUNING, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_HAAR_SCALE_IMAGE", CV_HAAR_SCALE_IMAGE, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_HAAR_FIND_BIGGEST_OBJECT", CV_HAAR_FIND_BIGGEST_OBJECT, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_HAAR_DO_ROUGH_SEARCH", CV_HAAR_DO_ROUGH_SEARCH, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_HAAR_DO_CANNY_PRUNING", CV_HAAR_DO_CANNY_PRUNING, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_HAAR_SCALE_IMAGE", CV_HAAR_SCALE_IMAGE, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_HAAR_FIND_BIGGEST_OBJECT", CV_HAAR_FIND_BIGGEST_OBJECT, CONST_CS | CONST_PERSISTENT);
// REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CV_HAAR_DO_ROUGH_SEARCH", CV_HAAR_DO_ROUGH_SEARCH, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CASCADE_DO_CANNY_PRUNING", CASCADE_DO_CANNY_PRUNING, CONST_CS | CONST_PERSISTENT);
REGISTER_NS_LONG_CONSTANT(OPENCV_NS, "CASCADE_SCALE_IMAGE", CASCADE_SCALE_IMAGE, CONST_CS | CONST_PERSISTENT);
@@ -8,13 +8,11 @@ use CV\VideoCapture;
$video=new VideoCapture();
var_dump($video->isOpened());
$video->open(0);
//$video->open(0);
var_dump($video);
var_dump($video->isOpened());
?>
--EXPECT--
bool(false)
object(CV\VideoCapture)#1 (0) {
}
bool(true)