From patchwork Thu Jun 25 19:59:49 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Samuel Martin X-Patchwork-Id: 488537 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ozlabs.org (Postfix) with ESMTP id 4F328140273 for ; Fri, 26 Jun 2015 06:00:35 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=kjLxfzBB; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 91681A41D8; Thu, 25 Jun 2015 20:00:34 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id I8xH2Z_NX_yd; Thu, 25 Jun 2015 20:00:32 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 81880A41DC; Thu, 25 Jun 2015 20:00:29 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 2657C1CE508 for ; Thu, 25 Jun 2015 20:00:18 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 1FD6395D5D for ; Thu, 25 Jun 2015 20:00:18 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2PTTPO57AdPG for ; Thu, 25 Jun 2015 20:00:17 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by hemlock.osuosl.org (Postfix) with ESMTPS id 41F7095D6E for ; Thu, 25 Jun 2015 20:00:17 +0000 (UTC) Received: by wicgi11 with SMTP id gi11so85802133wic.0 for ; Thu, 25 Jun 2015 13:00:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9XuFyDu9F3lzaxYQQwltx8zGfv+OM7XnG30HUP/UI8k=; b=kjLxfzBBmBxCn59F4KnS8c07jL1nCucauorQcIIyWPW1V1BJ5gqo6Z3wVMTyL+kT2v Pyl3wQPTGa41EjThBWbgLFCJnZ7OvDV4nxri4xFfiwweyi46QjvqdUGCSS+rW/OP59/0 wtKrHkWX41qfpLH7DE94kP3b7vYVAuK01JWGnUblubepKxUPrINuCOAsTCn1KG3BtFoZ sQZMcsmSiCxg9FDwAfhwNIceAXv/QMhW3WAlNzby51VJAXjfF37j6ETN0LgaDGQ3XGOj Vn8YLn5Vn7T8ri02PW6wxTzE8z/9oMXqKg1zQIsS+d+s8AcYhwIMS/pDHhU7vi+EOZAY cF7A== X-Received: by 10.180.39.131 with SMTP id p3mr8900538wik.82.1435262415916; Thu, 25 Jun 2015 13:00:15 -0700 (PDT) Received: from bobook.localdomain (ivr94-4-82-229-165-48.fbx.proxad.net. [82.229.165.48]) by mx.google.com with ESMTPSA id hn7sm47218600wjc.16.2015.06.25.13.00.14 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 25 Jun 2015 13:00:14 -0700 (PDT) From: Samuel Martin To: buildroot@buildroot.org Date: Thu, 25 Jun 2015 21:59:49 +0200 Message-Id: <1435262397-888-9-git-send-email-s.martin49@gmail.com> X-Mailer: git-send-email 2.4.4 In-Reply-To: <1435262397-888-1-git-send-email-s.martin49@gmail.com> References: <1435262397-888-1-git-send-email-s.martin49@gmail.com> Subject: [Buildroot] [PATCH v6 08/16] package/opencv: add python support X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" opencv_python module needs python-numpy because it uses some numpy headers in this wrapper. From its 2.4 release, OpenCV offers python bindings, but they required most of the OpenCV modules to be enabled. Since OpenCV-3.0.0, python bindings have been reworked: - it now supports both python2 and python3 - only built modules supporting wrapped in python will be included in the bindings. Signed-off-by: Samuel Martin Reviewed-by: "Yann E. MORIN" Tested-by: "Yann E. MORIN" --- changes v5->v6: - rebase changes v4->v5: - rebase - update a/r/t tags - update commit log - fix python-numpy selection - add python3 support changes v3->v4: - rebase - rename _OPT -> _OPTS - remove python/numpy patch (merged upstream since opencv bump) changes v2->v3: - rebase - add fetch uri in the opencv's patch (Yann) - move pyhton module knob under the multi-line if block about python deps (Yann) changes v1->v2: - rebase - use patch merged upstream --- package/opencv/Config.in | 12 +++++++++++- package/opencv/opencv.mk | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/package/opencv/Config.in b/package/opencv/Config.in index 3c00525..8ed505e 100644 --- a/package/opencv/Config.in +++ b/package/opencv/Config.in @@ -89,7 +89,17 @@ config BR2_PACKAGE_OPENCV_LIB_PHOTO Include opencv_photo (computational photography) module into the OpenCV build. -comment "opencv_python module requires numpy which is not yet available." +config BR2_PACKAGE_OPENCV_LIB_PYTHON + bool "python" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 \ + || BR2_mips || BR2_mipsel || BR2_powerpc || BR2_powerpc64 \ + || BR2_sh || BR2_x86_64 # python-numpy + depends on !BR2_TOOLCHAIN_USES_UCLIBC || BR2_i386 || BR2_x86_64 # python-numpy + select BR2_PACKAGE_PYTHON_NUMPY + help + Include opencv_python module into the OpenCV build. + No python example is installed. config BR2_PACKAGE_OPENCV_LIB_SHAPE bool "shape" diff --git a/package/opencv/opencv.mk b/package/opencv/opencv.mk index 7211c18..a43de0c 100644 --- a/package/opencv/opencv.mk +++ b/package/opencv/opencv.mk @@ -78,8 +78,6 @@ OPENCV_CONF_OPTS += \ -DBUILD_opencv_ml=$(if $(BR2_PACKAGE_OPENCV_LIB_ML),ON,OFF) \ -DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV_LIB_OBJDETECT),ON,OFF) \ -DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV_LIB_PHOTO),ON,OFF) \ - -DBUILD_opencv_python2=OFF \ - -DBUILD_opencv_python3=OFF \ -DBUILD_opencv_shape=$(if $(BR2_PACKAGE_OPENCV_LIB_SHAPE),ON,OFF) \ -DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV_LIB_STITCHING),ON,OFF) \ -DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV_LIB_SUPERRES),ON,OFF) \ @@ -282,6 +280,37 @@ else OPENCV_CONF_OPTS += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF endif +ifeq ($(BR2_PACKAGE_OPENCV_LIB_PYTHON),y) +ifeq ($(BR2_PACKAGE_PYTHON),y) +OPENCV_CONF_OPTS += \ + -DBUILD_opencv_python2=ON \ + -DBUILD_opencv_python3=OFF \ + -DPYTHON2_EXECUTABLE=$(HOST_DIR)/usr/bin/python2 \ + -DPYTHON2_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) \ + -DPYTHON2_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON_VERSION_MAJOR).so \ + -DPYTHON2_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/numpy/core/include \ + -DPYTHON2_PACKAGES_PATH=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \ + -DPYTHON2_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION) +OPENCV_DEPENDENCIES += python +else +OPENCV_CONF_OPTS += \ + -DBUILD_opencv_python2=OFF \ + -DBUILD_opencv_python3=ON \ + -DPYTHON3_EXECUTABLE=$(HOST_DIR)/usr/bin/python3 \ + -DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)m \ + -DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR)m.so \ + -DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \ + -DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + -DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION) +OPENCV_DEPENDENCIES += python3 +endif +OPENCV_DEPENDENCIES += python-numpy +else +OPENCV_CONF_OPTS += \ + -DBUILD_opencv_python2=OFF \ + -DBUILD_opencv_python3=OFF +endif + # Installation hooks: define OPENCV_CLEAN_INSTALL_DOC $(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/doc