From f3e911a2e496edfc37e6c67021340753d4d9897e Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 6 Oct 2017 12:09:35 +0900 Subject: [PATCH 01/80] visualition test(linux/macosx) --- build.bat => bld.bat | 0 docs/Makefile | 197 ++ docs/build.bat | 4 + docs/conf.py | 359 ++++ docs/image/pcl_logo_958x309.png | Bin 0 -> 14345 bytes docs/make.bat | 263 +++ docs/source/_static/css/modified_theme.css | 44 + docs/source/_templates/autosummary/class.rst | 53 + docs/source/compatibility.rst | 144 ++ docs/source/conf.py | 384 ++++ docs/source/contribution.rst | 173 ++ docs/source/developers.rst | 8 + docs/source/index.rst | 17 + docs/source/install.rst | 170 ++ docs/source/license.rst | 64 + .../locale/ja/LC_MESSAGES/compatibility.po | 327 ++++ .../locale/ja/LC_MESSAGES/compatibility.pot | 218 +++ .../locale/ja/LC_MESSAGES/contribution.po | 470 +++++ .../locale/ja/LC_MESSAGES/contribution.pot | 306 ++++ .../locale/ja/LC_MESSAGES/developers.po | 24 + .../locale/ja/LC_MESSAGES/developers.pot | 22 + docs/source/locale/ja/LC_MESSAGES/index.po | 30 + docs/source/locale/ja/LC_MESSAGES/index.pot | 26 + docs/source/locale/ja/LC_MESSAGES/install.po | 205 +++ docs/source/locale/ja/LC_MESSAGES/install.pot | 162 ++ docs/source/locale/ja/LC_MESSAGES/license.po | 120 ++ docs/source/locale/ja/LC_MESSAGES/license.pot | 74 + docs/source/locale/ja/LC_MESSAGES/overview.po | 140 ++ .../source/locale/ja/LC_MESSAGES/overview.pot | 78 + .../source/locale/ja/LC_MESSAGES/reference.po | 1557 ++++++++++++++++ .../locale/ja/LC_MESSAGES/reference.pot | 731 ++++++++ docs/source/locale/ja/LC_MESSAGES/tutorial.po | 1607 +++++++++++++++++ .../source/locale/ja/LC_MESSAGES/tutorial.pot | 1336 ++++++++++++++ docs/source/locale/pot/compatibility.pot | 218 +++ docs/source/locale/pot/contribution.pot | 306 ++++ docs/source/locale/pot/developers.pot | 22 + docs/source/locale/pot/index.pot | 26 + docs/source/locale/pot/install.pot | 162 ++ docs/source/locale/pot/license.pot | 74 + docs/source/locale/pot/overview.pot | 78 + docs/source/locale/pot/reference.pot | 731 ++++++++ docs/source/locale/pot/tutorial.pot | 1336 ++++++++++++++ docs/source/overview.rst | 26 + docs/source/reference/index.rst | 24 + docs/source/reference/pcl.rst | 125 ++ docs/source/spelling_wordlist.txt | 166 ++ docs/source/tutorial/GPU.rst | 28 + docs/source/tutorial/application.rst | 36 + docs/source/tutorial/features.rst | 74 + docs/source/tutorial/filtering.rst | 50 + docs/source/tutorial/index.rst | 21 + docs/source/tutorial/io.rst | 83 + docs/source/tutorial/kdtree.rst | 10 + docs/source/tutorial/keypoint.rst | 12 + docs/source/tutorial/octree.rst | 27 + docs/source/tutorial/rangeImage.rst | 19 + docs/source/tutorial/recognition.rst | 28 + docs/source/tutorial/registration.rst | 60 + docs/source/tutorial/sampleconsensus.rst | 11 + docs/source/tutorial/segmentation.rst | 92 + docs/source/tutorial/surface.rst | 36 + docs/source/tutorial/tracking.rst | 8 + docs/source/tutorial/visualization.rst | 60 + docs/translate.bat | 8 + setup.py | 8 +- 65 files changed, 13274 insertions(+), 4 deletions(-) rename build.bat => bld.bat (100%) create mode 100644 docs/Makefile create mode 100644 docs/build.bat create mode 100644 docs/conf.py create mode 100644 docs/image/pcl_logo_958x309.png create mode 100644 docs/make.bat create mode 100644 docs/source/_static/css/modified_theme.css create mode 100644 docs/source/_templates/autosummary/class.rst create mode 100644 docs/source/compatibility.rst create mode 100644 docs/source/conf.py create mode 100644 docs/source/contribution.rst create mode 100644 docs/source/developers.rst create mode 100644 docs/source/index.rst create mode 100644 docs/source/install.rst create mode 100644 docs/source/license.rst create mode 100644 docs/source/locale/ja/LC_MESSAGES/compatibility.po create mode 100644 docs/source/locale/ja/LC_MESSAGES/compatibility.pot create mode 100644 docs/source/locale/ja/LC_MESSAGES/contribution.po create mode 100644 docs/source/locale/ja/LC_MESSAGES/contribution.pot create mode 100644 docs/source/locale/ja/LC_MESSAGES/developers.po create mode 100644 docs/source/locale/ja/LC_MESSAGES/developers.pot create mode 100644 docs/source/locale/ja/LC_MESSAGES/index.po create mode 100644 docs/source/locale/ja/LC_MESSAGES/index.pot create mode 100644 docs/source/locale/ja/LC_MESSAGES/install.po create mode 100644 docs/source/locale/ja/LC_MESSAGES/install.pot create mode 100644 docs/source/locale/ja/LC_MESSAGES/license.po create mode 100644 docs/source/locale/ja/LC_MESSAGES/license.pot create mode 100644 docs/source/locale/ja/LC_MESSAGES/overview.po create mode 100644 docs/source/locale/ja/LC_MESSAGES/overview.pot create mode 100644 docs/source/locale/ja/LC_MESSAGES/reference.po create mode 100644 docs/source/locale/ja/LC_MESSAGES/reference.pot create mode 100644 docs/source/locale/ja/LC_MESSAGES/tutorial.po create mode 100644 docs/source/locale/ja/LC_MESSAGES/tutorial.pot create mode 100644 docs/source/locale/pot/compatibility.pot create mode 100644 docs/source/locale/pot/contribution.pot create mode 100644 docs/source/locale/pot/developers.pot create mode 100644 docs/source/locale/pot/index.pot create mode 100644 docs/source/locale/pot/install.pot create mode 100644 docs/source/locale/pot/license.pot create mode 100644 docs/source/locale/pot/overview.pot create mode 100644 docs/source/locale/pot/reference.pot create mode 100644 docs/source/locale/pot/tutorial.pot create mode 100644 docs/source/overview.rst create mode 100644 docs/source/reference/index.rst create mode 100644 docs/source/reference/pcl.rst create mode 100644 docs/source/spelling_wordlist.txt create mode 100644 docs/source/tutorial/GPU.rst create mode 100644 docs/source/tutorial/application.rst create mode 100644 docs/source/tutorial/features.rst create mode 100644 docs/source/tutorial/filtering.rst create mode 100644 docs/source/tutorial/index.rst create mode 100644 docs/source/tutorial/io.rst create mode 100644 docs/source/tutorial/kdtree.rst create mode 100644 docs/source/tutorial/keypoint.rst create mode 100644 docs/source/tutorial/octree.rst create mode 100644 docs/source/tutorial/rangeImage.rst create mode 100644 docs/source/tutorial/recognition.rst create mode 100644 docs/source/tutorial/registration.rst create mode 100644 docs/source/tutorial/sampleconsensus.rst create mode 100644 docs/source/tutorial/segmentation.rst create mode 100644 docs/source/tutorial/surface.rst create mode 100644 docs/source/tutorial/tracking.rst create mode 100644 docs/source/tutorial/visualization.rst create mode 100644 docs/translate.bat diff --git a/build.bat b/bld.bat similarity index 100% rename from build.bat rename to bld.bat diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 000000000..f1b318b7e --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,197 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + find source -type d -name generated -print0 | xargs -0 rm -rf + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/python-pcl.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/python-pcl.qhc" + +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/python-pcl" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/python-pcl" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." + + +spelling: + $(SPHINXBUILD) -b spelling $(ALLSPHINXOPTS) $(BUILDDIR)/spelling diff --git a/docs/build.bat b/docs/build.bat new file mode 100644 index 000000000..aa74c92c0 --- /dev/null +++ b/docs/build.bat @@ -0,0 +1,4 @@ +@ECHO OFF + +sphinx-intl build +make clean html \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 000000000..f3b02a5d8 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,359 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# pcl documentation build configuration file, created by +# sphinx-quickstart on Mon Jul 31 16:25:14 2017. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os +import shlex + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.todo', + 'sphinx.ext.viewcode', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = 'pcl' +copyright = '2017, Author' +author = 'Author' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '' +# The full version, including alpha/beta/rc tags. +release = '' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = 'en' + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'pcldoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', + +# Latex figure (float) alignment +#'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'pcl.tex', 'pcl Documentation', + 'Author', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'pcl', 'pcl Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'pcl', 'pcl Documentation', + author, 'pcl', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project +epub_author = author +epub_publisher = author +epub_copyright = copyright + +# The basename for the epub file. It defaults to the project name. +#epub_basename = project + +# The HTML theme for the epub output. Since the default themes are not optimized +# for small screen space, using the same theme for HTML and epub output is +# usually not wise. This defaults to 'epub', a theme designed to save visual +# space. +#epub_theme = 'epub' + +# The language of the text. It defaults to the language option +# or 'en' if the language is not set. +#epub_language = '' + +# The scheme of the identifier. Typical schemes are ISBN or URL. +#epub_scheme = '' + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +#epub_identifier = '' + +# A unique identification for the text. +#epub_uid = '' + +# A tuple containing the cover image and cover page html template filenames. +#epub_cover = () + +# A sequence of (type, uri, title) tuples for the guide element of content.opf. +#epub_guide = () + +# HTML files that should be inserted before the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_pre_files = [] + +# HTML files shat should be inserted after the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_post_files = [] + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# The depth of the table of contents in toc.ncx. +#epub_tocdepth = 3 + +# Allow duplicate toc entries. +#epub_tocdup = True + +# Choose between 'default' and 'includehidden'. +#epub_tocscope = 'default' + +# Fix unsupported image types using the Pillow. +#epub_fix_images = False + +# Scale large images. +#epub_max_image_width = 0 + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#epub_show_urls = 'inline' + +# If false, no index is generated. +#epub_use_index = True diff --git a/docs/image/pcl_logo_958x309.png b/docs/image/pcl_logo_958x309.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8b3130031b21f89a4712aa21d1c01ada3fe3bd GIT binary patch literal 14345 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 where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + echo. coverage to run coverage check of the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + + +REM Check if sphinx-build is available and fallback to Python version if any +%SPHINXBUILD% 2> nul +if errorlevel 9009 goto sphinx_python +goto sphinx_ok + +:sphinx_python + +set SPHINXBUILD=python -m sphinx.__init__ +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +:sphinx_ok + + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\python-pcl.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\python-pcl.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "coverage" ( + %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage + if errorlevel 1 exit /b 1 + echo. + echo.Testing of coverage in the sources finished, look at the ^ +results in %BUILDDIR%/coverage/python.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +:end diff --git a/docs/source/_static/css/modified_theme.css b/docs/source/_static/css/modified_theme.css new file mode 100644 index 000000000..e0d587f88 --- /dev/null +++ b/docs/source/_static/css/modified_theme.css @@ -0,0 +1,44 @@ +@import url('theme.css'); + +/* Main background color modification */ +.btn-info, .wy-menu-vertical a:active, .wy-side-nav-search, .wy-side-nav-search img, .wy-nav .wy-menu-vertical a:hover, .wy-nav-top img, .wy-tray-item-info, .wy-side-nav-search, .wy-dropdown-menu > dd > a:hover, .wy-dropdown-menu a:hover, .wy-nav-top { + background-color: #70c162 !important; +} + +.wy-side-nav-search input[type=text] { + border-color: #72a424 !important; +} + +.rst-content .note .admonition-title { + background-color: #c9c9c9 !important; +} + +.rst-content .note { + background-color: #e3e3e3 !important; +} + + +/* code style */ +.rst-content table.longtable.docutils code { + font-size: 100% !important; + background-color: transparent !important; + border: none !important; +} + +.rst-content a.reference code { + color: #3399cc !important; +} + +.rst-content a.reference code:hover { + text-decoration: underline !important; + color: #3366cc !important; +} + + +/* rubric */ +.rst-content .class .rubric { + color: #333333; + background-color: #aaeeaa; + padding: 0.2em 0 0.2em 1em; + border-top: solid 0.3em #66cc66; +} diff --git a/docs/source/_templates/autosummary/class.rst b/docs/source/_templates/autosummary/class.rst new file mode 100644 index 000000000..04abddc2e --- /dev/null +++ b/docs/source/_templates/autosummary/class.rst @@ -0,0 +1,53 @@ +{{ fullname }} +{{ underline }} + +.. currentmodule:: {{ module }} + +.. autoclass:: {{ objname }} + + .. + Methods + +{% block methods %} + + .. rubric:: Methods + + .. + Special methods + +{% for item in ('__call__', '__enter__', '__exit__', '__getitem__', '__setitem__', '__len__', '__next__', '__iter__', '__copy__') %} +{% if item in all_methods %} + .. automethod:: {{ item }} +{% endif %} +{%- endfor %} + + .. + Ordinary methods + +{% for item in methods %} +{% if item not in ('__init__',) %} + .. automethod:: {{ item }} +{% endif %} +{%- endfor %} + + .. + Special methods + +{% for item in ('__eq__', '__ne__', '__lt__', '__le__', '__gt__', '__ge__', '__nonzero__', '__bool__') %} +{% if item in all_methods %} + .. automethod:: {{ item }} +{% endif %} +{%- endfor %} +{% endblock %} + + .. + Atributes + +{% block attributes %} {% if attributes %} + + .. rubric:: Attributes + +{% for item in attributes %} + .. autoattribute:: {{ item }} +{%- endfor %} +{% endif %} {% endblock %} diff --git a/docs/source/compatibility.rst b/docs/source/compatibility.rst new file mode 100644 index 000000000..e4b32370c --- /dev/null +++ b/docs/source/compatibility.rst @@ -0,0 +1,144 @@ +API Compatibility Policy +======================== + +This document expresses the design policy on compatibilities of python-pcl APIs. +Development team should obey this policy on deciding to add, extend, and change APIs and their behaviors. + +This document is written for both users and developers. +Users can decide the level of dependencies on python-pcl implementations in their codes based on this document. +Developers should read through this document before creating pull requests that contain changes on the interface. +Note that this document may contain ambiguities on the level of supported compatibilities. + + +Versioning and Backward Compatibilities +--------------------------------------- + +The updates of python-pcl are classified into three levels: major, minor, and revision. +These types have distinct levels of backward compatibilities. + +- **Major update** contains disruptive changes that break the backward compatibility. +- **Minor update** contains addition and extension to the APIs keeping the supported backward compatibility. +- **Revision update** contains improvements on the API implementations without changing any API specifications. + +Note that we do not support full backward compatibility, which is almost infeasible for Python-based APIs, since there is no way to completely hide the implementation details. + + +Processes to Break Backward Compatibilities +------------------------------------------- + +Deprecation, Dropping, and Its Preparation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Any APIs may be *deprecated* at some minor updates. +In such a case, the deprecation note is added to the API documentation, and the API implementation is changed to fire deprecation warning (if possible). +There should be another way to reimplement the same things previously written with the deprecated APIs. + +Any APIs may be marked as *to be dropped in the future*. +In such a case, the dropping is stated in the documentation with the major version number on which the API is planned to be dropped, and the API implementation is changed to fire the future warning (if possible). + +The actual dropping should be done through the following steps: + +- Make the API deprecated. + At this point, users should not need the deprecated API in their new application codes. +- After that, mark the API as *to be dropped in the future*. + It must be done in the minor update different from that of the deprecation. +- At the major version announced in the above update, drop the API. + +Consequently, it takes at least two minor versions to drop any APIs after the first deprecation. + +API Changes and Its Preparation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Any APIs may be marked as *to be changed in the future* for changes without backward compatibility. +In such a case, the change is stated in the documentation with the version number on which the API is planned to be changed, and the API implementation is changed to fire the future warning on the certain usages. + +The actual change should be done in the following steps: + +- Announce that the API will be changed in the future. + At this point, the actual version of change need not be accurate. +- After the announcement, mark the API as *to be changed in the future* with version number of planned changes. + At this point, users should not use the marked API in their new application codes. +- At the major update announced in the above update, change the API. + + +Supported Backward Compatibility +-------------------------------- + +This section defines backward compatibilities that minor updates must maintain. + +Documented Interface +~~~~~~~~~~~~~~~~~~~~ + +python-pcl has the official API documentation. +Many applications can be written based on the documented features. +We support backward compatibilities of documented features. +In other words, codes only based on the documented features run correctly with minor/revision-updated versions. + +Developers are encouraged to use apparent names for objects of implementation details. +For example, attributes outside of the documented APIs should have one or more underscores at the prefix of their names. + +.. _undocumented_behavior: + +Undocumented behaviors +~~~~~~~~~~~~~~~~~~~~~~ + +Behaviors of python-pcl implementation not stated in the documentation are undefined. +Undocumented behaviors are not guaranteed to be stable between different minor/revision versions. + +Minor update may contain changes to undocumented behaviors. +For example, suppose an API X is added at the minor update. +In the previous version, attempts to use X cause AttributeError. +This behavior is not stated in the documentation, so this is undefined. +Thus, adding the API X in minor version is permissible. + +Revision update may also contain changes to undefined behaviors. +Typical example is a bug fix. +Another example is an improvement on implementation, which may change the internal object structures not shown in the documentation. +As a consequence, **even revision updates do not support compatibility of pickling, unless the full layout of pickled objects is clearly documented.** + +Documentation Error +~~~~~~~~~~~~~~~~~~~ + +Compatibility is basically determined based on the documentation, though it sometimes contains errors. +It may make the APIs confusing to assume the documentation always stronger than the implementations. +We therefore may fix the documentation errors in any updates that may break the compatibility in regard to the documentation. + +.. note:: + Developers MUST NOT fix the documentation and implementation of the same functionality at the same time in revision updates as "bug fix". + Such a change completely breaks the backward compatibility. + If you want to fix the bugs in both sides, first fix the documentation to fit it into the implementation, and start the API changing procedure described above. + +Object Attributes and Properties +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Object attributes and properties are sometimes replaced by each other at minor updates. +It does not break the user codes, except the codes depend on how the attributes and properties are implemented. + +Functions and Methods +~~~~~~~~~~~~~~~~~~~~~ + +Methods may be replaced by callable attributes keeping the compatibility of parameters and return values in minor updates. +It does not break the user codes, except the codes depend on how the methods and callable attributes are implemented. + +Exceptions and Warnings +~~~~~~~~~~~~~~~~~~~~~~~ + +The specifications of raising exceptions are considered as a part of standard backward compatibilities. +No exception is raised in the future versions with correct usages that the documentation allows, unless the API changing process is completed. + +On the other hand, warnings may be added at any minor updates for any APIs. +It means minor updates do not keep backward compatibility of warnings. + + +Installation Compatibility +-------------------------- + +The installation process is another concern of compatibilities. +We support environmental compatibilities in the following ways. + +- Supporting optional packages/libraries may be done in minor updates (e.g. supporting h5py in optional features). + +.. note:: + The installation compatibility does not guarantee that all the features of python-pcl correctly run on supported environments. + It may contain bugs that only occurs in certain environments. + Such bugs should be fixed in some updates. diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 000000000..3f821bbc1 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,384 @@ +# -*- coding: utf-8 -*- +# +# pcl documentation build configuration file, created by +# sphinx-quickstart on Sun May 10 12:22:10 2015. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import inspect +import os +import pkg_resources +import six +import sys + + +__version__ = pkg_resources.get_distribution('python-pcl').version + +on_rtd = os.environ.get('READTHEDOCS', None) == 'True' + +locale_dirs = ["locale"] + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ['sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.doctest', + 'sphinx.ext.intersphinx', + 'sphinx.ext.mathjax', + 'sphinx.ext.napoleon', + 'sphinx.ext.linkcode'] + +try: + import sphinxcontrib.spelling # noqa + extensions.append('sphinxcontrib.spelling') +except ImportError: + pass + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'python-pcl' +copyright = u'2017, Tooru Oonuma.' +author = u'Tooru Oonuma' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = __version__ +# The full version, including alpha/beta/rc tags. +release = __version__ + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +# language = None +language = "ja" + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + +# Napoleon settings +napoleon_use_ivar = True +napoleon_include_special_with_doc = True + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +if not on_rtd: + html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +html_style = 'css/modified_theme.css' + +if on_rtd: + html_context = { + 'css_files': [ + 'https://media.readthedocs.org/css/sphinx_rtd_theme.css', + 'https://media.readthedocs.org/css/readthedocs-doc-embed.css', + '_static/css/modified_theme.css', + ], + } + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'python-pcldoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + #'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + #'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + #'preamble': '', + + # Latex figure (float) alignment + #'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'python-pcl.tex', u'python-pcl Documentation', + u'Preferred Networks, inc. and Preferred Infrastructure, inc.', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'python-pcl', u'python-pcl Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'python-pcl', u'python-pcl Documentation', + author, 'python-pcl', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + +autosummary_generate = True + +intersphinx_mapping = { + 'python': ('https://docs.python.org/3/', None), + 'numpy': ('http://docs.scipy.org/doc/numpy/', None), +} + +doctest_global_setup = ''' +import numpy as np +import pcl # TODO(okuta) : Remove this line +np.random.seed(0) +''' + +spelling_lang = 'en_US' +spelling_word_list_filename = 'spelling_wordlist.txt' + + +def _import_object_from_name(module_name, fullname): + obj = sys.modules.get(module_name) + if obj is None: + return None + for comp in fullname.split('.'): + obj = getattr(obj, comp) + return obj + + +def linkcode_resolve(domain, info): + if domain != 'py' or not info['module']: + return None + + rtd_version = os.environ.get('READTHEDOCS_VERSION') + if rtd_version == 'latest': + tag = 'master' + else: + tag = 'v{}'.format(__version__) + repo_root_dir = os.path.realpath('..') + + # Import the object from module path + obj = _import_object_from_name(info['module'], info['fullname']) + + # Get the source file name and line number at which obj is defined. + try: + filename = inspect.getsourcefile(obj) + except TypeError: + # obj is not a module, class, function, ..etc. + return None + + # inspect can return None for cython objects + if filename is None: + return None + + # Get the source line number + _, linenum = inspect.getsourcelines(obj) + assert isinstance(linenum, six.integer_types) + + filename = os.path.realpath(filename) + if not filename.startswith(repo_root_dir): + return None + relpath = os.path.relpath(filename, repo_root_dir) + + return 'https://github.com/python-pcl/python-pcl/blob/{}/{}#L{}'.format( + tag, relpath, linenum) diff --git a/docs/source/contribution.rst b/docs/source/contribution.rst new file mode 100644 index 000000000..7ac8387f4 --- /dev/null +++ b/docs/source/contribution.rst @@ -0,0 +1,173 @@ +python-pcl Contribution Guide +============================= + +This is a guide for all contributions to python-pcl. +The development of python-pcl is running on `the official repository at GitHub `_. +Anyone that wants to register an issue or to send a pull request should read through this document. + +Classification of Contributions +------------------------------- + +There are several ways to contribute to python-pcl community: + +1. Registering an issue +2. Sending a pull request (PR) + +This document mainly focuses on 1 and 2, though other contributions are also appreciated. + +Release and Milestone +--------------------- + +We are using `GitHub Flow `_ as our basic working process. +In particular, we are using the master branch for our development, and releases are made as tags. + +Releases are classified into three groups: major, minor, and revision. +This classification is based on following criteria: + +- **Major update** contains disruptive changes that break the backward compatibility. +- **Minor update** contains additions and extensions to the APIs keeping the supported backward compatibility. +- **Revision update** contains improvements on the API implementations without changing any API specification. + +The release classification is reflected into the version number x.y.z, where x, y, and z corresponds to major, minor, and revision updates, respectively. + +We set a milestone for an upcoming release. +The milestone is of name 'vX.Y.Z', where the version number represents a revision release at the outset. +If at least one *feature* PR is merged in the period, we rename the milestone to represent a minor release (see the next section for the PR types). + +See also :doc:`compatibility`. + +Issues and PRs +-------------- + +Issues and PRs are classified into following categories: + +* **Bug**: bug reports (issues) and bug fixes (PRs) +* **Enhancement**: implementation improvements without breaking the interface +* **Feature**: feature requests (issues) and their implementations (PRs) +* **NoCompat**: disrupts backward compatibility +* **Test**: test fixes and updates +* **Document**: document fixes and improvements +* **Example**: fixes and improvements on the examples +* **Install**: fixes installation script +* **Contribution-Welcome**: issues that we request for contribution (only issues are categorized to this) +* **Other**: other issues and PRs + +Issues and PRs are labeled by these categories. +This classification is often reflected into its corresponding release category: Feature issues/PRs are contained into minor/major releases and NoCompat issues/PRs are contained into major releases, while other issues/PRs can be contained into any releases including revision ones. + +On registering an issue, write precise explanations on what you want python-pcl to be. +Bug reports must include necessary and sufficient conditions to reproduce the bugs. +Feature requests must include **what** you want to do (and **why** you want to do, if needed). +You can contain your thoughts on **how** to realize it into the feature requests, though **what** part is most important for discussions. + +If you can write code to fix an issue, send a PR to the master branch. +Before writing your code for PRs, read through the :ref:`coding-guide`. +The description of any PR must contain a precise explanation of **what** and **how** you want to do; it is the first documentation of your code for developers, a very important part of your PR. + +Once you send a PR, it is automatically tested on `Travis CI `_ for Linux and Mac OS X, and on `AppVeyor `_ for Windows. +Your PR need to pass at least the test for Linux/MacOSX on Travis CI and Windows on AppVeyor. +After the automatic test passes, some of the core developers will start reviewing your code. +Note that this automatic PR test only includes CPU tests. + +Even if your code is not complete, you can send a pull request as a *work-in-progress PR* by putting the ``[WIP]`` prefix to the PR title. +If you write a precise explanation about the PR, core developers and other contributors can join the discussion about how to proceed the PR. + +.. _coding-guide: + +Coding Guidelines +----------------- + +We use `PEP8 `_ and a part of `OpenStack Style Guidelines `_ related to general coding style as our basic style guidelines. + +To check your code, use ``autopep8`` and ``flake8`` command installed by ``hacking`` package:: + + $ pip install autopep8 hacking + $ autopep8 --global-config .pep8 path/to/your/code.py + $ flake8 path/to/your/code.py + +To check Cython code, use ``.flake8.cython`` configuration file:: + + $ flake8 --config=.flake8.cython path/to/your/cython/code.pyx + +The ``autopep8`` supports automatically correct Python code to conform to the PEP 8 style guide:: + + $ autopep8 --in-place --global-config .pep8 path/to/your/code.py + +The ``flake8`` command lets you know the part of your code not obeying our style guidelines. +Before sending a pull request, be sure to check that your code passes the ``flake8`` checking. + +Note that ``flake8`` command is not perfect. +It does not check some of the style guidelines. +Here is a (not-complete) list of the rules that ``flake8`` cannot check. + +* Relative imports are prohibited. [H304] +* Importing non-module symbols is prohibited. +* Import statements must be organized into three parts: standard libraries, third-party libraries, and internal imports. [H306] + +In addition, we restrict the usage of *shortcut symbols* in our code base. +They are symbols imported by packages and sub-packages of ``python-pcl``. +**It is not allowed to use such shortcuts in the ``python-pcl`` library implementation**. +Note that you can still use them in ``tests`` and ``examples`` directories. + +Once you send a pull request, your coding style is automatically checked by ``Travis CI `_ for Linux and Mac OS X, and on `AppVeyor `_ for Windows. +The reviewing process starts after the check passes. + +The python-pcl is designed based on PointCloudLibrary's API design. python-pcl's source code and documents contain the original PointCloudLibrary ones. +Please note the followings when writing the document. + +* In order to identify overlapping parts, it is preferable to add some remarks + that this document is just copied or altered from the original one. It is + also preferable to briefly explain the specification of the function in a + short paragraph, and refer to the corresponding function in PointCloudLibrary so that + users can read the detailed document. However, it is possible to include a + complete copy of the document with such a remark if users cannot summarize + in such a way. +* If a function in python-pcl only implements a limited amount of features in the + original one, users should explicitly describe only what is implemented in + the document. + + +Testing Guidelines +------------------ + +Testing is one of the most important part of your code. +You must test your code by unit tests following our testing guidelines. +Note that we are using the nose package and the mock package for testing, so install nose and mock before writing your code:: + + $ pip install nose mock + +In order to run unit tests at the repository root, you first have to build Cython files in place by running the following command:: + + $ python setup.py develop + +Once the Cython modules are built, you can run unit tests simply by running ``nosetests`` command at the repository root:: + + $ nosetests + +Tests are put into the ``tests/python-pcl_tests`` and ``tests/install_tests`` directories. +These have the same structure as that of ``python-pcl`` and ``install`` directories, respectively. +In order to enable test runner to find test scripts correctly, we are using special naming convention for the test subdirectories and the test scripts. + +* The name of each subdirectory of ``tests`` must end with the ``_tests`` suffix. +* The name of each test script must start with the ``test_`` prefix. + +Following this naming convention, you can run all the tests by just typing ``nosetests`` at the repository root:: + + $ nosetests + +Or you can also specify a root directory to search test scripts from:: + + $ nosetests tests/python-pcl_tests # to just run tests of python-pcl + $ nosetests tests/install_tests # to just run tests of installation modules + +If you modify the code related to existing unit tests, you must run appropriate commands. + +There are many examples of unit tests under the ``tests`` directory. +They simply use the ``unittest`` package of the standard library. + +Once you send a pull request, your code is automatically tested by `Travis-CI `_ and `Appveyor `_. +The reviewing process starts after the test passes. + +.. note:: + Some of numerically unstable tests might cause errors irrelevant to your changes. + In such a case, we ignore the failures and go on to the review process, so do not worry about it. diff --git a/docs/source/developers.rst b/docs/source/developers.rst new file mode 100644 index 000000000..db50e62f6 --- /dev/null +++ b/docs/source/developers.rst @@ -0,0 +1,8 @@ +========================= +For python-pcl Developers +========================= + +.. toctree:: + + contribution + compatibility diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 000000000..bb6cec7ab --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,17 @@ +============================================ +python-pcl -- PointCloudLibrary-like API +============================================ + +This is the `python-pcl `_ documentation. + +.. module:: python-pcl + +.. toctree:: + :maxdepth: 1 + + overview + install + tutorial/index + reference/index + developers + license diff --git a/docs/source/install.rst b/docs/source/install.rst new file mode 100644 index 000000000..d57662aed --- /dev/null +++ b/docs/source/install.rst @@ -0,0 +1,170 @@ +Installation Guide +================== + +.. contents:: :local: + +Recommended Environments +------------------------ + +We recommend these Linux distributions. + +* `Ubuntu `_ 14.04/16.04 LTS 64bit +* `MacOS `_ 10.10/10.11/10.12 +* `Windows `_ 7/8.1/10 64bit + +The following versions of Python can be used: 2.7.6+, 3.5.1+, and 3.6.0+. + +.. note:: + + We are testing python-pcl automatically with Jenkins, where all the above *recommended* environments are tested. + +python-pcl is supported on Python 2.7.6+, 3.5.1+, 3.6.0+. +python-pcl uses C++ compiler such as g++. +You need to install it before installing python-pcl. +This is typical installation method for each platform:: + + # Ubuntu 14.04 + $ apt-get install g++ + + # MacOS + brew update >/dev/null + brew install homebrew/boneyard/pyenv-pip-rehash + brew tap homebrew/science + brew search versions/pcl + brew install pcl --without-qt + + # Windows + `Gtk+ `_ + `Visual Studio 2015 C++ Compiler Tools `_ + + set Environment variable + 1.PCL_ROOT + $(PCL Install FolderPath) + + 2.PATH + (pcl 1.6.0) $(PCL_ROOT)/bin/;$(OPEN_NI_ROOT)/Tools;$(VTK_ROOT)/bin; + (pcl 1.8.1) $(PCL_ROOT)/bin/;$(OPEN_NI2_ROOT)/Tools;$(VTK_ROOT)/bin; + +If you use old ``setuptools``, upgrade it:: + + $ pip install -U setuptools + + +Dependencies +------------ + +Before installing python-pcl, we recommend to upgrade ``setuptools`` if you are using an old one:: + + $ pip install -U setuptools + +The following Python packages are required to install python-pcl. +The latest version of each package will automatically be installed if missing. + +* `PointCloudLibrary `_ 1.6 1.7 1.8 +* `NumPy `_ 1.9, 1.10, 1.11, 1.12, 1.13 +* `Cython `_ 0.25.2 + +Install python-pcl +------------------ + +Install python-pcl via pip +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +We recommend to install python-pcl via pip:: + + $ pip install python-pcl + +.. note:: + + All optional PointCloudLibrary related libraries, need to be installed before installing python-pcl. + After you update these libraries, please reinstall python-pcl because you need to compile and link to the newer version of them. + + +Install python-pcl from source +~~~~~~~~~~~~~~~~~~~~~~~~ + +The tarball of the source tree is available via ``pip download python-pcl`` or from `the release notes page `_. +You can use ``setup.py`` to install python-pcl from the tarball:: + + $ tar zxf python-pcl-x.x.x.tar.gz + $ cd python-pcl-x.x.x + $ python setup.py install + +You can also install the development version of python-pcl from a cloned Git repository:: + + $ git clone https://github.com/google/python-pcl.git + $ cd pcl/Python + $ python setup.py install + + +.. _install_error: + +When an error occurs... +~~~~~~~~~~~~~~~~~~~~~~~ + +Use ``-vvvv`` option with ``pip`` command. +That shows all logs of installation. +It may help you:: + + $ pip install python-pcl -vvvv + + +.. _install_PointCloudLibrary: + +Install python-pcl with pcl.dll +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + +Install python-pcl for developers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +python-pcl uses Cython (>=0.25). +Developers need to use Cython to regenerate C++ sources from ``pyx`` files. +We recommend to use ``pip`` with ``-e`` option for editable mode:: + + $ pip install -U cython + $ cd /path/to/python-pcl/source + $ pip install -e . + +Users need not to install Cython as a distribution package of python-pcl only contains generated sources. + + +Uninstall python-pcl +-------------------- + +Use pip to uninstall python-pcl:: + + $ pip uninstall python-pcl + +.. note:: + + When you upgrade python-pcl, ``pip`` sometimes install the new version without removing the old one in ``site-packages``. + In this case, ``pip uninstall`` only removes the latest one. + To ensure that python-pcl is completely removed, run the above command repeatedly until ``pip`` returns an error. + + +Upgrade python-pcl +------------------ + +Just use ``pip`` with ``-U`` option:: + + $ pip install -U python-pcl + + +Reinstall python-pcl +-------------------- + +If you want to reinstall python-pcl, please uninstall python-pcl and then install it. +We recommend to use ``--no-cache-dir`` option as ``pip`` sometimes uses cache:: + + $ pip uninstall python-pcl + $ pip install python-pcl --no-cache-dir + +When you install python-pcl without PointCloudLibrary, and after that you want to use PointCloudLibrary, please reinstall python-pcl. +You need to reinstall python-pcl when you want to upgrade PointCloudLibrary. + + +FAQ +--- + diff --git a/docs/source/license.rst b/docs/source/license.rst new file mode 100644 index 000000000..68ce952fe --- /dev/null +++ b/docs/source/license.rst @@ -0,0 +1,64 @@ +License +======= + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +python-pcl +---------- + +The python-pcl is designed based on Point Cloud Library's API. +python-pcl's source code and documents contain the original Point Cloud Library ones. + + +Software License Agreement (BSD License) + +Point Cloud Library (PCL) - www.pointclouds.org +Copyright (c) 2009-2012, Willow Garage, Inc. +Copyright (c) 2012-, Open Perception, Inc. +Copyright (c) XXX, respective authors. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of the copyright holder(s) nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/docs/source/locale/ja/LC_MESSAGES/compatibility.po b/docs/source/locale/ja/LC_MESSAGES/compatibility.po new file mode 100644 index 000000000..d701b0a08 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/compatibility.po @@ -0,0 +1,327 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2015, Preferred Networks, inc. and Preferred Infrastructure, +# inc. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 11:33+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.4.0\n" + +#: ../../source/compatibility.rst:2 +msgid "API Compatibility Policy" +msgstr "API݊|V[" + +#: ../../source/compatibility.rst:4 +msgid "" +"This document expresses the design policy on compatibilities of pcl-" +"python APIs. Development team should obey this policy on deciding to add," +" extend, and change APIs and their behaviors." +msgstr "̃hLǵApython-pcl APǏ݊Ɋւ݌vj\Ă܂B J`[́AAPIƂ̐U镑̒ljAgAύX肷ۂɂ̕jɏ]ׂłB" + +#: ../../source/compatibility.rst:7 +msgid "" +"This document is written for both users and developers. Users can decide " +"the level of dependencies on python-pcl implementations in their codes " +"based on this document. Developers should read through this document " +"before creating pull requests that contain changes on the interface. Note" +" that this document may contain ambiguities on the level of supported " +"compatibilities." +msgstr "̃hLǵA[U[ƊJ҂̗̂߂ɏĂ܂B [U[́A̕ɊÂăR[hpython-pcl̈ˑ֌W̃xł܂B J҂́AC^tF[X̕ύX܂ރvv쐬OɁÃhLgǂޕKv܂B ̃hLgɂ́AT|[gĂ݊̃xɊւ邠܂܂܂Ă邱ƂɒӂĂB" + +#: ../../source/compatibility.rst:14 +msgid "Versioning and Backward Compatibilities" +msgstr "o[WǗƉʌ݊ɂ‚" + +#: ../../source/compatibility.rst:16 +msgid "" +"The updates of python-pcl are classified into three levels: major, minor," +" and revision. These types have distinct levels of backward " +"compatibilities." +msgstr "python-pcl̍XV́AW[A}Ci[ArW3‚̃xɕނ܂B ̃^Cvɂ́A݊̈قȂ郌x܂B" + +#: ../../source/compatibility.rst:19 +msgid "" +"**Major update** contains disruptive changes that break the backward " +"compatibility." +msgstr "W[Abvf[gɂ́Aʌ݊𑹂ȂjIȕύX܂܂Ă܂B" + +#: ../../source/compatibility.rst:20 +msgid "" +"**Minor update** contains addition and extension to the APIs keeping the " +"supported backward compatibility." +msgstr "}Ci[Abvf[gɂ́AT|[gĂ݊ێȂAAPIւ̒ljƊg܂܂Ă܂B" + +#: ../../source/compatibility.rst:21 +msgid "" +"**Revision update** contains improvements on the API implementations " +"without changing any API specifications." +msgstr "rW̍XVɂ́AAPIdlύX邱ƂȂAAPỈǂ܂܂Ă܂B" + +#: ../../source/compatibility.rst:23 +msgid "" +"Note that we do not support full backward compatibility, which is almost " +"infeasible for Python-based APIs, since there is no way to completely " +"hide the implementation details." +msgstr "SȌ݊̓T|[gĂȂƂɒӂĂBPythonx[XAPIł͂قƂǎs”\łB̏ڍׂSɉB@ȂłB" + +#: ../../source/compatibility.rst:27 +msgid "Processes to Break Backward Compatibilities" +msgstr "ʌ݊𒆒fvZX" + +#: ../../source/compatibility.rst:30 +msgid "Deprecation, Dropping, and Its Preparation" +msgstr "pApт̏????" + +#: ../../source/compatibility.rst:32 +msgid "" +"Any APIs may be *deprecated* at some minor updates. In such a case, the " +"deprecation note is added to the API documentation, and the API " +"implementation is changed to fire deprecation warning (if possible). " +"There should be another way to reimplement the same things previously " +"written with the deprecated APIs." +msgstr "ׂĂAPÍA}Ci[ȍXVŔp~”\܂B???̂悤ȏꍇ́A񐄏̒߂APĨhLgɒljAAPI̎p~\xɕύX܂i”\ȏꍇjB ȑO͔p~\APIŏꂽ̂Ɠ̂Ďʂ̕@͂łB???" + +#: ../../source/compatibility.rst:36 +msgid "" +"Any APIs may be marked as *to be dropped in the future*. In such a case, " +"the dropping is stated in the documentation with the major version number" +" on which the API is planned to be dropped, and the API implementation is" +" changed to fire the future warning (if possible)." +msgstr "ǂAPIAhbv悤Ƀ}[N邩܂B ̂悤ȏꍇAAPI폜\̃W[o[Wԍ̃hLgɃhbv_ELڂAAPǏx𔭂悤ɕύX܂i”\ȏꍇjB" + +#: ../../source/compatibility.rst:39 +msgid "The actual dropping should be done through the following steps:" +msgstr "ۂ̗???́Aȉ̎菇ōsKv܂" + +#: ../../source/compatibility.rst:41 +msgid "" +"Make the API deprecated. At this point, users should not need the " +"deprecated API in their new application codes." +msgstr "API񐄏ɂB ̎_ŁA[U[͐VAvP[VR[hŔp~\APIKvƂׂł͂܂B???" + +#: ../../source/compatibility.rst:43 +msgid "" +"After that, mark the API as *to be dropped in the future*. It must be " +"done in the minor update different from that of the deprecation." +msgstr "̌AAPI폜悤Ƀ}[NĂB ́A񐄏̂̂Ƃ͈قȂ}Ci[Abvf[gōsKv܂B" + +#: ../../source/compatibility.rst:45 +msgid "At the major version announced in the above update, drop the API." +msgstr "LAbvf[gŔ\ꂽW[o[WAPI폜ĂB" + +#: ../../source/compatibility.rst:47 +msgid "" +"Consequently, it takes at least two minor versions to drop any APIs after" +" the first deprecation." +msgstr "āAŏ̔񐄏ł̌API폜ɂ́AȂƂ2‚̃}Ci[o[WKvłB???" + +#: ../../source/compatibility.rst:50 +msgid "API Changes and Its Preparation" +msgstr "API̕ύXƂ̏" + +#: ../../source/compatibility.rst:52 +msgid "" +"Any APIs may be marked as *to be changed in the future* for changes " +"without backward compatibility. In such a case, the change is stated in " +"the documentation with the version number on which the API is planned to " +"be changed, and the API implementation is changed to fire the future " +"warning on the certain usages." +msgstr "̌݊̂ȂύXɂ‚ẮAׂĂAPIɕύXĂƃ}[N邱Ƃ܂B ̂悤ȏꍇAAPI̕ύX\̃o[Wԍ̃hLgɕύXLڂAAPI̎ύXē̗prɂ‚Ă̏̌x܂B" + +#: ../../source/compatibility.rst:55 +msgid "The actual change should be done in the following steps:" +msgstr "ۂ̕ύX́A̎菇ōsKv܂B" + +#: ../../source/compatibility.rst:57 +msgid "" +"Announce that the API will be changed in the future. At this point, the " +"actual version of change need not be accurate." +msgstr "APIύX邱Ƃ𔭕\܂B ̎_ŁAۂ̕ύX̃o[W͐młKv͂܂B" + +#: ../../source/compatibility.rst:59 +msgid "" +"After the announcement, mark the API as *to be changed in the future* " +"with version number of planned changes. At this point, users should not " +"use the marked API in their new application codes." +msgstr "AiEX̌AύX\肳Ăo[WԍAPIύXĂB ̎_ŁA[U[͐VAvP[VR[hŃ}[NꂽAPIgpȂłB" + +#: ../../source/compatibility.rst:61 +msgid "At the major update announced in the above update, change the API." +msgstr "L̃Abvf[gŔ\ꂽW[Abvf[gł́AAPIύXĂB" + +#: ../../source/compatibility.rst:65 +msgid "Supported Backward Compatibility" +msgstr "T|[gĂ鉺ʌ݊" + +#: ../../source/compatibility.rst:67 +msgid "" +"This section defines backward compatibilities that minor updates must " +"maintain." +msgstr "̃ZNVł́A}Ci[ȍXVێȂ΂ȂȂ݊`܂B" + +#: ../../source/compatibility.rst:70 +msgid "Documented Interface" +msgstr "" + +#: ../../source/compatibility.rst:72 +msgid "" +"python-pcl has the official API documentation. Many applications can be " +"written based on the documented features. We support backward " +"compatibilities of documented features. In other words, codes only based " +"on the documented features run correctly with minor/revision-updated " +"versions." +msgstr "python-pclɂ́AAPIhLg܂B ̃AvP[V́Aꂽ@\ɊÂċLq邱Ƃł܂B hLgꂽ@\̌݊T|[gĂ܂B ΁Aꂽ@\݂̂ɊÂR[h́A}Ci[o[W/rWXVo[WŐ삵܂B" + +#: ../../source/compatibility.rst:77 +msgid "" +"Developers are encouraged to use apparent names for objects of " +"implementation details. For example, attributes outside of the documented" +" APIs should have one or more underscores at the prefix of their names." +msgstr "J҂͎̏ڍׂ̃IuWFNgɖȖOgp邱Ƃ܂B Ƃ΁AꂽAPI̊Ȏ́AO̐ړ1ˆȏ̃A_[XRA•Kv܂B???" + +#: ../../source/compatibility.rst:83 +msgid "Undocumented behaviors" +msgstr "" + +#: ../../source/compatibility.rst:85 +msgid "" +"Behaviors of python-pcl implementation not stated in the documentation " +"are undefined. Undocumented behaviors are not guaranteed to be stable " +"between different minor/revision versions." +msgstr "" + +#: ../../source/compatibility.rst:88 +msgid "" +"Minor update may contain changes to undocumented behaviors. For example, " +"suppose an API X is added at the minor update. In the previous version, " +"attempts to use X cause AttributeError. This behavior is not stated in " +"the documentation, so this is undefined. Thus, adding the API X in minor " +"version is permissible." +msgstr "" + +#: ../../source/compatibility.rst:94 +msgid "" +"Revision update may also contain changes to undefined behaviors. Typical " +"example is a bug fix. Another example is an improvement on " +"implementation, which may change the internal object structures not shown" +" in the documentation. As a consequence, **even revision updates do not " +"support compatibility of pickling, unless the full layout of pickled " +"objects is clearly documented.**" +msgstr "" + +#: ../../source/compatibility.rst:100 +msgid "Documentation Error" +msgstr "" + +#: ../../source/compatibility.rst:102 +msgid "" +"Compatibility is basically determined based on the documentation, though " +"it sometimes contains errors. It may make the APIs confusing to assume " +"the documentation always stronger than the implementations. We therefore " +"may fix the documentation errors in any updates that may break the " +"compatibility in regard to the documentation." +msgstr "" + +#: ../../source/compatibility.rst:107 +msgid "" +"Developers MUST NOT fix the documentation and implementation of the same " +"functionality at the same time in revision updates as \"bug fix\". Such a" +" change completely breaks the backward compatibility. If you want to fix " +"the bugs in both sides, first fix the documentation to fit it into the " +"implementation, and start the API changing procedure described above." +msgstr "" + +#: ../../source/compatibility.rst:112 +msgid "Object Attributes and Properties" +msgstr "" + +#: ../../source/compatibility.rst:114 +msgid "" +"Object attributes and properties are sometimes replaced by each other at " +"minor updates. It does not break the user codes, except the codes depend " +"on how the attributes and properties are implemented." +msgstr "" + +#: ../../source/compatibility.rst:118 +msgid "Functions and Methods" +msgstr "" + +#: ../../source/compatibility.rst:120 +msgid "" +"Methods may be replaced by callable attributes keeping the compatibility " +"of parameters and return values in minor updates. It does not break the " +"user codes, except the codes depend on how the methods and callable " +"attributes are implemented." +msgstr "" + +#: ../../source/compatibility.rst:124 +msgid "Exceptions and Warnings" +msgstr "" + +#: ../../source/compatibility.rst:126 +msgid "" +"The specifications of raising exceptions are considered as a part of " +"standard backward compatibilities. No exception is raised in the future " +"versions with correct usages that the documentation allows, unless the " +"API changing process is completed." +msgstr "" + +#: ../../source/compatibility.rst:129 +msgid "" +"On the other hand, warnings may be added at any minor updates for any " +"APIs. It means minor updates do not keep backward compatibility of " +"warnings." +msgstr "" + +#: ../../source/compatibility.rst:134 +msgid "Installation Compatibility" +msgstr "" + +#: ../../source/compatibility.rst:136 +msgid "" +"The installation process is another concern of compatibilities. We " +"support environmental compatibilities in the following ways." +msgstr "" + +#: ../../source/compatibility.rst:139 +msgid "" +"Any changes of dependent libraries that force modifications on the " +"existing environments must be done in major updates. Such changes include" +" following cases:" +msgstr "" + +#: ../../source/compatibility.rst:142 +msgid "" +"dropping supported versions of dependent libraries (e.g. dropping cuDNN " +"v2)" +msgstr "" + +#: ../../source/compatibility.rst:143 +msgid "adding new mandatory dependencies (e.g. adding h5py to setup_requires)" +msgstr "" + +#: ../../source/compatibility.rst:145 +msgid "" +"Supporting optional packages/libraries may be done in minor updates (e.g." +" supporting h5py in optional features)." +msgstr "" + +#: ../../source/compatibility.rst:148 +msgid "" +"The installation compatibility does not guarantee that all the features " +"of python-pcl correctly run on supported environments. It may contain " +"bugs that only occurs in certain environments. Such bugs should be fixed " +"in some updates." +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/compatibility.pot b/docs/source/locale/ja/LC_MESSAGES/compatibility.pot new file mode 100644 index 000000000..122f39cf5 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/compatibility.pot @@ -0,0 +1,218 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\compatibility.rst:2 +msgid "API Compatibility Policy" +msgstr "" + +#: ..\..\source\compatibility.rst:4 +msgid "This document expresses the design policy on compatibilities of python-pcl APIs. Development team should obey this policy on deciding to add, extend, and change APIs and their behaviors." +msgstr "" + +#: ..\..\source\compatibility.rst:7 +msgid "This document is written for both users and developers. Users can decide the level of dependencies on python-pcl implementations in their codes based on this document. Developers should read through this document before creating pull requests that contain changes on the interface. Note that this document may contain ambiguities on the level of supported compatibilities." +msgstr "" + +#: ..\..\source\compatibility.rst:14 +msgid "Versioning and Backward Compatibilities" +msgstr "" + +#: ..\..\source\compatibility.rst:16 +msgid "The updates of python-pcl are classified into three levels: major, minor, and revision. These types have distinct levels of backward compatibilities." +msgstr "" + +#: ..\..\source\compatibility.rst:19 +msgid "**Major update** contains disruptive changes that break the backward compatibility." +msgstr "" + +#: ..\..\source\compatibility.rst:20 +msgid "**Minor update** contains addition and extension to the APIs keeping the supported backward compatibility." +msgstr "" + +#: ..\..\source\compatibility.rst:21 +msgid "**Revision update** contains improvements on the API implementations without changing any API specifications." +msgstr "" + +#: ..\..\source\compatibility.rst:23 +msgid "Note that we do not support full backward compatibility, which is almost infeasible for Python-based APIs, since there is no way to completely hide the implementation details." +msgstr "" + +#: ..\..\source\compatibility.rst:27 +msgid "Processes to Break Backward Compatibilities" +msgstr "" + +#: ..\..\source\compatibility.rst:30 +msgid "Deprecation, Dropping, and Its Preparation" +msgstr "" + +#: ..\..\source\compatibility.rst:32 +msgid "Any APIs may be *deprecated* at some minor updates. In such a case, the deprecation note is added to the API documentation, and the API implementation is changed to fire deprecation warning (if possible). There should be another way to reimplement the same things previously written with the deprecated APIs." +msgstr "" + +#: ..\..\source\compatibility.rst:36 +msgid "Any APIs may be marked as *to be dropped in the future*. In such a case, the dropping is stated in the documentation with the major version number on which the API is planned to be dropped, and the API implementation is changed to fire the future warning (if possible)." +msgstr "" + +#: ..\..\source\compatibility.rst:39 +msgid "The actual dropping should be done through the following steps:" +msgstr "" + +#: ..\..\source\compatibility.rst:41 +msgid "Make the API deprecated. At this point, users should not need the deprecated API in their new application codes." +msgstr "" + +#: ..\..\source\compatibility.rst:43 +msgid "After that, mark the API as *to be dropped in the future*. It must be done in the minor update different from that of the deprecation." +msgstr "" + +#: ..\..\source\compatibility.rst:45 +msgid "At the major version announced in the above update, drop the API." +msgstr "" + +#: ..\..\source\compatibility.rst:47 +msgid "Consequently, it takes at least two minor versions to drop any APIs after the first deprecation." +msgstr "" + +#: ..\..\source\compatibility.rst:50 +msgid "API Changes and Its Preparation" +msgstr "" + +#: ..\..\source\compatibility.rst:52 +msgid "Any APIs may be marked as *to be changed in the future* for changes without backward compatibility. In such a case, the change is stated in the documentation with the version number on which the API is planned to be changed, and the API implementation is changed to fire the future warning on the certain usages." +msgstr "" + +#: ..\..\source\compatibility.rst:55 +msgid "The actual change should be done in the following steps:" +msgstr "" + +#: ..\..\source\compatibility.rst:57 +msgid "Announce that the API will be changed in the future. At this point, the actual version of change need not be accurate." +msgstr "" + +#: ..\..\source\compatibility.rst:59 +msgid "After the announcement, mark the API as *to be changed in the future* with version number of planned changes. At this point, users should not use the marked API in their new application codes." +msgstr "" + +#: ..\..\source\compatibility.rst:61 +msgid "At the major update announced in the above update, change the API." +msgstr "" + +#: ..\..\source\compatibility.rst:65 +msgid "Supported Backward Compatibility" +msgstr "" + +#: ..\..\source\compatibility.rst:67 +msgid "This section defines backward compatibilities that minor updates must maintain." +msgstr "" + +#: ..\..\source\compatibility.rst:70 +msgid "Documented Interface" +msgstr "" + +#: ..\..\source\compatibility.rst:72 +msgid "python-pcl has the official API documentation. Many applications can be written based on the documented features. We support backward compatibilities of documented features. In other words, codes only based on the documented features run correctly with minor/revision-updated versions." +msgstr "" + +#: ..\..\source\compatibility.rst:77 +msgid "Developers are encouraged to use apparent names for objects of implementation details. For example, attributes outside of the documented APIs should have one or more underscores at the prefix of their names." +msgstr "" + +#: ..\..\source\compatibility.rst:83 +msgid "Undocumented behaviors" +msgstr "" + +#: ..\..\source\compatibility.rst:85 +msgid "Behaviors of python-pcl implementation not stated in the documentation are undefined. Undocumented behaviors are not guaranteed to be stable between different minor/revision versions." +msgstr "" + +#: ..\..\source\compatibility.rst:88 +msgid "Minor update may contain changes to undocumented behaviors. For example, suppose an API X is added at the minor update. In the previous version, attempts to use X cause AttributeError. This behavior is not stated in the documentation, so this is undefined. Thus, adding the API X in minor version is permissible." +msgstr "" + +#: ..\..\source\compatibility.rst:94 +msgid "Revision update may also contain changes to undefined behaviors. Typical example is a bug fix. Another example is an improvement on implementation, which may change the internal object structures not shown in the documentation. As a consequence, **even revision updates do not support compatibility of pickling, unless the full layout of pickled objects is clearly documented.**" +msgstr "" + +#: ..\..\source\compatibility.rst:100 +msgid "Documentation Error" +msgstr "" + +#: ..\..\source\compatibility.rst:102 +msgid "Compatibility is basically determined based on the documentation, though it sometimes contains errors. It may make the APIs confusing to assume the documentation always stronger than the implementations. We therefore may fix the documentation errors in any updates that may break the compatibility in regard to the documentation." +msgstr "" + +#: ..\..\source\compatibility.rst:107 +msgid "Developers MUST NOT fix the documentation and implementation of the same functionality at the same time in revision updates as \"bug fix\". Such a change completely breaks the backward compatibility. If you want to fix the bugs in both sides, first fix the documentation to fit it into the implementation, and start the API changing procedure described above." +msgstr "" + +#: ..\..\source\compatibility.rst:112 +msgid "Object Attributes and Properties" +msgstr "" + +#: ..\..\source\compatibility.rst:114 +msgid "Object attributes and properties are sometimes replaced by each other at minor updates. It does not break the user codes, except the codes depend on how the attributes and properties are implemented." +msgstr "" + +#: ..\..\source\compatibility.rst:118 +msgid "Functions and Methods" +msgstr "" + +#: ..\..\source\compatibility.rst:120 +msgid "Methods may be replaced by callable attributes keeping the compatibility of parameters and return values in minor updates. It does not break the user codes, except the codes depend on how the methods and callable attributes are implemented." +msgstr "" + +#: ..\..\source\compatibility.rst:124 +msgid "Exceptions and Warnings" +msgstr "" + +#: ..\..\source\compatibility.rst:126 +msgid "The specifications of raising exceptions are considered as a part of standard backward compatibilities. No exception is raised in the future versions with correct usages that the documentation allows, unless the API changing process is completed." +msgstr "" + +#: ..\..\source\compatibility.rst:129 +msgid "On the other hand, warnings may be added at any minor updates for any APIs. It means minor updates do not keep backward compatibility of warnings." +msgstr "" + +#: ..\..\source\compatibility.rst:134 +msgid "Installation Compatibility" +msgstr "" + +#: ..\..\source\compatibility.rst:136 +msgid "The installation process is another concern of compatibilities. We support environmental compatibilities in the following ways." +msgstr "" + +#: ..\..\source\compatibility.rst:139 +msgid "Any changes of dependent libraries that force modifications on the existing environments must be done in major updates. Such changes include following cases:" +msgstr "" + +#: ..\..\source\compatibility.rst:142 +msgid "dropping supported versions of dependent libraries (e.g. dropping cuDNN v2)" +msgstr "" + +#: ..\..\source\compatibility.rst:143 +msgid "adding new mandatory dependencies (e.g. adding h5py to setup_requires)" +msgstr "" + +#: ..\..\source\compatibility.rst:145 +msgid "Supporting optional packages/libraries may be done in minor updates (e.g. supporting h5py in optional features)." +msgstr "" + +#: ..\..\source\compatibility.rst:148 +msgid "The installation compatibility does not guarantee that all the features of python-pcl correctly run on supported environments. It may contain bugs that only occurs in certain environments. Such bugs should be fixed in some updates." +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/contribution.po b/docs/source/locale/ja/LC_MESSAGES/contribution.po new file mode 100644 index 000000000..8d8cd6380 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/contribution.po @@ -0,0 +1,470 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2015, Preferred Networks, inc. and Preferred Infrastructure, +# inc. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 11:33+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.4.0\n" + +#: ../../source/contribution.rst:2 +msgid "python-pcl Contribution Guide" +msgstr "python-pclRgr[VKCh" + +#: ../../source/contribution.rst:4 +msgid "" +"This is a guide for all contributions to python-pcl. The development of " +"python-pcl is running on `the official repository at GitHub " +"`_. Anyone that wants to " +"register an issue or to send a pull request should read through this " +"document." +msgstr "̃KCh cpl-python " + +#: ../../source/contribution.rst:9 +msgid "Classification of Contributions" +msgstr "" + +#: ../../source/contribution.rst:11 +msgid "There are several ways to contribute to python-pcl community:" +msgstr "" + +#: ../../source/contribution.rst:13 +msgid "Registering an issue" +msgstr "" + +#: ../../source/contribution.rst:14 +msgid "Sending a pull request (PR)" +msgstr "" + +#: ../../source/contribution.rst:15 +msgid "" +"Sending a question to `python-pcl User Group " +"`_" +msgstr "" + +#: ../../source/contribution.rst:16 +msgid "Writing a post about python-pcl" +msgstr "" + +#: ../../source/contribution.rst:18 +msgid "" +"This document mainly focuses on 1 and 2, though other contributions are " +"also appreciated." +msgstr "" + +#: ../../source/contribution.rst:21 +msgid "Release and Milestone" +msgstr "" + +#: ../../source/contribution.rst:23 +msgid "" +"We are using `GitHub Flow `_ as our basic working process. In particular, we are using " +"the master branch for our development, and releases are made as tags." +msgstr "" + +#: ../../source/contribution.rst:26 +msgid "" +"Releases are classified into three groups: major, minor, and revision. " +"This classification is based on following criteria:" +msgstr "" + +#: ../../source/contribution.rst:29 +msgid "" +"**Major update** contains disruptive changes that break the backward " +"compatibility." +msgstr "" + +#: ../../source/contribution.rst:30 +msgid "" +"**Minor update** contains additions and extensions to the APIs keeping " +"the supported backward compatibility." +msgstr "" + +#: ../../source/contribution.rst:31 +msgid "" +"**Revision update** contains improvements on the API implementations " +"without changing any API specification." +msgstr "" + +#: ../../source/contribution.rst:33 +msgid "" +"The release classification is reflected into the version number x.y.z, " +"where x, y, and z corresponds to major, minor, and revision updates, " +"respectively." +msgstr "" + +#: ../../source/contribution.rst:35 +msgid "" +"We set a milestone for an upcoming release. The milestone is of name " +"'vX.Y.Z', where the version number represents a revision release at the " +"outset. If at least one *feature* PR is merged in the period, we rename " +"the milestone to represent a minor release (see the next section for the " +"PR types)." +msgstr "" + +#: ../../source/contribution.rst:39 +msgid "See also :doc:`compatibility`." +msgstr "" + +#: ../../source/contribution.rst:42 +msgid "Issues and PRs" +msgstr "" + +#: ../../source/contribution.rst:44 +msgid "Issues and PRs are classified into following categories:" +msgstr "" + +#: ../../source/contribution.rst:46 +msgid "**Bug**: bug reports (issues) and bug fixes (PRs)" +msgstr "" + +#: ../../source/contribution.rst:47 +msgid "" +"**Enhancement**: implementation improvements without breaking the " +"interface" +msgstr "" + +#: ../../source/contribution.rst:48 +msgid "**Feature**: feature requests (issues) and their implementations (PRs)" +msgstr "" + +#: ../../source/contribution.rst:49 +msgid "**NoCompat**: disrupts backward compatibility" +msgstr "" + +#: ../../source/contribution.rst:50 +msgid "**Test**: test fixes and updates" +msgstr "" + +#: ../../source/contribution.rst:51 +msgid "**Document**: document fixes and improvements" +msgstr "" + +#: ../../source/contribution.rst:52 +msgid "**Example**: fixes and improvements on the examples" +msgstr "" + +#: ../../source/contribution.rst:53 +msgid "**Install**: fixes installation script" +msgstr "" + +#: ../../source/contribution.rst:54 +msgid "" +"**Contribution-Welcome**: issues that we request for contribution (only " +"issues are categorized to this)" +msgstr "" + +#: ../../source/contribution.rst:55 +msgid "**Other**: other issues and PRs" +msgstr "" + +#: ../../source/contribution.rst:57 +msgid "" +"Issues and PRs are labeled by these categories. This classification is " +"often reflected into its corresponding release category: Feature " +"issues/PRs are contained into minor/major releases and NoCompat " +"issues/PRs are contained into major releases, while other issues/PRs can " +"be contained into any releases including revision ones." +msgstr "" + +#: ../../source/contribution.rst:60 +msgid "" +"On registering an issue, write precise explanations on what you want pcl-" +"python to be. Bug reports must include necessary and sufficient " +"conditions to reproduce the bugs. Feature requests must include **what** " +"you want to do (and **why** you want to do, if needed). You can contain " +"your thoughts on **how** to realize it into the feature requests, though " +"**what** part is most important for discussions." +msgstr "" + +#: ../../source/contribution.rst:67 +msgid "" +"If you have a question on usages of python-pcl, it is highly recommended " +"to send a post to `python-pcl User Group " +"`_ instead of the " +"issue tracker. The issue tracker is not a place to share knowledge on " +"practices. We may redirect question issues to python-pcl User Group." +msgstr "" + +#: ../../source/contribution.rst:71 +msgid "" +"If you can write code to fix an issue, send a PR to the master branch. " +"Before writing your code for PRs, read through the :ref:`coding-guide`. " +"The description of any PR must contain a precise explanation of **what** " +"and **how** you want to do; it is the first documentation of your code " +"for developers, a very important part of your PR." +msgstr "" + +#: ../../source/contribution.rst:75 +msgid "" +"Once you send a PR, it is automatically tested on `Travis CI `_ for Linux and Mac OS X, and on" +" `AppVeyor `_ for " +"Windows. Your PR need to pass at least the test for Linux on Travis CI. " +"After the automatic test passes, some of the core developers will start " +"reviewing your code. Note that this automatic PR test only includes CPU " +"tests." +msgstr "" + +#: ../../source/contribution.rst:82 +msgid "" +"We are also running continuous integration with GPU tests for the master " +"branch. Since this service is running on our internal server, we do not " +"use it for automatic PR tests to keep the server secure." +msgstr "" + +#: ../../source/contribution.rst:86 +msgid "" +"Even if your code is not complete, you can send a pull request as a " +"*work-in-progress PR* by putting the ``[WIP]`` prefix to the PR title. If" +" you write a precise explanation about the PR, core developers and other " +"contributors can join the discussion about how to proceed the PR." +msgstr "" + +#: ../../source/contribution.rst:92 +msgid "Coding Guidelines" +msgstr "" + +#: ../../source/contribution.rst:94 +msgid "" +"We use `PEP8 `_ and a part of " +"`OpenStack Style Guidelines " +"`_ related to general " +"coding style as our basic style guidelines." +msgstr "" + +#: ../../source/contribution.rst:96 +msgid "" +"To check your code, use ``autopep8`` and ``flake8`` command installed by " +"``hacking`` package::" +msgstr "" + +#: ../../source/contribution.rst:102 +msgid "To check Cython code, use ``.flake8.cython`` configuration file::" +msgstr "" + +#: ../../source/contribution.rst:106 +msgid "" +"The ``autopep8`` supports automatically correct Python code to conform to" +" the PEP 8 style guide::" +msgstr "" + +#: ../../source/contribution.rst:110 +msgid "" +"The ``flake8`` command lets you know the part of your code not obeying " +"our style guidelines. Before sending a pull request, be sure to check " +"that your code passes the ``flake8`` checking." +msgstr "" + +#: ../../source/contribution.rst:113 +msgid "" +"Note that ``flake8`` command is not perfect. It does not check some of " +"the style guidelines. Here is a (not-complete) list of the rules that " +"``flake8`` cannot check." +msgstr "" + +#: ../../source/contribution.rst:117 +msgid "Relative imports are prohibited. [H304]" +msgstr "" + +#: ../../source/contribution.rst:118 +msgid "Importing non-module symbols is prohibited." +msgstr "" + +#: ../../source/contribution.rst:119 +msgid "" +"Import statements must be organized into three parts: standard libraries," +" third-party libraries, and internal imports. [H306]" +msgstr "" + +#: ../../source/contribution.rst:121 +msgid "" +"In addition, we restrict the usage of *shortcut symbols* in our code " +"base. They are symbols imported by packages and sub-packages of ``pcl-" +"python``. For example, ``python-pcl.cuda.Device`` is a shortcut of ``pcl-" +"python.cuda.device.Device``. **It is not allowed to use such shortcuts in" +" the ``python-pcl`` library implementation**. Note that you can still use" +" them in ``tests`` and ``examples`` directories." +msgstr "" + +#: ../../source/contribution.rst:127 +msgid "" +"Once you send a pull request, your coding style is automatically checked " +"by `Travis-CI `_. The " +"reviewing process starts after the check passes." +msgstr "" + +#: ../../source/contribution.rst:130 +msgid "" +"The python-pcl is designed based on NumPy's API design. python-pcl's " +"source code and documents contain the original NumPy ones. Please note " +"the followings when writing the document." +msgstr "" + +#: ../../source/contribution.rst:133 +msgid "" +"In order to identify overlapping parts, it is preferable to add some " +"remarks that this document is just copied or altered from the original " +"one. It is also preferable to briefly explain the specification of the " +"function in a short paragraph, and refer to the corresponding function in" +" NumPy so that users can read the detailed document. However, it is " +"possible to include a complete copy of the document with such a remark if" +" users cannot summarize in such a way." +msgstr "" + +#: ../../source/contribution.rst:140 +msgid "" +"If a function in python-pcl only implements a limited amount of features " +"in the original one, users should explicitly describe only what is " +"implemented in the document." +msgstr "" + +#: ../../source/contribution.rst:146 +msgid "Testing Guidelines" +msgstr "" + +#: ../../source/contribution.rst:148 +msgid "" +"Testing is one of the most important part of your code. You must test " +"your code by unit tests following our testing guidelines. Note that we " +"are using the nose package and the mock package for testing, so install " +"nose and mock before writing your code::" +msgstr "" + +#: ../../source/contribution.rst:154 +msgid "" +"In order to run unit tests at the repository root, you first have to " +"build Cython files in place by running the following command::" +msgstr "" + +#: ../../source/contribution.rst:158 +msgid "" +"Once the Cython modules are built, you can run unit tests simply by " +"running ``nosetests`` command at the repository root::" +msgstr "" + +#: ../../source/contribution.rst:162 +msgid "" +"It requires CUDA by default. In order to run unit tests that do not " +"require CUDA, pass ``--attr='!gpu'`` option to the ``nosetests`` " +"command::" +msgstr "" + +#: ../../source/contribution.rst:167 +msgid "" +"Some GPU tests involve multiple GPUs. If you want to run GPU tests with " +"insufficient number of GPUs, specify the number of available GPUs by " +"``--eval-attr='gpu`_ **with " +"--attr='!gpu,!slow' option**. Since Travis-CI does not support CUDA, we " +"cannot check your CUDA-related code automatically. The reviewing process " +"starts after the test passes. Note that reviewers will test your code " +"without the option to check CUDA-related code." +msgstr "" + +#: ../../source/contribution.rst:239 +msgid "" +"Some of numerically unstable tests might cause errors irrelevant to your " +"changes. In such a case, we ignore the failures and go on to the review " +"process, so do not worry about it." +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/contribution.pot b/docs/source/locale/ja/LC_MESSAGES/contribution.pot new file mode 100644 index 000000000..fb1523dda --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/contribution.pot @@ -0,0 +1,306 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\contribution.rst:2 +msgid "python-pcl Contribution Guide" +msgstr "python-pcl Rgr[V KCh" + +#: ..\..\source\contribution.rst:4 +msgid "This is a guide for all contributions to python-pcl. The development of python-pcl is running on `the official repository at GitHub `_. Anyone that wants to register an issue or to send a pull request should read through this document." +msgstr "" + +#: ..\..\source\contribution.rst:9 +msgid "Classification of Contributions" +msgstr "" + +#: ..\..\source\contribution.rst:11 +msgid "There are several ways to contribute to python-pcl community:" +msgstr "" + +#: ..\..\source\contribution.rst:13 +msgid "Registering an issue" +msgstr "" + +#: ..\..\source\contribution.rst:14 +msgid "Sending a pull request (PR)" +msgstr "" + +#: ..\..\source\contribution.rst:15 +msgid "Sending a question to `python-pcl User Group `_" +msgstr "" + +#: ..\..\source\contribution.rst:16 +msgid "Writing a post about python-pcl" +msgstr "" + +#: ..\..\source\contribution.rst:18 +msgid "This document mainly focuses on 1 and 2, though other contributions are also appreciated." +msgstr "" + +#: ..\..\source\contribution.rst:21 +msgid "Release and Milestone" +msgstr "" + +#: ..\..\source\contribution.rst:23 +msgid "We are using `GitHub Flow `_ as our basic working process. In particular, we are using the master branch for our development, and releases are made as tags." +msgstr "" + +#: ..\..\source\contribution.rst:26 +msgid "Releases are classified into three groups: major, minor, and revision. This classification is based on following criteria:" +msgstr "" + +#: ..\..\source\contribution.rst:29 +msgid "**Major update** contains disruptive changes that break the backward compatibility." +msgstr "" + +#: ..\..\source\contribution.rst:30 +msgid "**Minor update** contains additions and extensions to the APIs keeping the supported backward compatibility." +msgstr "" + +#: ..\..\source\contribution.rst:31 +msgid "**Revision update** contains improvements on the API implementations without changing any API specification." +msgstr "" + +#: ..\..\source\contribution.rst:33 +msgid "The release classification is reflected into the version number x.y.z, where x, y, and z corresponds to major, minor, and revision updates, respectively." +msgstr "" + +#: ..\..\source\contribution.rst:35 +msgid "We set a milestone for an upcoming release. The milestone is of name 'vX.Y.Z', where the version number represents a revision release at the outset. If at least one *feature* PR is merged in the period, we rename the milestone to represent a minor release (see the next section for the PR types)." +msgstr "" + +#: ..\..\source\contribution.rst:39 +msgid "See also :doc:`compatibility`." +msgstr "" + +#: ..\..\source\contribution.rst:42 +msgid "Issues and PRs" +msgstr "" + +#: ..\..\source\contribution.rst:44 +msgid "Issues and PRs are classified into following categories:" +msgstr "" + +#: ..\..\source\contribution.rst:46 +msgid "**Bug**: bug reports (issues) and bug fixes (PRs)" +msgstr "" + +#: ..\..\source\contribution.rst:47 +msgid "**Enhancement**: implementation improvements without breaking the interface" +msgstr "" + +#: ..\..\source\contribution.rst:48 +msgid "**Feature**: feature requests (issues) and their implementations (PRs)" +msgstr "" + +#: ..\..\source\contribution.rst:49 +msgid "**NoCompat**: disrupts backward compatibility" +msgstr "" + +#: ..\..\source\contribution.rst:50 +msgid "**Test**: test fixes and updates" +msgstr "" + +#: ..\..\source\contribution.rst:51 +msgid "**Document**: document fixes and improvements" +msgstr "" + +#: ..\..\source\contribution.rst:52 +msgid "**Example**: fixes and improvements on the examples" +msgstr "" + +#: ..\..\source\contribution.rst:53 +msgid "**Install**: fixes installation script" +msgstr "" + +#: ..\..\source\contribution.rst:54 +msgid "**Contribution-Welcome**: issues that we request for contribution (only issues are categorized to this)" +msgstr "" + +#: ..\..\source\contribution.rst:55 +msgid "**Other**: other issues and PRs" +msgstr "" + +#: ..\..\source\contribution.rst:57 +msgid "Issues and PRs are labeled by these categories. This classification is often reflected into its corresponding release category: Feature issues/PRs are contained into minor/major releases and NoCompat issues/PRs are contained into major releases, while other issues/PRs can be contained into any releases including revision ones." +msgstr "" + +#: ..\..\source\contribution.rst:60 +msgid "On registering an issue, write precise explanations on what you want python-pcl to be. Bug reports must include necessary and sufficient conditions to reproduce the bugs. Feature requests must include **what** you want to do (and **why** you want to do, if needed). You can contain your thoughts on **how** to realize it into the feature requests, though **what** part is most important for discussions." +msgstr "" + +#: ..\..\source\contribution.rst:67 +msgid "If you have a question on usages of python-pcl, it is highly recommended to send a post to `python-pcl User Group `_ instead of the issue tracker. The issue tracker is not a place to share knowledge on practices. We may redirect question issues to python-pcl User Group." +msgstr "" + +#: ..\..\source\contribution.rst:71 +msgid "If you can write code to fix an issue, send a PR to the master branch. Before writing your code for PRs, read through the :ref:`coding-guide`. The description of any PR must contain a precise explanation of **what** and **how** you want to do; it is the first documentation of your code for developers, a very important part of your PR." +msgstr "" + +#: ..\..\source\contribution.rst:75 +msgid "Once you send a PR, it is automatically tested on `Travis CI `_ for Linux and Mac OS X, and on `AppVeyor `_ for Windows. Your PR need to pass at least the test for Linux on Travis CI. After the automatic test passes, some of the core developers will start reviewing your code. Note that this automatic PR test only includes CPU tests." +msgstr "" + +#: ..\..\source\contribution.rst:82 +msgid "We are also running continuous integration with GPU tests for the master branch. Since this service is running on our internal server, we do not use it for automatic PR tests to keep the server secure." +msgstr "" + +#: ..\..\source\contribution.rst:86 +msgid "Even if your code is not complete, you can send a pull request as a *work-in-progress PR* by putting the ``[WIP]`` prefix to the PR title. If you write a precise explanation about the PR, core developers and other contributors can join the discussion about how to proceed the PR." +msgstr "" + +#: ..\..\source\contribution.rst:92 +msgid "Coding Guidelines" +msgstr "" + +#: ..\..\source\contribution.rst:94 +msgid "We use `PEP8 `_ and a part of `OpenStack Style Guidelines `_ related to general coding style as our basic style guidelines." +msgstr "" + +#: ..\..\source\contribution.rst:96 +msgid "To check your code, use ``autopep8`` and ``flake8`` command installed by ``hacking`` package::" +msgstr "" + +#: ..\..\source\contribution.rst:102 +msgid "To check Cython code, use ``.flake8.cython`` configuration file::" +msgstr "" + +#: ..\..\source\contribution.rst:106 +msgid "The ``autopep8`` supports automatically correct Python code to conform to the PEP 8 style guide::" +msgstr "" + +#: ..\..\source\contribution.rst:110 +msgid "The ``flake8`` command lets you know the part of your code not obeying our style guidelines. Before sending a pull request, be sure to check that your code passes the ``flake8`` checking." +msgstr "" + +#: ..\..\source\contribution.rst:113 +msgid "Note that ``flake8`` command is not perfect. It does not check some of the style guidelines. Here is a (not-complete) list of the rules that ``flake8`` cannot check." +msgstr "" + +#: ..\..\source\contribution.rst:117 +msgid "Relative imports are prohibited. [H304]" +msgstr "" + +#: ..\..\source\contribution.rst:118 +msgid "Importing non-module symbols is prohibited." +msgstr "" + +#: ..\..\source\contribution.rst:119 +msgid "Import statements must be organized into three parts: standard libraries, third-party libraries, and internal imports. [H306]" +msgstr "" + +#: ..\..\source\contribution.rst:121 +msgid "In addition, we restrict the usage of *shortcut symbols* in our code base. They are symbols imported by packages and sub-packages of ``python-pcl``. For example, ``python-pcl.cuda.Device`` is a shortcut of ``python-pcl.cuda.device.Device``. **It is not allowed to use such shortcuts in the ``python-pcl`` library implementation**. Note that you can still use them in ``tests`` and ``examples`` directories." +msgstr "" + +#: ..\..\source\contribution.rst:127 +msgid "Once you send a pull request, your coding style is automatically checked by `Travis-CI `_. The reviewing process starts after the check passes." +msgstr "" + +#: ..\..\source\contribution.rst:130 +msgid "The python-pcl is designed based on NumPy's API design. python-pcl's source code and documents contain the original NumPy ones. Please note the followings when writing the document." +msgstr "" + +#: ..\..\source\contribution.rst:133 +msgid "In order to identify overlapping parts, it is preferable to add some remarks that this document is just copied or altered from the original one. It is also preferable to briefly explain the specification of the function in a short paragraph, and refer to the corresponding function in NumPy so that users can read the detailed document. However, it is possible to include a complete copy of the document with such a remark if users cannot summarize in such a way." +msgstr "" + +#: ..\..\source\contribution.rst:140 +msgid "If a function in python-pcl only implements a limited amount of features in the original one, users should explicitly describe only what is implemented in the document." +msgstr "" + +#: ..\..\source\contribution.rst:146 +msgid "Testing Guidelines" +msgstr "" + +#: ..\..\source\contribution.rst:148 +msgid "Testing is one of the most important part of your code. You must test your code by unit tests following our testing guidelines. Note that we are using the nose package and the mock package for testing, so install nose and mock before writing your code::" +msgstr "" + +#: ..\..\source\contribution.rst:154 +msgid "In order to run unit tests at the repository root, you first have to build Cython files in place by running the following command::" +msgstr "" + +#: ..\..\source\contribution.rst:158 +msgid "Once the Cython modules are built, you can run unit tests simply by running ``nosetests`` command at the repository root::" +msgstr "" + +#: ..\..\source\contribution.rst:162 +msgid "It requires CUDA by default. In order to run unit tests that do not require CUDA, pass ``--attr='!gpu'`` option to the ``nosetests`` command::" +msgstr "" + +#: ..\..\source\contribution.rst:167 +msgid "Some GPU tests involve multiple GPUs. If you want to run GPU tests with insufficient number of GPUs, specify the number of available GPUs by ``--eval-attr='gpu`_ **with --attr='!gpu,!slow' option**. Since Travis-CI does not support CUDA, we cannot check your CUDA-related code automatically. The reviewing process starts after the test passes. Note that reviewers will test your code without the option to check CUDA-related code." +msgstr "" + +#: ..\..\source\contribution.rst:239 +msgid "Some of numerically unstable tests might cause errors irrelevant to your changes. In such a case, we ignore the failures and go on to the review process, so do not worry about it." +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/developers.po b/docs/source/locale/ja/LC_MESSAGES/developers.po new file mode 100644 index 000000000..76c1f8c15 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/developers.po @@ -0,0 +1,24 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2015, Preferred Networks, inc. and Preferred Infrastructure, +# inc. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 11:33+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.4.0\n" + +#: ../../source/developers.rst:3 +msgid "For python-pcl Developers" +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/developers.pot b/docs/source/locale/ja/LC_MESSAGES/developers.pot new file mode 100644 index 000000000..e2c257be8 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/developers.pot @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\developers.rst:3 +msgid "For python-pcl Developers" +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/index.po b/docs/source/locale/ja/LC_MESSAGES/index.po new file mode 100644 index 000000000..c403b4431 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/index.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2015, Preferred Networks, inc. and Preferred Infrastructure, +# inc. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 11:33+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.4.0\n" + +#: ../../source/index.rst:3 +msgid "python-pcl -- PointCloudLibrary-like API" +msgstr "" + +#: ../../source/index.rst:5 +msgid "" +"This is the `python-pcl `_ " +"documentation." +msgstr " `python-pcl `_ ̓{hLgł" + diff --git a/docs/source/locale/ja/LC_MESSAGES/index.pot b/docs/source/locale/ja/LC_MESSAGES/index.pot new file mode 100644 index 000000000..d0795b4d4 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/index.pot @@ -0,0 +1,26 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\index.rst:3 +msgid "python-pcl -- PointCloudLibrary-like API" +msgstr "" + +#: ..\..\source\index.rst:5 +msgid "This is the `python-pcl `_ documentation." +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/install.po b/docs/source/locale/ja/LC_MESSAGES/install.po new file mode 100644 index 000000000..635f5e8bf --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/install.po @@ -0,0 +1,205 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2015, Preferred Networks, inc. and Preferred Infrastructure, +# inc. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 11:33+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.4.0\n" + +#: ../../source/install.rst:2 +msgid "Installation Guide" +msgstr "" + +#: ../../source/install.rst:7 +msgid "Recommended Environments" +msgstr "" + +#: ../../source/install.rst:9 +msgid "We recommend these Linux distributions." +msgstr "" + +#: ../../source/install.rst:11 +msgid "`Ubuntu `_ 14.04/16.04 LTS 64bit" +msgstr "" + +#: ../../source/install.rst:12 +msgid "`MacOS `_ 10.10/10.11" +msgstr "" + +#: ../../source/install.rst:13 +msgid "`Windows `_ 7/8.1/10 64bit" +msgstr "" + +#: ../../source/install.rst:15 +msgid "" +"The following versions of Python can be used: 2.7.6+, 3.4.3+, 3.5.1+, and" +" 3.6.0+." +msgstr "" + +#: ../../source/install.rst:19 +msgid "" +"We are testing python-pcl automatically with Jenkins, where all the above" +" *recommended* environments are tested." +msgstr "" + +#: ../../source/install.rst:21 +msgid "" +"python-pcl is supported on Python 2.7.6+, 3.4.3+, 3.5.1+, 3.6.0+. pcl-" +"Python uses C++ compiler such as g++. You need to install it before " +"installing python-pcl. This is typical installation method for each " +"platform::" +msgstr "" + +#: ../../source/install.rst:43 +msgid "If you use old ``setuptools``, upgrade it::" +msgstr " ``setuptools`` gpĂꍇ̓AbvO[hĂ:" + +#: ../../source/install.rst:49 +msgid "Dependencies" +msgstr "" + +#: ../../source/install.rst:51 +msgid "" +"Before installing python-pcl, we recommend to upgrade ``setuptools`` if " +"you are using an old one::" +msgstr "" + +#: ../../source/install.rst:55 +msgid "" +"The following Python packages are required to install python-pcl. The " +"latest version of each package will automatically be installed if " +"missing." +msgstr "" + +#: ../../source/install.rst:58 +msgid "`NumPy `_ 1.9, 1.10, 1.11, 1.12" +msgstr "" + +#: ../../source/install.rst:62 +msgid "Install python-pcl" +msgstr "" + +#: ../../source/install.rst:65 +msgid "Install python-pcl via pip" +msgstr "" + +#: ../../source/install.rst:67 +msgid "We recommend to install python-pcl via pip::" +msgstr "" + +#: ../../source/install.rst:73 +msgid "" +"All optional PointCloudLibrary related libraries, need to be installed " +"before installing python-pcl. After you update these libraries, please " +"reinstall python-pcl because you need to compile and link to the newer " +"version of them." +msgstr "" + +#: ../../source/install.rst:78 +msgid "Install python-pcl from source" +msgstr "" + +#: ../../source/install.rst:80 +msgid "" +"The tarball of the source tree is available via ``pip download pcl-" +"python`` or from `the release notes page `_. You can use ``setup.py`` to install python-pcl from " +"the tarball::" +msgstr "" + +#: ../../source/install.rst:87 +msgid "" +"You can also install the development version of python-pcl from a cloned " +"Git repository::" +msgstr "" + +#: ../../source/install.rst:97 +msgid "When an error occurs..." +msgstr "" + +#: ../../source/install.rst:99 +msgid "" +"Use ``-vvvv`` option with ``pip`` command. That shows all logs of " +"installation. It may help you::" +msgstr "" + +#: ../../source/install.rst:109 +msgid "Install python-pcl with pcl.dll" +msgstr "" + +#: ../../source/install.rst:114 +msgid "Install python-pcl for developers" +msgstr "" + +#: ../../source/install.rst:116 +msgid "" +"python-pcl uses Cython (>=0.24). Developers need to use Cython to " +"regenerate C++ sources from ``pyx`` files. We recommend to use ``pip`` " +"with ``-e`` option for editable mode::" +msgstr "" + +#: ../../source/install.rst:124 +msgid "" +"Users need not to install Cython as a distribution package of python-pcl " +"only contains generated sources." +msgstr "" + +#: ../../source/install.rst:128 +msgid "Uninstall python-pcl" +msgstr "" + +#: ../../source/install.rst:130 +msgid "Use pip to uninstall python-pcl::" +msgstr "" + +#: ../../source/install.rst:136 +msgid "" +"When you upgrade python-pcl, ``pip`` sometimes install the new version " +"without removing the old one in ``site-packages``. In this case, ``pip " +"uninstall`` only removes the latest one. To ensure that python-pcl is " +"completely removed, run the above command repeatedly until ``pip`` " +"returns an error." +msgstr "" + +#: ../../source/install.rst:142 +msgid "Upgrade python-pcl" +msgstr "" + +#: ../../source/install.rst:144 +msgid "Just use ``pip`` with ``-U`` option::" +msgstr "" + +#: ../../source/install.rst:150 +msgid "Reinstall python-pcl" +msgstr "" + +#: ../../source/install.rst:152 +msgid "" +"If you want to reinstall python-pcl, please uninstall python-pcl and then" +" install it. We recommend to use ``--no-cache-dir`` option as ``pip`` " +"sometimes uses cache::" +msgstr "" + +#: ../../source/install.rst:158 +msgid "" +"When you install python-pcl without PointCloudLibrary, and after that you" +" want to use PointCloudLibrary, please reinstall python-pcl. You need to " +"reinstall python-pcl when you want to upgrade PointCloudLibrary." +msgstr "" + +#: ../../source/install.rst:163 +msgid "FAQ" +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/install.pot b/docs/source/locale/ja/LC_MESSAGES/install.pot new file mode 100644 index 000000000..9c5a95b24 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/install.pot @@ -0,0 +1,162 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\install.rst:2 +msgid "Installation Guide" +msgstr "" + +#: ..\..\source\install.rst:7 +msgid "Recommended Environments" +msgstr "" + +#: ..\..\source\install.rst:9 +msgid "We recommend these Linux distributions." +msgstr "" + +#: ..\..\source\install.rst:11 +msgid "`Ubuntu `_ 14.04/16.04 LTS 64bit" +msgstr "" + +#: ..\..\source\install.rst:12 +msgid "`MacOS `_ 10.10/10.11" +msgstr "" + +#: ..\..\source\install.rst:13 +msgid "`Windows `_ 7/8.1/10 64bit" +msgstr "" + +#: ..\..\source\install.rst:15 +msgid "The following versions of Python can be used: 2.7.6+, 3.4.3+, 3.5.1+, and 3.6.0+." +msgstr "" + +#: ..\..\source\install.rst:19 +msgid "We are testing python-pcl automatically with Jenkins, where all the above *recommended* environments are tested." +msgstr "" + +#: ..\..\source\install.rst:21 +msgid "python-pcl is supported on Python 2.7.6+, 3.4.3+, 3.5.1+, 3.6.0+. python-pcl uses C++ compiler such as g++. You need to install it before installing python-pcl. This is typical installation method for each platform::" +msgstr "" + +#: ..\..\source\install.rst:43 +msgid "If you use old ``setuptools``, upgrade it::" +msgstr "" + +#: ..\..\source\install.rst:49 +msgid "Dependencies" +msgstr "" + +#: ..\..\source\install.rst:51 +msgid "Before installing python-pcl, we recommend to upgrade ``setuptools`` if you are using an old one::" +msgstr "" + +#: ..\..\source\install.rst:55 +msgid "The following Python packages are required to install python-pcl. The latest version of each package will automatically be installed if missing." +msgstr "" + +#: ..\..\source\install.rst:58 +msgid "`NumPy `_ 1.9, 1.10, 1.11, 1.12" +msgstr "" + +#: ..\..\source\install.rst:62 +msgid "Install python-pcl" +msgstr "" + +#: ..\..\source\install.rst:65 +msgid "Install python-pcl via pip" +msgstr "" + +#: ..\..\source\install.rst:67 +msgid "We recommend to install python-pcl via pip::" +msgstr "" + +#: ..\..\source\install.rst:73 +msgid "All optional PointCloudLibrary related libraries, need to be installed before installing python-pcl. After you update these libraries, please reinstall python-pcl because you need to compile and link to the newer version of them." +msgstr "" + +#: ..\..\source\install.rst:78 +msgid "Install python-pcl from source" +msgstr "" + +#: ..\..\source\install.rst:80 +msgid "The tarball of the source tree is available via ``pip download python-pcl`` or from `the release notes page `_. You can use ``setup.py`` to install python-pcl from the tarball::" +msgstr "" + +#: ..\..\source\install.rst:87 +msgid "You can also install the development version of python-pcl from a cloned Git repository::" +msgstr "" + +#: ..\..\source\install.rst:97 +msgid "When an error occurs..." +msgstr "" + +#: ..\..\source\install.rst:99 +msgid "Use ``-vvvv`` option with ``pip`` command. That shows all logs of installation. It may help you::" +msgstr "" + +#: ..\..\source\install.rst:109 +msgid "Install python-pcl with pcl.dll" +msgstr "" + +#: ..\..\source\install.rst:114 +msgid "Install python-pcl for developers" +msgstr "" + +#: ..\..\source\install.rst:116 +msgid "python-pcl uses Cython (>=0.24). Developers need to use Cython to regenerate C++ sources from ``pyx`` files. We recommend to use ``pip`` with ``-e`` option for editable mode::" +msgstr "" + +#: ..\..\source\install.rst:124 +msgid "Users need not to install Cython as a distribution package of python-pcl only contains generated sources." +msgstr "" + +#: ..\..\source\install.rst:128 +msgid "Uninstall python-pcl" +msgstr "" + +#: ..\..\source\install.rst:130 +msgid "Use pip to uninstall python-pcl::" +msgstr "" + +#: ..\..\source\install.rst:136 +msgid "When you upgrade python-pcl, ``pip`` sometimes install the new version without removing the old one in ``site-packages``. In this case, ``pip uninstall`` only removes the latest one. To ensure that python-pcl is completely removed, run the above command repeatedly until ``pip`` returns an error." +msgstr "" + +#: ..\..\source\install.rst:142 +msgid "Upgrade python-pcl" +msgstr "" + +#: ..\..\source\install.rst:144 +msgid "Just use ``pip`` with ``-U`` option::" +msgstr "" + +#: ..\..\source\install.rst:150 +msgid "Reinstall python-pcl" +msgstr "" + +#: ..\..\source\install.rst:152 +msgid "If you want to reinstall python-pcl, please uninstall python-pcl and then install it. We recommend to use ``--no-cache-dir`` option as ``pip`` sometimes uses cache::" +msgstr "" + +#: ..\..\source\install.rst:158 +msgid "When you install python-pcl without PointCloudLibrary, and after that you want to use PointCloudLibrary, please reinstall python-pcl. You need to reinstall python-pcl when you want to upgrade PointCloudLibrary." +msgstr "" + +#: ..\..\source\install.rst:163 +msgid "FAQ" +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/license.po b/docs/source/locale/ja/LC_MESSAGES/license.po new file mode 100644 index 000000000..beed9a40a --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/license.po @@ -0,0 +1,120 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2015, Preferred Networks, inc. and Preferred Infrastructure, +# inc. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-28 11:33+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.4.0\n" + +#: ../../source/license.rst:2 +msgid "License" +msgstr "" + +#: ../../source/license.rst:4 +msgid "" +"Permission is hereby granted, free of charge, to any person obtaining a " +"copy of this software and associated documentation files (the " +"\"Software\"), to deal in the Software without restriction, including " +"without limitation the rights to use, copy, modify, merge, publish, " +"distribute, sublicense, and/or sell copies of the Software, and to permit" +" persons to whom the Software is furnished to do so, subject to the " +"following conditions:" +msgstr "" + +#: ../../source/license.rst:11 +msgid "" +"The above copyright notice and this permission notice shall be included " +"in all copies or substantial portions of the Software." +msgstr "" + +#: ../../source/license.rst:14 +msgid "" +"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS" +" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF " +"MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN" +" NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM," +" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR " +"OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE" +" USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: ../../source/license.rst:24 +msgid "python-pcl" +msgstr "" + +#: ../../source/license.rst:25 +msgid "" +"The python-pcl is designed based on Point Cloud Library's API. pcl-" +"python's source code and documents contain the original Point Cloud " +"Library ones." +msgstr "" + +#: ../../source/license.rst:29 +msgid "Software License Agreement (BSD License)" +msgstr "" + +#: ../../source/license.rst:31 +msgid "" +"Point Cloud Library (PCL) - www.pointclouds.org Copyright (c) 2009-2012, " +"Willow Garage, Inc. Copyright (c) 2012-, Open Perception, Inc. Copyright " +"(c) XXX, respective authors." +msgstr "" + +#: ../../source/license.rst:36 +msgid "All rights reserved." +msgstr "" + +#: ../../source/license.rst:38 +msgid "" +"Redistribution and use in source and binary forms, with or without " +"modification, are permitted provided that the following conditions are " +"met:" +msgstr "" + +#: ../../source/license.rst:42 +msgid "" +"Redistributions of source code must retain the above copyright notice, " +"this list of conditions and the following disclaimer." +msgstr "" + +#: ../../source/license.rst:44 +msgid "" +"Redistributions in binary form must reproduce the above copyright notice," +" this list of conditions and the following disclaimer in the " +"documentation and/or other materials provided with the distribution." +msgstr "" + +#: ../../source/license.rst:48 +msgid "" +"Neither the name of the copyright holder(s) nor the names of its " +"contributors may be used to endorse or promote products derived from this" +" software without specific prior written permission." +msgstr "" + +#: ../../source/license.rst:52 +msgid "" +"THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS " +"IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED " +"TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A " +"PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER " +"OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, " +"EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, " +"PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR " +"PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF " +"LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING " +"NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS " +"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/license.pot b/docs/source/locale/ja/LC_MESSAGES/license.pot new file mode 100644 index 000000000..ccc25a777 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/license.pot @@ -0,0 +1,74 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\license.rst:2 +msgid "License" +msgstr "" + +#: ..\..\source\license.rst:4 +msgid "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:" +msgstr "" + +#: ..\..\source\license.rst:11 +msgid "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software." +msgstr "" + +#: ..\..\source\license.rst:14 +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: ..\..\source\license.rst:24 +msgid "python-pcl" +msgstr "" + +#: ..\..\source\license.rst:25 +msgid "The python-pcl is designed based on Point Cloud Library's API. python-pcl's source code and documents contain the original Point Cloud Library ones." +msgstr "" + +#: ..\..\source\license.rst:29 +msgid "Software License Agreement (BSD License)" +msgstr "" + +#: ..\..\source\license.rst:31 +msgid "Point Cloud Library (PCL) - www.pointclouds.org Copyright (c) 2009-2012, Willow Garage, Inc. Copyright (c) 2012-, Open Perception, Inc. Copyright (c) XXX, respective authors." +msgstr "" + +#: ..\..\source\license.rst:36 +msgid "All rights reserved." +msgstr "" + +#: ..\..\source\license.rst:38 +msgid "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:" +msgstr "" + +#: ..\..\source\license.rst:42 +msgid "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer." +msgstr "" + +#: ..\..\source\license.rst:44 +msgid "Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution." +msgstr "" + +#: ..\..\source\license.rst:48 +msgid "Neither the name of the copyright holder(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission." +msgstr "" + +#: ..\..\source\license.rst:52 +msgid "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/overview.po b/docs/source/locale/ja/LC_MESSAGES/overview.po new file mode 100644 index 000000000..3e7bb5e65 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/overview.po @@ -0,0 +1,140 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2015, Preferred Networks, inc. and Preferred Infrastructure, +# inc. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:18+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.4.0\n" + +#: ../../source/overview.rst:4 +msgid "python-pcl Overview" +msgstr "" + +#: ../../source/overview.rst:8 +msgid "" +"`python-pcl `_ is an " +"implementation of PointCloudLibrary-compatible. interface." +msgstr "" + +#: ../../source/overview.rst:11 +msgid "" +"The following is a brief overview of supported subset of " +"PointCloudLibrary interface:" +msgstr "" + +#: ../../source/overview.rst:13 +msgid "`filters `_" +msgstr "" + +#: ../../source/overview.rst:14 +msgid "`features `_" +msgstr "" + +#: ../../source/overview.rst:15 +msgid "`keypoints `_" +msgstr "" + +#: ../../source/overview.rst:16 +msgid "" +"`registration " +"`_" +msgstr "" + +#: ../../source/overview.rst:17 +msgid "`kdtree `_" +msgstr "" + +#: ../../source/overview.rst:18 +msgid "`octree `_" +msgstr "" + +#: ../../source/overview.rst:19 +msgid "" +"`segmentation " +"`_" +msgstr "" + +#: ../../source/overview.rst:20 +msgid "" +"`sample_consensus " +"`_" +msgstr "" + +#: ../../source/overview.rst:21 +msgid "`surface `_" +msgstr "" + +#: ../../source/overview.rst:22 +msgid "`recognition `_" +msgstr "" + +#: ../../source/overview.rst:23 +msgid "`io `_" +msgstr "" + +#: ../../source/overview.rst:24 +msgid "" +"`visualization " +"`_" +msgstr "" + +#~ msgid "" +#~ "`python-pcl `_ is an implementation of " +#~ "NumPy-compatible multi-dimensional array on" +#~ " CUDA. python-pcl consists of :class" +#~ ":`python-pcl.ndarray`, the core multi-" +#~ "dimensional array class, and many " +#~ "functions on it. It supports a " +#~ "subset of :class:`numpy.ndarray` interface." +#~ msgstr "" + +#~ msgid "" +#~ "The following is a brief overview " +#~ "of supported subset of PointCloud " +#~ "interface:" +#~ msgstr "" + +#~ msgid "" +#~ "`Basic indexing " +#~ "`_ " +#~ "(indexing by ints, slices, newaxes, and" +#~ " Ellipsis)" +#~ msgstr "" + +#~ msgid "python-pcl also includes the following features for performance:" +#~ msgstr "" + +#~ msgid "" +#~ "python-pcl uses on-the-fly kernel" +#~ " synthesis: when a kernel call is " +#~ "required, it compiles a kernel code " +#~ "optimized for the shapes and dtypes " +#~ "of given arguments, sends it to " +#~ "the GPU device, and executes the " +#~ "kernel. The compiled code is cached " +#~ "to ``$(HOME)/.python-pcl/kernel_cache`` directory" +#~ " (this cache path can be overwritten" +#~ " by setting the ``CUPY_CACHE_DIR`` " +#~ "environment variable). It may make " +#~ "things slower at the first kernel " +#~ "call, though this slow down will " +#~ "be resolved at the second execution. " +#~ "python-pcl also caches the kernel " +#~ "code sent to GPU device within the" +#~ " process, which reduces the kernel " +#~ "transfer time on further calls." +#~ msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/overview.pot b/docs/source/locale/ja/LC_MESSAGES/overview.pot new file mode 100644 index 000000000..6ad8d3540 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/overview.pot @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\overview.rst:4 +msgid "python-pcl Overview" +msgstr "" + +#: ..\..\source\overview.rst:8 +msgid "`python-pcl `_ is an implementation of PointCloudLibrary-compatible. interface." +msgstr "" + +#: ..\..\source\overview.rst:11 +msgid "The following is a brief overview of supported subset of PointCloudLibrary interface:" +msgstr "" + +#: ..\..\source\overview.rst:13 +msgid "`filters `_" +msgstr "" + +#: ..\..\source\overview.rst:14 +msgid "`features `_" +msgstr "" + +#: ..\..\source\overview.rst:15 +msgid "`keypoints `_" +msgstr "" + +#: ..\..\source\overview.rst:16 +msgid "`registration `_" +msgstr "" + +#: ..\..\source\overview.rst:17 +msgid "`kdtree `_" +msgstr "" + +#: ..\..\source\overview.rst:18 +msgid "`octree `_" +msgstr "" + +#: ..\..\source\overview.rst:19 +msgid "`segmentation `_" +msgstr "" + +#: ..\..\source\overview.rst:20 +msgid "`sample_consensus `_" +msgstr "" + +#: ..\..\source\overview.rst:21 +msgid "`surface `_" +msgstr "" + +#: ..\..\source\overview.rst:22 +msgid "`recognition `_" +msgstr "" + +#: ..\..\source\overview.rst:23 +msgid "`io `_" +msgstr "" + +#: ..\..\source\overview.rst:24 +msgid "`visualization `_" +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/reference.po b/docs/source/locale/ja/LC_MESSAGES/reference.po new file mode 100644 index 000000000..d336760c9 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/reference.po @@ -0,0 +1,1557 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2015, Preferred Networks, inc. and Preferred Infrastructure, +# inc. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:18+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.4.0\n" + +#: ../../source/reference/common.rst:2 +msgid "Common Operations" +msgstr "" + +#: ../../source/reference/common.rst:5 +msgid "Elementwise bit operations" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.bitwise_and `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.bitwise_or `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.bitwise_xor `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.invert `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.left_shift `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.right_shift `" +msgstr "" + +#: ../../source/reference/common.rst:20 +msgid "Bit packing" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.packbits `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.unpackbits `" +msgstr "" + +#: ../../source/reference/common.rst:31 +msgid "Output formatting" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.binary_repr `" +msgstr "" + +#: ../../source/reference/environment.rst:2 +msgid "Environment variables" +msgstr "" + +#: ../../source/reference/environment.rst:4 +msgid "Here are the environment variables python-pcl uses." +msgstr "" + +#: ../../source/reference/environment.rst:8 +msgid "``PATH``" +msgstr "" + +#: ../../source/reference/environment.rst:8 +msgid "" +"Path to the directory to PointCloudLibrary dll/exe. See :ref:`overview` " +"for details." +msgstr "" + +#: ../../source/reference/environment.rst:14 +msgid "For install" +msgstr "" + +#: ../../source/reference/environment.rst:16 +msgid "These environment variables are only used during installation." +msgstr "" + +#: ../../source/reference/environment.rst:19 +msgid "``PCL_ROOT``" +msgstr "" + +#: ../../source/reference/environment.rst:19 +msgid "" +"Path to the directory containing PointCloudLibrary. The parent of the " +"directory containing ``nvcc`` is used as default. See " +":ref:`install_pointcloudlibrary` for details." +msgstr "" + +#: ../../source/reference/features.rst:2 +msgid "Features Routines" +msgstr "" + +#: ../../source/reference/features.rst:5 +msgid "Basic creation routines" +msgstr "" + +#: ../../:1 +msgid ":obj:`DifferenceOfNormalsEstimation `" +msgstr "" + +#: ../../:1 +msgid ":obj:`IntegralImageNormalEstimation `" +msgstr "" + +#: ../../:1 +msgid ":obj:`MomentOfInertiaEstimation `" +msgstr "" + +#: ../../:1 +msgid ":obj:`NormalEstimation `" +msgstr "" + +#: ../../:1 +msgid ":obj:`NormalEstimationOMP `" +msgstr "" + +#: ../../:1 +msgid ":obj:`RangeImageBorderExtractor `" +msgstr "" + +#: ../../:1 +msgid ":obj:`ROPSEstimation `" +msgstr "" + +#: ../../:1 +msgid ":obj:`VFHEstimation `" +msgstr "" + +#: ../../source/reference/filters.rst:2 +msgid "Filters" +msgstr "" + +#: ../../source/reference/filters.rst:5 +msgid "Device management" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ApproximateVoxelGrid `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ConditionalRemoval `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ConditionAnd `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.CropBox `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.CropHull `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.FieldComparison `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.PassThroughFilter `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ProjectInliers `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.RadiusOutlierRemoval `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.StatisticalOutlierRemovalFilter `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.VoxelGridFilter `" +msgstr "" + +#: ../../source/reference/generated/pcl.rst:2 ../../source/reference/pcl.rst:2 +msgid "pcl" +msgstr "" + +#: ../../source/reference/generated/pcl.rst:9 ../../source/reference/pcl.rst:9 +msgid "Functions" +msgstr "" + +#: ../../:1 +msgid ":obj:`load `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid "Load pointcloud from path." +msgstr "" + +#: ../../:1 +msgid ":obj:`load2 `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`load_PointWithViewpoint `\\ (path[, " +"format])" +msgstr "" + +#: ../../:1 +msgid ":obj:`load_XYZI `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid ":obj:`load_XYZRGB `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid ":obj:`load_XYZRGBA `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid ":obj:`save `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ../../:1 +msgid "Save pointcloud to file." +msgstr "" + +#: ../../:1 +msgid ":obj:`save2 `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ../../:1 +msgid "Save PointCloud_PointCloud2 to file." +msgstr "" + +#: ../../:1 +msgid "" +":obj:`save_PointNormal `\\ (cloud, path[, format, " +"binary])" +msgstr "" + +#: ../../:1 +msgid ":obj:`save_XYZRGBA `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ../../source/reference/generated/pcl.rst:30 +#: ../../source/reference/pcl.rst:30 +msgid "Classes" +msgstr "" + +#: ../../:1 +msgid ":obj:`VoxelGridFilter_PointXYZI `\\" +msgstr "" + +#: ../../:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGB `\\" +msgstr "" + +#: ../../:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGBA `\\" +msgstr "" + +#: ../../source/reference/generated/pcl.IntegralImageNormalEstimation.rst:2 +msgid "pcl.IntegralImageNormalEstimation" +msgstr "" + +#: ../../docstring of pcl.IntegralImageNormalEstimation:1 +msgid "IntegralImageNormalEstimation class for" +msgstr "" + +#: ../../source/reference/generated/pcl.IntegralImageNormalEstimation.rst:14 +#: ../../source/reference/generated/pcl.MomentOfInertiaEstimation.rst:14 +#: ../../source/reference/generated/pcl.NormalEstimation.rst:14 +#: ../../source/reference/generated/pcl.ROPSEstimation.rst:14 +#: ../../source/reference/generated/pcl.VFHEstimation.rst:14 +msgid "Methods" +msgstr "" + +#: ../../source/reference/generated/pcl.MomentOfInertiaEstimation.rst:2 +msgid "pcl.MomentOfInertiaEstimation" +msgstr "" + +#: ../../docstring of pcl.MomentOfInertiaEstimation:1 +msgid "MomentOfInertiaEstimation class for" +msgstr "" + +#: ../../source/reference/generated/pcl.NormalEstimation.rst:2 +msgid "pcl.NormalEstimation" +msgstr "" + +#: ../../docstring of pcl.NormalEstimation:1 +msgid "NormalEstimation class for" +msgstr "" + +#: ../../source/reference/generated/pcl.ROPSEstimation.rst:2 +msgid "pcl.ROPSEstimation" +msgstr "" + +#: ../../docstring of pcl.ROPSEstimation:1 +msgid "ROPSEstimation class for" +msgstr "" + +#: ../../source/reference/generated/pcl.VFHEstimation.rst:2 +msgid "pcl.VFHEstimation" +msgstr "" + +#: ../../docstring of pcl.VFHEstimation:1 +msgid "VFHEstimation class for" +msgstr "" + +#: ../../source/reference/grabber.rst:2 +msgid "Grabber" +msgstr "" + +#: ../../source/reference/index.rst:5 +msgid "python-pcl Reference Manual" +msgstr "" + +#: ../../source/reference/index.rst:7 +msgid "" +"This is the official reference of python-pcl, a multi-dimensional array " +"on CUDA with a subset of NumPy interface." +msgstr "" + +#: ../../source/reference/index.rst:11 +msgid "Indices and tables" +msgstr "" + +#: ../../source/reference/index.rst:13 +msgid ":ref:`genindex`" +msgstr "" + +#: ../../source/reference/index.rst:14 +msgid ":ref:`modindex`" +msgstr "" + +#: ../../source/reference/index.rst:17 +msgid "Reference" +msgstr "" + +#: ../../source/reference/io.rst:2 +msgid "Input and Output" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.load `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.save `" +msgstr "" + +#: ../../source/reference/kdtree.rst:2 +msgid "KdTree" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.KdTree `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.KdTree_FLANN `" +msgstr "" + +#: ../../source/reference/keypoint.rst:2 +msgid "KeyPoint" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.HarrisKeypoint3D `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.NarfKeypoint `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.UniformSampling `" +msgstr "" + +#: ../../source/reference/octree.rst:2 +msgid "Octree" +msgstr "" + +#: ../../source/reference/octree.rst:5 +msgid "Truth value testing" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.Octree2BufBase `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.OctreePointCloud `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.OctreePointCloud2Buf `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.OctreePointCloudChangeDetector `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.OctreePointCloudSearch `" +msgstr "" + +#: ../../source/reference/registration.rst:2 +msgid "Registration" +msgstr "" + +#: ../../source/reference/registration.rst:5 +msgid "Basic manipulations" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.GeneralizedIterativeClosestPoint `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.IterativeClosestPoint `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.IterativeClosestPointNonLinear `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.NormalDistributionsTransform `" +msgstr "" + +#: ../../source/reference/sampleconsensus.rst:2 +msgid "SampleConsensus" +msgstr "" + +#: ../../source/reference/sampleconsensus.rst:5 +msgid "Trigonometric functions" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.RandomSampleConsensus `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.SampleConsensusModel `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.SampleConsensusModelCylinder `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.SampleConsensusModelLine `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.SampleConsensusModelPlane `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.SampleConsensusModelRegistration `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.SampleConsensusModelSphere `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.SampleConsensusModelStick `" +msgstr "" + +#: ../../source/reference/segmentation.rst:2 +msgid "Segmentation" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.ConditionalEuclideanClustering `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.EuclideanClusterExtraction `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.MinCutSegmentation `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.ProgressiveMorphologicalFilter `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.Segmentation `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.SegmentationNormal `" +msgstr "" + +#: ../../source/reference/surface.rst:2 +msgid "Surface" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ConcaveHull `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.MovingLeastSquares `" +msgstr "" + +#: ../../source/reference/testing.rst:2 +msgid "Testing Modules" +msgstr "" + +#: ../../source/reference/testing.rst:6 +msgid "" +"python-pcl offers testing utilities to support unit testing. They are " +"under namespace :mod:`python-pcl.testing`." +msgstr "" + +#: ../../source/reference/testing.rst:11 +msgid "Standard Assertions" +msgstr "" + +#: ../../source/reference/testing.rst:13 +msgid "" +"The assertions have same names as NumPy's ones. The difference from NumPy" +" is that they can accept both :class:`numpy.ndarray` and :class:`pcl-" +"python.ndarray`." +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_allclose `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_almost_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_almost_equal_nulp `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_max_ulp `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_list_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_less `" +msgstr "" + +#: ../../source/reference/testing.rst:32 +msgid "NumPy-python-pcl Consistency Check" +msgstr "" + +#: ../../source/reference/testing.rst:34 +msgid "" +"The following decorators are for testing consistency between python-pcl's" +" functions and corresponding NumPy's ones." +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_allclose `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal_nulp `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_max_ulp `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_list_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_less `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_raises `" +msgstr "" + +#: ../../source/reference/testing.rst:52 +msgid "Parameterized dtype Test" +msgstr "" + +#: ../../source/reference/testing.rst:54 +msgid "" +"The following decorators offer the standard way for parameterized test " +"with respect to single or the combination of dtype(s)." +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.testing.for_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_all_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_float_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_signed_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_unsigned_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_int_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_dtypes_combination `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_all_dtypes_combination `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_signed_dtypes_combination `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_unsigned_dtypes_combination `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_int_dtypes_combination `" +msgstr "" + +#: ../../source/reference/testing.rst:76 +msgid "Parameterized order Test" +msgstr "" + +#: ../../source/reference/testing.rst:77 +msgid "" +"The following decorators offer the standard way to parameterize tests " +"with orders." +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.testing.for_orders `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.testing.for_CF_orders `" +msgstr "" + +#: ../../source/reference/tracking.rst:2 +msgid "Tracking" +msgstr "" + +#: ../../source/reference/visualization.rst:2 +msgid "Visualization" +msgstr "" + +#: ../../source/reference/visualization.rst:5 +msgid "viewer" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.CloudViewing `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.PCLHistogramViewing `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.PCLVisualizering `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.RangeImageVisualization `" +msgstr "" + +#~ msgid "" +#~ ":obj:`pcl.DifferenceOfNormalsEstimation " +#~ "`" +#~ msgstr "" + +#~ msgid ":obj:`pcl.NormalEstimationOMP `" +#~ msgstr "" + +#~ msgid ":obj:`pcl.RangeImageBorderExtractor `" +#~ msgstr "" + +#~ msgid "Low-Level CUDA Support" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.Device `" +#~ msgstr "" + +#~ msgid "Memory management" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.Memory `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.MemoryPointer `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.alloc `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.set_allocator `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.MemoryPool `" +#~ msgstr "" + +#~ msgid "Streams and events" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.Stream `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.Event `" +#~ msgstr "" + +#~ msgid "" +#~ ":obj:`python-pcl.cuda.get_elapsed_time `" +#~ msgstr "" + +#~ msgid "Profiler" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.profile `" +#~ msgstr "" + +#~ msgid "" +#~ ":obj:`python-pcl.cuda.profiler.initialize `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.profiler.start `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.profiler.stop `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.nvtx.Mark `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.nvtx.MarkC `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.nvtx.RangePush `" +#~ msgstr "" + +#~ msgid "" +#~ ":obj:`python-pcl.cuda.nvtx.RangePushC `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cuda.nvtx.RangePop `" +#~ msgstr "" + +#~ msgid "Difference between python-pcl and NumPy" +#~ msgstr "" + +#~ msgid "" +#~ "The interface of python-pcl is " +#~ "designed to obey that of NumPy. " +#~ "However, there are some differeneces." +#~ msgstr "" + +#~ msgid "Cast behavior from float to integer" +#~ msgstr "" + +#~ msgid "" +#~ "Some casting behaviors from float to " +#~ "integer are not defined in C++ " +#~ "specification. The casting from a " +#~ "negative float to unsigned integer and" +#~ " infinity to integer is one of " +#~ "such eamples. The behavior of NumPy " +#~ "depends on your CPU architecture. This" +#~ " is Intel CPU result." +#~ msgstr "" + +#~ msgid "Random methods support dtype argument" +#~ msgstr "" + +#~ msgid "" +#~ "NumPy's random value generator does not" +#~ " support dtype option and it always" +#~ " resturns a ``float32`` value. We " +#~ "support the option in python-pcl " +#~ "because cuRAND, which is used in " +#~ "python-pcl, supports any types of " +#~ "float values." +#~ msgstr "" + +#~ msgid "Out-of-bounds indices" +#~ msgstr "" + +#~ msgid "" +#~ "python-pcl handles out-of-bounds " +#~ "indices differently by default from " +#~ "NumPy when using integer array indexing." +#~ " NumPy handles them by raising an " +#~ "error, but python-pcl wraps around " +#~ "them." +#~ msgstr "" + +#~ msgid "Duplicate values in indices" +#~ msgstr "" + +#~ msgid "" +#~ "python-pcl's ``__setitem__`` behaves " +#~ "differently from NumPy when integer " +#~ "arrays reference the same location " +#~ "multiple times. In that case, the " +#~ "value that is actually stored is " +#~ "undefined. Here is an example of " +#~ "python-pcl." +#~ msgstr "" + +#~ msgid "" +#~ "NumPy stores the value corresponding to" +#~ " the last element among elements " +#~ "referencing duplicate locations." +#~ msgstr "" + +#~ msgid "NPZ files" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.savez `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.savez_compressed `" +#~ msgstr "" + +#~ msgid "String formatting" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.array_repr `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.array_str `" +#~ msgstr "" + +#~ msgid "Base-n representations" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.base_repr `" +#~ msgstr "" + +#~ msgid "NumPy-python-pcl Generic Code Support" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.get_array_module `" +#~ msgstr "" + +#~ msgid "Linear Algebra" +#~ msgstr "" + +#~ msgid "Matrix and vector products" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.dot `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.vdot `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.inner `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.outer `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.matmul `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.tensordot `" +#~ msgstr "" + +#~ msgid "Decompositions" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.linalg.cholesky `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.linalg.qr `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.linalg.svd `" +#~ msgstr "" + +#~ msgid "Matrix eigenvalues" +#~ msgstr "" + +#~ msgid "Norms etc." +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.linalg.norm `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.linalg.matrix_rank `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.linalg.slogdet `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.trace `" +#~ msgstr "" + +#~ msgid "Logic Functions" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.all `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.any `" +#~ msgstr "" + +#~ msgid "Infinities and NaNs" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.isfinite `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.isinf `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.isnan `" +#~ msgstr "" + +#~ msgid "Array type testing" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.isscalar `" +#~ msgstr "" + +#~ msgid "Logic operations" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.logical_and `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.logical_or `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.logical_not `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.logical_xor `" +#~ msgstr "" + +#~ msgid "Comparison operations" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.greater `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.greater_equal `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.less `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.less_equal `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.equal `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.not_equal `" +#~ msgstr "" + +#~ msgid "Array Manipulation Routines" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.copyto `" +#~ msgstr "" + +#~ msgid "Shape manipulation" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.reshape `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.ravel `" +#~ msgstr "" + +#~ msgid "Transposition" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.rollaxis `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.swapaxes `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.transpose `" +#~ msgstr "" + +#~ msgid "Edit dimensionalities" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.atleast_1d `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.atleast_2d `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.atleast_3d `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.broadcast `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.broadcast_arrays `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.broadcast_to `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.expand_dims `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.squeeze `" +#~ msgstr "" + +#~ msgid "Changing kind of array" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.asarray `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.asanyarray `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.asfortranarray `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.ascontiguousarray `" +#~ msgstr "" + +#~ msgid "Joining arrays along axis" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.concatenate `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.stack `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.column_stack `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.dstack `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.hstack `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.vstack `" +#~ msgstr "" + +#~ msgid "Splitting arrays along axis" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.split `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.array_split `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.dsplit `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.hsplit `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.vsplit `" +#~ msgstr "" + +#~ msgid "Repeating part of arrays along axis" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.tile `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.repeat `" +#~ msgstr "" + +#~ msgid "Rearranging elements" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.flip `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.fliplr `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.flipud `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.roll `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.rot90 `" +#~ msgstr "" + +#~ msgid "Mathematical Functions" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.sin `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cos `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.tan `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.arcsin `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.arccos `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.arctan `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.hypot `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.arctan2 `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.deg2rad `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.rad2deg `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.degrees `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.radians `" +#~ msgstr "" + +#~ msgid "Hyperbolic functions" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.sinh `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cosh `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.tanh `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.arcsinh `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.arccosh `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.arctanh `" +#~ msgstr "" + +#~ msgid "Rounding" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.rint `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.floor `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.ceil `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.trunc `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.fix `" +#~ msgstr "" + +#~ msgid "Sums and products" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.sum `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.prod `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cumsum `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.cumprod `" +#~ msgstr "" + +#~ msgid "Exponential and logarithm functions" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.exp `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.expm1 `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.exp2 `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.log `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.log10 `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.log2 `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.log1p `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.logaddexp `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.logaddexp2 `" +#~ msgstr "" + +#~ msgid "Floating point manipulations" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.signbit `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.copysign `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.ldexp `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.frexp `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.nextafter `" +#~ msgstr "" + +#~ msgid "Arithmetic operations" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.negative `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.add `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.subtract `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.multiply `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.divide `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.true_divide `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.floor_divide `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.power `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.fmod `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.mod `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.remainder `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.modf `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.reciprocal `" +#~ msgstr "" + +#~ msgid "Miscellaneous" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.clip `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.sqrt `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.square `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.absolute `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.sign `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.maximum `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.minimum `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.fmax `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.fmin `" +#~ msgstr "" + +#~ msgid "Kernel binary memoization" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.memoize `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.clear_memo `" +#~ msgstr "" + +#~ msgid "Multi-Dimensional Array (ndarray)" +#~ msgstr "" + +#~ msgid "" +#~ ":class:`python-pcl.ndarray` is the pcl-" +#~ "python counterpart of NumPy " +#~ ":class:`numpy.ndarray`. It provides an " +#~ "intuitive interface for a fixed-size " +#~ "multidimensional array which resides in " +#~ "a CUDA device." +#~ msgstr "" + +#~ msgid "" +#~ "For the basic concept of ``ndarray``\\s," +#~ " please refer to the `NumPy " +#~ "documentation " +#~ "`_." +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.ndarray `" +#~ msgstr "" + +#~ msgid "Code compatibility features" +#~ msgstr "" + +#~ msgid "" +#~ ":class:`python-pcl.ndarray` is designed to " +#~ "be interchangeable with :class:`numpy.ndarray` " +#~ "in terms of code compatibility as " +#~ "much as possible. But occasionally, you" +#~ " will need to know whether the " +#~ "arrays you're handling are :class:`pcl-" +#~ "python.ndarray` or :class:`numpy.ndarray`. One " +#~ "example is when invoking module-level" +#~ " functions such as :meth:`python-pcl.sum`" +#~ " or :meth:`numpy.sum`. In such situations," +#~ " :meth:`python-pcl.get_array_module` can be " +#~ "used." +#~ msgstr "" + +#~ msgid "Conversion to/from NumPy arrays" +#~ msgstr "" + +#~ msgid "" +#~ ":class:`python-pcl.ndarray` and " +#~ ":class:`numpy.ndarray` are not implicitly " +#~ "convertible to each other. That means," +#~ " NumPy functions cannot take :class" +#~ ":`python-pcl.ndarray`\\s as inputs, and " +#~ "vice versa." +#~ msgstr "" + +#~ msgid "" +#~ "To convert :class:`numpy.ndarray` to :class" +#~ ":`python-pcl.ndarray`, use :meth:`pcl-" +#~ "python.array` or :meth:`python-pcl.asarray`." +#~ msgstr "" + +#~ msgid "" +#~ "To convert :class:`python-pcl.ndarray` to " +#~ ":class:`numpy.ndarray`, use :meth:`pcl-" +#~ "python.asnumpy` or :meth:`python-pcl.ndarray.get`." +#~ msgstr "" + +#~ msgid "" +#~ "Note that converting between :class:`pcl-" +#~ "python.ndarray` and :class:`numpy.ndarray` incurs" +#~ " data transfer between the host (CPU)" +#~ " device and the GPU device, which " +#~ "is costly in terms of performance." +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.array `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.asnumpy `" +#~ msgstr "" + +#~ msgid "Padding" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.pad `" +#~ msgstr "" + +#~ msgid "Profiling" +#~ msgstr "" + +#~ msgid "time range" +#~ msgstr "" + +#~ msgid "" +#~ ":obj:`python-pcl.prof.TimeRangeDecorator `" +#~ msgstr "" + +#~ msgid ":obj:`python-pcl.prof.time_range `" +#~ msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/reference.pot b/docs/source/locale/ja/LC_MESSAGES/reference.pot new file mode 100644 index 000000000..0c66c73b9 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/reference.pot @@ -0,0 +1,731 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\reference\common.rst:2 +msgid "Common Operations" +msgstr "" + +#: ..\..\source\reference\common.rst:5 +msgid "Elementwise bit operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_and `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_or `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_xor `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.invert `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.left_shift `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.right_shift `" +msgstr "" + +#: ..\..\source\reference\common.rst:20 +msgid "Bit packing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.packbits `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.unpackbits `" +msgstr "" + +#: ..\..\source\reference\common.rst:31 +msgid "Output formatting" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.binary_repr `" +msgstr "" + +#: ..\..\source\reference\environment.rst:2 +msgid "Environment variables" +msgstr "" + +#: ..\..\source\reference\environment.rst:4 +msgid "Here are the environment variables python-pcl uses." +msgstr "" + +#: ..\..\source\reference\environment.rst:8 +msgid "``PATH``" +msgstr "" + +#: ..\..\source\reference\environment.rst:8 +msgid "Path to the directory to PointCloudLibrary dll/exe. See :ref:`overview` for details." +msgstr "" + +#: ..\..\source\reference\environment.rst:14 +msgid "For install" +msgstr "" + +#: ..\..\source\reference\environment.rst:16 +msgid "These environment variables are only used during installation." +msgstr "" + +#: ..\..\source\reference\environment.rst:19 +msgid "``PCL_ROOT``" +msgstr "" + +#: ..\..\source\reference\environment.rst:19 +msgid "Path to the directory containing PointCloudLibrary. The parent of the directory containing ``nvcc`` is used as default. See :ref:`install_pointcloudlibrary` for details." +msgstr "" + +#: ..\..\source\reference\features.rst:2 +msgid "Features Routines" +msgstr "" + +#: ..\..\source\reference\features.rst:5 +msgid "Basic creation routines" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`DifferenceOfNormalsEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`IntegralImageNormalEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`MomentOfInertiaEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`NormalEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`NormalEstimationOMP `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`RangeImageBorderExtractor `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`ROPSEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`VFHEstimation `" +msgstr "" + +#: ..\..\source\reference\filters.rst:2 +msgid "Filters" +msgstr "" + +#: ..\..\source\reference\filters.rst:5 +msgid "Device management" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ApproximateVoxelGrid `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ConditionalRemoval `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ConditionAnd `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.CropBox `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.CropHull `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.FieldComparison `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.PassThroughFilter `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ProjectInliers `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.RadiusOutlierRemoval `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.StatisticalOutlierRemovalFilter `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.VoxelGridFilter `" +msgstr "" + +#: ..\..\source\reference\generated\pcl.rst:2 +#: ..\..\source\reference\pcl.rst:2 +msgid "pcl" +msgstr "" + +#: ..\..\source\reference\generated\pcl.rst:9 +#: ..\..\source\reference\pcl.rst:9 +msgid "Functions" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid "Load pointcloud from path." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load2 `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_PointWithViewpoint `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZI `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZRGB `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZRGBA `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid "Save pointcloud to file." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save2 `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid "Save PointCloud_PointCloud2 to file." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save_PointNormal `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save_XYZRGBA `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\source\reference\generated\pcl.rst:30 +#: ..\..\source\reference\pcl.rst:30 +msgid "Classes" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZI `\\" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGB `\\" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGBA `\\" +msgstr "" + +#: ..\..\source\reference\generated\pcl.IntegralImageNormalEstimation.rst:2 +msgid "pcl.IntegralImageNormalEstimation" +msgstr "" + +#: ..\..\docstring of pcl.IntegralImageNormalEstimation:1 +msgid "IntegralImageNormalEstimation class for" +msgstr "" + +#: ..\..\source\reference\generated\pcl.IntegralImageNormalEstimation.rst:14 +#: ..\..\source\reference\generated\pcl.MomentOfInertiaEstimation.rst:14 +#: ..\..\source\reference\generated\pcl.NormalEstimation.rst:14 +#: ..\..\source\reference\generated\pcl.ROPSEstimation.rst:14 +#: ..\..\source\reference\generated\pcl.VFHEstimation.rst:14 +msgid "Methods" +msgstr "" + +#: ..\..\source\reference\generated\pcl.MomentOfInertiaEstimation.rst:2 +msgid "pcl.MomentOfInertiaEstimation" +msgstr "" + +#: ..\..\docstring of pcl.MomentOfInertiaEstimation:1 +msgid "MomentOfInertiaEstimation class for" +msgstr "" + +#: ..\..\source\reference\generated\pcl.NormalEstimation.rst:2 +msgid "pcl.NormalEstimation" +msgstr "" + +#: ..\..\docstring of pcl.NormalEstimation:1 +msgid "NormalEstimation class for" +msgstr "" + +#: ..\..\source\reference\generated\pcl.ROPSEstimation.rst:2 +msgid "pcl.ROPSEstimation" +msgstr "" + +#: ..\..\docstring of pcl.ROPSEstimation:1 +msgid "ROPSEstimation class for" +msgstr "" + +#: ..\..\source\reference\generated\pcl.VFHEstimation.rst:2 +msgid "pcl.VFHEstimation" +msgstr "" + +#: ..\..\docstring of pcl.VFHEstimation:1 +msgid "VFHEstimation class for" +msgstr "" + +#: ..\..\source\reference\grabber.rst:2 +msgid "Grabber" +msgstr "" + +#: ..\..\source\reference\index.rst:5 +msgid "python-pcl Reference Manual" +msgstr "" + +#: ..\..\source\reference\index.rst:7 +msgid "This is the official reference of python-pcl, a multi-dimensional array on CUDA with a subset of NumPy interface." +msgstr "" + +#: ..\..\source\reference\index.rst:11 +msgid "Indices and tables" +msgstr "" + +#: ..\..\source\reference\index.rst:13 +msgid ":ref:`genindex`" +msgstr "" + +#: ..\..\source\reference\index.rst:14 +msgid ":ref:`modindex`" +msgstr "" + +#: ..\..\source\reference\index.rst:17 +msgid "Reference" +msgstr "" + +#: ..\..\source\reference\io.rst:2 +msgid "Input and Output" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.load `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.save `" +msgstr "" + +#: ..\..\source\reference\kdtree.rst:2 +msgid "KdTree" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.KdTree `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.KdTree_FLANN `" +msgstr "" + +#: ..\..\source\reference\keypoint.rst:2 +msgid "KeyPoint" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.HarrisKeypoint3D `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.NarfKeypoint `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.UniformSampling `" +msgstr "" + +#: ..\..\source\reference\octree.rst:2 +msgid "Octree" +msgstr "" + +#: ..\..\source\reference\octree.rst:5 +msgid "Truth value testing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.Octree2BufBase `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.OctreePointCloud `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.OctreePointCloud2Buf `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.OctreePointCloudChangeDetector `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.OctreePointCloudSearch `" +msgstr "" + +#: ..\..\source\reference\registration.rst:2 +msgid "Registration" +msgstr "" + +#: ..\..\source\reference\registration.rst:5 +msgid "Basic manipulations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.GeneralizedIterativeClosestPoint `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.IterativeClosestPoint `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.IterativeClosestPointNonLinear `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.NormalDistributionsTransform `" +msgstr "" + +#: ..\..\source\reference\sampleconsensus.rst:2 +msgid "SampleConsensus" +msgstr "" + +#: ..\..\source\reference\sampleconsensus.rst:5 +msgid "Trigonometric functions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.RandomSampleConsensus `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModel `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelCylinder `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelLine `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelPlane `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelRegistration `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelSphere `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelStick `" +msgstr "" + +#: ..\..\source\reference\segmentation.rst:2 +msgid "Segmentation" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ConditionalEuclideanClustering `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.EuclideanClusterExtraction `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.MinCutSegmentation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ProgressiveMorphologicalFilter `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.Segmentation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SegmentationNormal `" +msgstr "" + +#: ..\..\source\reference\surface.rst:2 +msgid "Surface" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ConcaveHull `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.MovingLeastSquares `" +msgstr "" + +#: ..\..\source\reference\testing.rst:2 +msgid "Testing Modules" +msgstr "" + +#: ..\..\source\reference\testing.rst:6 +msgid "python-pcl offers testing utilities to support unit testing. They are under namespace :mod:`python-pcl.testing`." +msgstr "" + +#: ..\..\source\reference\testing.rst:11 +msgid "Standard Assertions" +msgstr "" + +#: ..\..\source\reference\testing.rst:13 +msgid "The assertions have same names as NumPy's ones. The difference from NumPy is that they can accept both :class:`numpy.ndarray` and :class:`python-pcl.ndarray`." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_allclose `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_almost_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_almost_equal_nulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_max_ulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_list_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_less `" +msgstr "" + +#: ..\..\source\reference\testing.rst:32 +msgid "NumPy-python-pcl Consistency Check" +msgstr "" + +#: ..\..\source\reference\testing.rst:34 +msgid "The following decorators are for testing consistency between python-pcl's functions and corresponding NumPy's ones." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_allclose `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal_nulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_max_ulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_list_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_less `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_raises `" +msgstr "" + +#: ..\..\source\reference\testing.rst:52 +msgid "Parameterized dtype Test" +msgstr "" + +#: ..\..\source\reference\testing.rst:54 +msgid "The following decorators offer the standard way for parameterized test with respect to single or the combination of dtype(s)." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_all_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_float_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_signed_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_unsigned_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_int_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_all_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_signed_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_unsigned_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_int_dtypes_combination `" +msgstr "" + +#: ..\..\source\reference\testing.rst:76 +msgid "Parameterized order Test" +msgstr "" + +#: ..\..\source\reference\testing.rst:77 +msgid "The following decorators offer the standard way to parameterize tests with orders." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_orders `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_CF_orders `" +msgstr "" + +#: ..\..\source\reference\tracking.rst:2 +msgid "Tracking" +msgstr "" + +#: ..\..\source\reference\visualization.rst:2 +msgid "Visualization" +msgstr "" + +#: ..\..\source\reference\visualization.rst:5 +msgid "viewer" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.CloudViewing `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.PCLHistogramViewing `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.PCLVisualizering `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.RangeImageVisualization `" +msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/tutorial.po b/docs/source/locale/ja/LC_MESSAGES/tutorial.po new file mode 100644 index 000000000..bf53d4e29 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/tutorial.po @@ -0,0 +1,1607 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2015, Preferred Networks, inc. and Preferred Infrastructure, +# inc. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:18+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.4.0\n" + +#: ../../source/tutorial/common.rst:2 +msgid "Common Operations" +msgstr "" + +#: ../../source/tutorial/common.rst:5 +msgid "Elementwise bit operations" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.bitwise_and `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.bitwise_or `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.bitwise_xor `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.invert `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.left_shift `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.right_shift `" +msgstr "" + +#: ../../source/tutorial/common.rst:20 +msgid "Bit packing" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.packbits `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.unpackbits `" +msgstr "" + +#: ../../source/tutorial/common.rst:31 +msgid "Output formatting" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.binary_repr `" +msgstr "" + +#: ../../source/tutorial/features.rst:2 +msgid "Array Creation Routines" +msgstr "" + +#: ../../source/tutorial/features.rst:5 +msgid "Basic creation routines" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.empty `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.empty_like `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.eye `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.identity `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ones `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ones_like `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.zeros `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.zeros_like `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.full `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.full_like `" +msgstr "" + +#: ../../source/tutorial/features.rst:24 +msgid "Creation from other data" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.array `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.asarray `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.asanyarray `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ascontiguousarray `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.copy `" +msgstr "" + +#: ../../source/tutorial/features.rst:38 +msgid "Numerical ranges" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.arange `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.linspace `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.logspace `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.meshgrid `" +msgstr "" + +#: ../../source/tutorial/features.rst:51 +msgid "Matrix creation" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.diag `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.diagflat `" +msgstr "" + +#: ../../source/tutorial/filters.rst:2 +msgid "Low-Level CUDA Support" +msgstr "" + +#: ../../source/tutorial/filters.rst:5 +msgid "Device management" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.Device `" +msgstr "" + +#: ../../source/tutorial/filters.rst:15 +msgid "Memory management" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.Memory `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.MemoryPointer `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.alloc `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.set_allocator `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.MemoryPool `" +msgstr "" + +#: ../../source/tutorial/filters.rst:29 +msgid "Streams and events" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.Stream `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.Event `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.get_elapsed_time `" +msgstr "" + +#: ../../source/tutorial/filters.rst:41 +msgid "Profiler" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.profile `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.cuda.profiler.initialize `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.profiler.start `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.profiler.stop `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.nvtx.Mark `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.nvtx.MarkC `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.nvtx.RangePush `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.nvtx.RangePushC `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cuda.nvtx.RangePop `" +msgstr "" + +#: ../../source/tutorial/generated/pcl.rst:2 ../../source/tutorial/pcl.rst:2 +msgid "pcl" +msgstr "" + +#: ../../source/tutorial/generated/pcl.rst:9 ../../source/tutorial/pcl.rst:9 +msgid "Functions" +msgstr "" + +#: ../../:1 +msgid ":obj:`load `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid "Load pointcloud from path." +msgstr "" + +#: ../../:1 +msgid ":obj:`load2 `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`load_PointWithViewpoint `\\ (path[, " +"format])" +msgstr "" + +#: ../../:1 +msgid ":obj:`load_XYZI `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid ":obj:`load_XYZRGB `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid ":obj:`load_XYZRGBA `\\ (path[, format])" +msgstr "" + +#: ../../:1 +msgid ":obj:`save `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ../../:1 +msgid "Save pointcloud to file." +msgstr "" + +#: ../../:1 +msgid ":obj:`save2 `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ../../:1 +msgid "Save PointCloud_PointCloud2 to file." +msgstr "" + +#: ../../:1 +msgid "" +":obj:`save_PointNormal `\\ (cloud, path[, format, " +"binary])" +msgstr "" + +#: ../../:1 +msgid ":obj:`save_XYZRGBA `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ../../source/tutorial/generated/pcl.rst:30 ../../source/tutorial/pcl.rst:30 +msgid "Classes" +msgstr "" + +#: ../../source/tutorial/grabber.rst:2 +msgid "Difference between python-pcl and NumPy" +msgstr "" + +#: ../../source/tutorial/grabber.rst:4 +msgid "" +"The interface of python-pcl is designed to obey that of NumPy. However, " +"there are some differeneces." +msgstr "" + +#: ../../source/tutorial/grabber.rst:9 +msgid "Cast behavior from float to integer" +msgstr "" + +#: ../../source/tutorial/grabber.rst:11 +msgid "" +"Some casting behaviors from float to integer are not defined in C++ " +"specification. The casting from a negative float to unsigned integer and " +"infinity to integer is one of such eamples. The behavior of NumPy depends" +" on your CPU architecture. This is Intel CPU result." +msgstr "" + +#: ../../source/tutorial/grabber.rst:28 +msgid "Random methods support dtype argument" +msgstr "" + +#: ../../source/tutorial/grabber.rst:30 +msgid "" +"NumPy's random value generator does not support dtype option and it " +"always resturns a ``float32`` value. We support the option in python-pcl " +"because cuRAND, which is used in python-pcl, supports any types of float " +"values." +msgstr "" + +#: ../../source/tutorial/grabber.rst:42 +msgid "Out-of-bounds indices" +msgstr "" + +#: ../../source/tutorial/grabber.rst:43 +msgid "" +"python-pcl handles out-of-bounds indices differently by default from " +"NumPy when using integer array indexing. NumPy handles them by raising an" +" error, but python-pcl wraps around them." +msgstr "" + +#: ../../source/tutorial/grabber.rst:59 +msgid "Duplicate values in indices" +msgstr "" + +#: ../../source/tutorial/grabber.rst:60 +msgid "" +"python-pcl's ``__setitem__`` behaves differently from NumPy when integer " +"arrays reference the same location multiple times. In that case, the " +"value that is actually stored is undefined. Here is an example of pcl-" +"python." +msgstr "" + +#: ../../source/tutorial/grabber.rst:72 +msgid "" +"NumPy stores the value corresponding to the last element among elements " +"referencing duplicate locations." +msgstr "" + +#: ../../source/tutorial/index.rst:2 +msgid "python-pcl Tutorial" +msgstr "" + +#: ../../source/tutorial/io.rst:2 +msgid "Input and Output" +msgstr "" + +#: ../../source/tutorial/io.rst:5 +msgid "NPZ files" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.load `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.save `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.savez `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.savez_compressed `" +msgstr "" + +#: ../../source/tutorial/io.rst:18 +msgid "String formatting" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.array_repr `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.array_str `" +msgstr "" + +#: ../../source/tutorial/io.rst:29 +msgid "Base-n representations" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.base_repr `" +msgstr "" + +#: ../../source/tutorial/kdtree.rst:2 +msgid "NumPy-python-pcl Generic Code Support" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.get_array_module `" +msgstr "" + +#: ../../source/tutorial/keypoint.rst:2 +msgid "Linear Algebra" +msgstr "" + +#: ../../source/tutorial/keypoint.rst:5 +msgid "Matrix and vector products" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.dot `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.vdot `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.inner `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.outer `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.matmul `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.tensordot `" +msgstr "" + +#: ../../source/tutorial/keypoint.rst:20 +msgid "Decompositions" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.linalg.cholesky `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.linalg.qr `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.linalg.svd `" +msgstr "" + +#: ../../source/tutorial/keypoint.rst:31 +msgid "Matrix eigenvalues" +msgstr "" + +#: ../../source/tutorial/keypoint.rst:37 +msgid "Norms etc." +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.linalg.norm `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.linalg.matrix_rank `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.linalg.slogdet `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.trace `" +msgstr "" + +#: ../../source/tutorial/octree.rst:2 +msgid "Logic Functions" +msgstr "" + +#: ../../source/tutorial/octree.rst:5 +msgid "Truth value testing" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.all `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.any `" +msgstr "" + +#: ../../source/tutorial/octree.rst:16 +msgid "Infinities and NaNs" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.isfinite `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.isinf `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.isnan `" +msgstr "" + +#: ../../source/tutorial/octree.rst:28 +msgid "Array type testing" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.isscalar `" +msgstr "" + +#: ../../source/tutorial/octree.rst:39 +msgid "Logic operations" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.logical_and `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.logical_or `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.logical_not `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.logical_xor `" +msgstr "" + +#: ../../source/tutorial/octree.rst:52 +msgid "Comparison operations" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.greater `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.greater_equal `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.less `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.less_equal `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.equal `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.not_equal `" +msgstr "" + +#: ../../:1 +msgid ":obj:`VoxelGridFilter_PointXYZI `\\" +msgstr "" + +#: ../../:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGB `\\" +msgstr "" + +#: ../../:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGBA `\\" +msgstr "" + +#: ../../source/tutorial/registration.rst:2 +msgid "Array Manipulation Routines" +msgstr "" + +#: ../../source/tutorial/registration.rst:5 +msgid "Basic manipulations" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.copyto `" +msgstr "" + +#: ../../source/tutorial/registration.rst:15 +msgid "Shape manipulation" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.reshape `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ravel `" +msgstr "" + +#: ../../source/tutorial/registration.rst:26 +msgid "Transposition" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.rollaxis `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.swapaxes `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.transpose `" +msgstr "" + +#: ../../source/tutorial/registration.rst:38 +msgid "Edit dimensionalities" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.atleast_1d `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.atleast_2d `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.atleast_3d `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.broadcast `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.broadcast_arrays `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.broadcast_to `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.expand_dims `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.squeeze `" +msgstr "" + +#: ../../source/tutorial/registration.rst:55 +msgid "Changing kind of array" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.asfortranarray `" +msgstr "" + +#: ../../source/tutorial/registration.rst:68 +msgid "Joining arrays along axis" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.concatenate `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.stack `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.column_stack `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.dstack `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.hstack `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.vstack `" +msgstr "" + +#: ../../source/tutorial/registration.rst:83 +msgid "Splitting arrays along axis" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.split `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.array_split `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.dsplit `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.hsplit `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.vsplit `" +msgstr "" + +#: ../../source/tutorial/registration.rst:97 +msgid "Repeating part of arrays along axis" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.tile `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.repeat `" +msgstr "" + +#: ../../source/tutorial/registration.rst:108 +msgid "Rearranging elements" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.flip `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.fliplr `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.flipud `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.roll `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.rot90 `" +msgstr "" + +#: ../../source/tutorial/sampleconsensus.rst:2 +msgid "Mathematical Functions" +msgstr "" + +#: ../../source/tutorial/sampleconsensus.rst:5 +msgid "Trigonometric functions" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.sin `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cos `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.tan `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.arcsin `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.arccos `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.arctan `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.hypot `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.arctan2 `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.deg2rad `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.rad2deg `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.degrees `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.radians `" +msgstr "" + +#: ../../source/tutorial/sampleconsensus.rst:26 +msgid "Hyperbolic functions" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.sinh `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cosh `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.tanh `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.arcsinh `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.arccosh `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.arctanh `" +msgstr "" + +#: ../../source/tutorial/sampleconsensus.rst:41 +msgid "Rounding" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.rint `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.floor `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ceil `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.trunc `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.fix `" +msgstr "" + +#: ../../source/tutorial/sampleconsensus.rst:55 +msgid "Sums and products" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.sum `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.prod `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cumsum `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.cumprod `" +msgstr "" + +#: ../../source/tutorial/sampleconsensus.rst:68 +msgid "Exponential and logarithm functions" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.exp `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.expm1 `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.exp2 `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.log `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.log10 `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.log2 `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.log1p `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.logaddexp `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.logaddexp2 `" +msgstr "" + +#: ../../source/tutorial/sampleconsensus.rst:86 +msgid "Floating point manipulations" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.signbit `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.copysign `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ldexp `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.frexp `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.nextafter `" +msgstr "" + +#: ../../source/tutorial/sampleconsensus.rst:100 +msgid "Arithmetic operations" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.negative `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.add `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.subtract `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.multiply `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.divide `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.true_divide `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.floor_divide `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.power `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.fmod `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.mod `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.remainder `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.modf `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.reciprocal `" +msgstr "" + +#: ../../source/tutorial/sampleconsensus.rst:122 +msgid "Miscellaneous" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.clip `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.sqrt `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.square `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.absolute `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.sign `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.maximum `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.minimum `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.fmax `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.fmin `" +msgstr "" + +#: ../../source/tutorial/segmentation.rst:2 +msgid "Kernel binary memoization" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.memoize `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.clear_memo `" +msgstr "" + +#: ../../source/tutorial/surface.rst:2 +msgid "Multi-Dimensional Array (ndarray)" +msgstr "" + +#: ../../source/tutorial/surface.rst:4 +msgid "" +":class:`python-pcl.ndarray` is the python-pcl counterpart of NumPy " +":class:`numpy.ndarray`. It provides an intuitive interface for a fixed-" +"size multidimensional array which resides in a CUDA device." +msgstr "" + +#: ../../source/tutorial/surface.rst:8 +msgid "" +"For the basic concept of ``ndarray``\\s, please refer to the `NumPy " +"documentation " +"`_." +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.ndarray `" +msgstr "" + +#: ../../source/tutorial/surface.rst:19 +msgid "Code compatibility features" +msgstr "" + +#: ../../source/tutorial/surface.rst:21 +msgid "" +":class:`python-pcl.ndarray` is designed to be interchangeable with " +":class:`numpy.ndarray` in terms of code compatibility as much as " +"possible. But occasionally, you will need to know whether the arrays " +"you're handling are :class:`python-pcl.ndarray` or " +":class:`numpy.ndarray`. One example is when invoking module-level " +"functions such as :meth:`python-pcl.sum` or :meth:`numpy.sum`. In such " +"situations, :meth:`python-pcl.get_array_module` can be used." +msgstr "" + +#: ../../source/tutorial/surface.rst:34 +msgid "Conversion to/from NumPy arrays" +msgstr "" + +#: ../../source/tutorial/surface.rst:36 +msgid "" +":class:`python-pcl.ndarray` and :class:`numpy.ndarray` are not implicitly" +" convertible to each other. That means, NumPy functions cannot take " +":class:`python-pcl.ndarray`\\s as inputs, and vice versa." +msgstr "" + +#: ../../source/tutorial/surface.rst:39 +msgid "" +"To convert :class:`numpy.ndarray` to :class:`python-pcl.ndarray`, use " +":meth:`python-pcl.array` or :meth:`python-pcl.asarray`." +msgstr "" + +#: ../../source/tutorial/surface.rst:40 +msgid "" +"To convert :class:`python-pcl.ndarray` to :class:`numpy.ndarray`, use " +":meth:`python-pcl.asnumpy` or :meth:`python-pcl.ndarray.get`." +msgstr "" + +#: ../../source/tutorial/surface.rst:42 +msgid "" +"Note that converting between :class:`python-pcl.ndarray` and " +":class:`numpy.ndarray` incurs data transfer between the host (CPU) device" +" and the GPU device, which is costly in terms of performance." +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.asnumpy `" +msgstr "" + +#: ../../source/tutorial/testing.rst:2 +msgid "Testing Modules" +msgstr "" + +#: ../../source/tutorial/testing.rst:6 +msgid "" +"python-pcl offers testing utilities to support unit testing. They are " +"under namespace :mod:`python-pcl.testing`." +msgstr "" + +#: ../../source/tutorial/testing.rst:11 +msgid "Standard Assertions" +msgstr "" + +#: ../../source/tutorial/testing.rst:13 +msgid "" +"The assertions have same names as NumPy's ones. The difference from NumPy" +" is that they can accept both :class:`numpy.ndarray` and :class:`pcl-" +"python.ndarray`." +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_allclose `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_almost_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_almost_equal_nulp `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_max_ulp `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_list_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.assert_array_less `" +msgstr "" + +#: ../../source/tutorial/testing.rst:32 +msgid "NumPy-python-pcl Consistency Check" +msgstr "" + +#: ../../source/tutorial/testing.rst:34 +msgid "" +"The following decorators are for testing consistency between python-pcl's" +" functions and corresponding NumPy's ones." +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_allclose `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal_nulp `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_max_ulp `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_list_equal `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_array_less `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.numpy_python-pcl_raises `" +msgstr "" + +#: ../../source/tutorial/testing.rst:52 +msgid "Parameterized dtype Test" +msgstr "" + +#: ../../source/tutorial/testing.rst:54 +msgid "" +"The following decorators offer the standard way for parameterized test " +"with respect to single or the combination of dtype(s)." +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.testing.for_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_all_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_float_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_signed_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_unsigned_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_int_dtypes `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_dtypes_combination `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_all_dtypes_combination `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_signed_dtypes_combination `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_unsigned_dtypes_combination `" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.testing.for_int_dtypes_combination `" +msgstr "" + +#: ../../source/tutorial/testing.rst:76 +msgid "Parameterized order Test" +msgstr "" + +#: ../../source/tutorial/testing.rst:77 +msgid "" +"The following decorators offer the standard way to parameterize tests " +"with orders." +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.testing.for_orders `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.testing.for_CF_orders `" +msgstr "" + +#: ../../source/tutorial/tracking.rst:2 +msgid "Padding" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.pad `" +msgstr "" + +#: ../../source/tutorial/visualization.rst:2 +msgid "Profiling" +msgstr "" + +#: ../../source/tutorial/visualization.rst:5 +msgid "time range" +msgstr "" + +#: ../../:1 +msgid "" +":obj:`python-pcl.prof.TimeRangeDecorator `" +msgstr "" + +#: ../../:1 +msgid ":obj:`python-pcl.prof.time_range `" +msgstr "" + +#~ msgid "Decode of python-pcl" +#~ msgstr "" + +#~ msgid "In this section, you will learn about the following things:" +#~ msgstr "" + +#~ msgid "Decode of :class:`python-pcl`" +#~ msgstr "" + +#~ msgid "The concept of *current device*" +#~ msgstr "" + +#~ msgid "host-device and device-device array transfer" +#~ msgstr "" + +#~ msgid "Encode of python-pcl" +#~ msgstr "" + +#~ msgid "" +#~ "python-pcl is a GPU array backend" +#~ " that implements a subset of NumPy" +#~ " interface. In the following code, cp" +#~ " is an abbreviation of python-pcl," +#~ " as np is numpy as is " +#~ "customarily done:" +#~ msgstr "" + +#~ msgid "" +#~ "The :class:`python-pcl.ndarray` class is " +#~ "in its core, which is a compatible" +#~ " GPU alternative of :class:`numpy.ndarray`." +#~ msgstr "" + +#~ msgid "" +#~ "``x_gpu`` in the above example is " +#~ "an instance of :class:`python-pcl.ndarray`." +#~ " You can see its creation of " +#~ "identical to ``NumPy``'s one, except " +#~ "that ``numpy`` is replaced with " +#~ "``python-pcl``. The main difference of " +#~ ":class:`python-pcl.ndarray` from " +#~ ":class:`numpy.ndarray` is that the content " +#~ "is allocated on the device memory. " +#~ "Its data is allocated on the " +#~ "*current device*, which will be " +#~ "explained later." +#~ msgstr "" + +#~ msgid "" +#~ "Most of array manipulations are also " +#~ "do in the way similar to NumPy." +#~ " Take the Euclidean norm (a.k.a L2" +#~ " norm) for example. NumPy has " +#~ "`numpy.lina.g.norm` to calculate it on " +#~ "CPU." +#~ msgstr "" + +#~ msgid "We can calculate it on GPU with python-pcl in a similar way:" +#~ msgstr "" + +#~ msgid "" +#~ "python-pcl implements many functions on" +#~ " :class:`python-pcl.ndarray` objects. See " +#~ "the :ref:`reference ` " +#~ "for the supported subset of NumPy " +#~ "API. Understanding NumPy might help " +#~ "utilizing most features of python-pcl." +#~ " So, we recommend you to read " +#~ "the `NumPy documentation " +#~ "`_." +#~ msgstr "" + +#~ msgid "Current Device" +#~ msgstr "" + +#~ msgid "" +#~ "python-pcl has a concept of the" +#~ " *current device*, which is the " +#~ "default device on which the allocation," +#~ " manipulation, calculation etc. of arrays" +#~ " are taken place. Suppose the ID " +#~ "of current device is 0. The " +#~ "following code allocates array contents " +#~ "on GPU 0." +#~ msgstr "" + +#~ msgid "" +#~ "The current device can be changed " +#~ "by :class:`python-pcl.cuda.Device.use()` as " +#~ "follows:" +#~ msgstr "" + +#~ msgid "" +#~ "If you switch the current GPU " +#~ "temporarily, *with* statement comes in " +#~ "handy." +#~ msgstr "" + +#~ msgid "" +#~ "Most operations of python-pcl is " +#~ "done on the current device. Be " +#~ "careful that if processing of an " +#~ "array on a non-current device will" +#~ " cause an error:" +#~ msgstr "" + +#~ msgid "" +#~ "``python-pcl.ndarray.device`` attribute indicates" +#~ " the device on which the array " +#~ "is allocated." +#~ msgstr "" + +#~ msgid "" +#~ "If the environment has only one " +#~ "device, such explicit device switching " +#~ "is not needed." +#~ msgstr "" + +#~ msgid "Data Transfer" +#~ msgstr "" + +#~ msgid "Move arrays to a device" +#~ msgstr "" + +#~ msgid "" +#~ ":func:`python-pcl.asarray` can be used " +#~ "to move a :class:`numpy.ndarray`, a " +#~ "list, or any object that can be" +#~ " passed to :func:`numpy.array` to the " +#~ "current device:" +#~ msgstr "" + +#~ msgid "" +#~ ":func:`python-pcl.asarray` can accept :class" +#~ ":`python-pcl.ndarray`, which means we can" +#~ " transfer the array between devices " +#~ "with this function." +#~ msgstr "" + +#~ msgid "" +#~ ":func:`python-pcl.asarray` does not copy " +#~ "the input array if possible. So, " +#~ "if you put an array of the " +#~ "current device, it returns the input " +#~ "object itself." +#~ msgstr "" + +#~ msgid "" +#~ "If we do copy the array in " +#~ "this situation, you can use :func" +#~ ":`python-pcl.array` with `copy=True`. Actually" +#~ " :func:`python-pcl.asarray` is equivalent " +#~ "to `python-pcl.array(arr, dtype, copy=False)`." +#~ msgstr "" + +#~ msgid "Move array from a device to the host" +#~ msgstr "" + +#~ msgid "" +#~ "Moving a device array to the host" +#~ " can be done by :func:`pcl-" +#~ "python.asnumpy` as follows:" +#~ msgstr "" + +#~ msgid "We can also use :meth:`python-pcl.ndarray.get()`:" +#~ msgstr "" + +#~ msgid "" +#~ "If you work with python-pcl, you can" +#~ " also use :func:`~python-pcl.cuda.to_cpu` and " +#~ ":func:`~python-pcl.cuda.to_gpu` to move arrays " +#~ "back and forth between a device " +#~ "and a host, or between different " +#~ "devices. Note that :func:`~python-pcl.cuda.to_gpu` " +#~ "has ``device`` option to specify the " +#~ "device which arrays are transferred." +#~ msgstr "" + +#~ msgid "How to write CPU/GPU agnostic code" +#~ msgstr "" + +#~ msgid "" +#~ "The compatibility of python-pcl with " +#~ "NumPy enables us to write CPU/GPU " +#~ "generic code. It can be made easy" +#~ " by the :func:`python-pcl.get_array_module` " +#~ "function. This function returns the " +#~ ":mod:`numpy` or :mod:`python-pcl` module " +#~ "based on arguments. A CPU/GPU generic" +#~ " function is defined using it like" +#~ " follows:" +#~ msgstr "" + +#~ msgid "Encode of :class:`python-pcl.ndarray`" +#~ msgstr "" + diff --git a/docs/source/locale/ja/LC_MESSAGES/tutorial.pot b/docs/source/locale/ja/LC_MESSAGES/tutorial.pot new file mode 100644 index 000000000..37287c342 --- /dev/null +++ b/docs/source/locale/ja/LC_MESSAGES/tutorial.pot @@ -0,0 +1,1336 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\tutorial\common.rst:2 +msgid "Common Operations" +msgstr "" + +#: ..\..\source\tutorial\common.rst:5 +msgid "Elementwise bit operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_and `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_or `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_xor `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.invert `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.left_shift `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.right_shift `" +msgstr "" + +#: ..\..\source\tutorial\common.rst:20 +msgid "Bit packing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.packbits `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.unpackbits `" +msgstr "" + +#: ..\..\source\tutorial\common.rst:31 +msgid "Output formatting" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.binary_repr `" +msgstr "" + +#: ..\..\source\tutorial\features.rst:2 +msgid "Array Creation Routines" +msgstr "" + +#: ..\..\source\tutorial\features.rst:5 +msgid "Basic creation routines" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.empty `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.empty_like `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.eye `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.identity `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ones `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ones_like `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.zeros `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.zeros_like `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.full `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.full_like `" +msgstr "" + +#: ..\..\source\tutorial\features.rst:24 +msgid "Creation from other data" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.array `" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.asarray `" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.asanyarray `" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.ascontiguousarray `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.copy `" +msgstr "" + +#: ..\..\source\tutorial\features.rst:38 +msgid "Numerical ranges" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arange `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linspace `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logspace `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.meshgrid `" +msgstr "" + +#: ..\..\source\tutorial\features.rst:51 +msgid "Matrix creation" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.diag `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.diagflat `" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:2 +msgid "Low-Level CUDA Support" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:5 +msgid "Device management" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.Device `" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:15 +msgid "Memory management" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.Memory `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.MemoryPointer `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.alloc `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.set_allocator `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.MemoryPool `" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:29 +msgid "Streams and events" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.Stream `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.Event `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.get_elapsed_time `" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:41 +msgid "Profiler" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.profile `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.profiler.initialize `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.profiler.start `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.profiler.stop `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.Mark `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.MarkC `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.RangePush `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.RangePushC `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.RangePop `" +msgstr "" + +#: ..\..\source\tutorial\generated\pcl.rst:2 +#: ..\..\source\tutorial\pcl.rst:2 +msgid "pcl" +msgstr "" + +#: ..\..\source\tutorial\generated\pcl.rst:9 +#: ..\..\source\tutorial\pcl.rst:9 +msgid "Functions" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid "Load pointcloud from path." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load2 `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_PointWithViewpoint `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZI `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZRGB `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZRGBA `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid "Save pointcloud to file." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save2 `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid "Save PointCloud_PointCloud2 to file." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save_PointNormal `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save_XYZRGBA `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\source\tutorial\generated\pcl.rst:30 +#: ..\..\source\tutorial\pcl.rst:30 +msgid "Classes" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:2 +msgid "Difference between python-pcl and NumPy" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:4 +msgid "The interface of python-pcl is designed to obey that of NumPy. However, there are some differeneces." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:9 +msgid "Cast behavior from float to integer" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:11 +msgid "Some casting behaviors from float to integer are not defined in C++ specification. The casting from a negative float to unsigned integer and infinity to integer is one of such eamples. The behavior of NumPy depends on your CPU architecture. This is Intel CPU result." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:28 +msgid "Random methods support dtype argument" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:30 +msgid "NumPy's random value generator does not support dtype option and it always resturns a ``float32`` value. We support the option in python-pcl because cuRAND, which is used in python-pcl, supports any types of float values." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:42 +msgid "Out-of-bounds indices" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:43 +msgid "python-pcl handles out-of-bounds indices differently by default from NumPy when using integer array indexing. NumPy handles them by raising an error, but python-pcl wraps around them." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:59 +msgid "Duplicate values in indices" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:60 +msgid "python-pcl's ``__setitem__`` behaves differently from NumPy when integer arrays reference the same location multiple times. In that case, the value that is actually stored is undefined. Here is an example of python-pcl." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:72 +msgid "NumPy stores the value corresponding to the last element among elements referencing duplicate locations." +msgstr "" + +#: ..\..\source\tutorial\index.rst:2 +msgid "python-pcl Tutorial" +msgstr "" + +#: ..\..\source\tutorial\io.rst:2 +msgid "Input and Output" +msgstr "" + +#: ..\..\source\tutorial\io.rst:5 +msgid "NPZ files" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.load `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.save `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.savez `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.savez_compressed `" +msgstr "" + +#: ..\..\source\tutorial\io.rst:18 +msgid "String formatting" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.array_repr `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.array_str `" +msgstr "" + +#: ..\..\source\tutorial\io.rst:29 +msgid "Base-n representations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.base_repr `" +msgstr "" + +#: ..\..\source\tutorial\kdtree.rst:2 +msgid "NumPy-python-pcl Generic Code Support" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.get_array_module `" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:2 +msgid "Linear Algebra" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:5 +msgid "Matrix and vector products" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.dot `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.vdot `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.inner `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.outer `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.matmul `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.tensordot `" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:20 +msgid "Decompositions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.cholesky `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.qr `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.svd `" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:31 +msgid "Matrix eigenvalues" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:37 +msgid "Norms etc." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.norm `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.matrix_rank `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.slogdet `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.trace `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:2 +msgid "Logic Functions" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:5 +msgid "Truth value testing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.all `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.any `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:16 +msgid "Infinities and NaNs" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.isfinite `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.isinf `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.isnan `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:28 +msgid "Array type testing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.isscalar `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:39 +msgid "Logic operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logical_and `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logical_or `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logical_not `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logical_xor `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:52 +msgid "Comparison operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.greater `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.greater_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.less `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.less_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.not_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZI `\\" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGB `\\" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGBA `\\" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:2 +msgid "Array Manipulation Routines" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:5 +msgid "Basic manipulations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.copyto `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:15 +msgid "Shape manipulation" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.reshape `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ravel `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:26 +msgid "Transposition" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.rollaxis `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.swapaxes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.transpose `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:38 +msgid "Edit dimensionalities" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.atleast_1d `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.atleast_2d `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.atleast_3d `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.broadcast `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.broadcast_arrays `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.broadcast_to `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.expand_dims `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.squeeze `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:55 +msgid "Changing kind of array" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.asfortranarray `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:68 +msgid "Joining arrays along axis" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.concatenate `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.stack `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.column_stack `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.dstack `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.hstack `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.vstack `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:83 +msgid "Splitting arrays along axis" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.split `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.array_split `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.dsplit `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.hsplit `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.vsplit `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:97 +msgid "Repeating part of arrays along axis" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.tile `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.repeat `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:108 +msgid "Rearranging elements" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.flip `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fliplr `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.flipud `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.roll `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.rot90 `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:2 +msgid "Mathematical Functions" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:5 +msgid "Trigonometric functions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sin `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cos `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.tan `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arcsin `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arccos `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arctan `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.hypot `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arctan2 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.deg2rad `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.rad2deg `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.degrees `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.radians `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:26 +msgid "Hyperbolic functions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sinh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cosh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.tanh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arcsinh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arccosh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arctanh `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:41 +msgid "Rounding" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.rint `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.floor `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ceil `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.trunc `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fix `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:55 +msgid "Sums and products" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sum `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.prod `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cumsum `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cumprod `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:68 +msgid "Exponential and logarithm functions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.exp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.expm1 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.exp2 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.log `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.log10 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.log2 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.log1p `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logaddexp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logaddexp2 `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:86 +msgid "Floating point manipulations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.signbit `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.copysign `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ldexp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.frexp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.nextafter `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:100 +msgid "Arithmetic operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.negative `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.add `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.subtract `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.multiply `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.divide `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.true_divide `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.floor_divide `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.power `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fmod `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.mod `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.remainder `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.modf `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.reciprocal `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:122 +msgid "Miscellaneous" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.clip `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sqrt `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.square `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.absolute `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sign `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.maximum `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.minimum `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fmax `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fmin `" +msgstr "" + +#: ..\..\source\tutorial\segmentation.rst:2 +msgid "Kernel binary memoization" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.memoize `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.clear_memo `" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:2 +msgid "Multi-Dimensional Array (ndarray)" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:4 +msgid ":class:`python-pcl.ndarray` is the python-pcl counterpart of NumPy :class:`numpy.ndarray`. It provides an intuitive interface for a fixed-size multidimensional array which resides in a CUDA device." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:8 +msgid "For the basic concept of ``ndarray``\\s, please refer to the `NumPy documentation `_." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ndarray `" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:19 +msgid "Code compatibility features" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:21 +msgid ":class:`python-pcl.ndarray` is designed to be interchangeable with :class:`numpy.ndarray` in terms of code compatibility as much as possible. But occasionally, you will need to know whether the arrays you're handling are :class:`python-pcl.ndarray` or :class:`numpy.ndarray`. One example is when invoking module-level functions such as :meth:`python-pcl.sum` or :meth:`numpy.sum`. In such situations, :meth:`python-pcl.get_array_module` can be used." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:34 +msgid "Conversion to/from NumPy arrays" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:36 +msgid ":class:`python-pcl.ndarray` and :class:`numpy.ndarray` are not implicitly convertible to each other. That means, NumPy functions cannot take :class:`python-pcl.ndarray`\\s as inputs, and vice versa." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:39 +msgid "To convert :class:`numpy.ndarray` to :class:`python-pcl.ndarray`, use :meth:`python-pcl.array` or :meth:`python-pcl.asarray`." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:40 +msgid "To convert :class:`python-pcl.ndarray` to :class:`numpy.ndarray`, use :meth:`python-pcl.asnumpy` or :meth:`python-pcl.ndarray.get`." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:42 +msgid "Note that converting between :class:`python-pcl.ndarray` and :class:`numpy.ndarray` incurs data transfer between the host (CPU) device and the GPU device, which is costly in terms of performance." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.asnumpy `" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:2 +msgid "Testing Modules" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:6 +msgid "python-pcl offers testing utilities to support unit testing. They are under namespace :mod:`python-pcl.testing`." +msgstr "" + +#: ..\..\source\tutorial\testing.rst:11 +msgid "Standard Assertions" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:13 +msgid "The assertions have same names as NumPy's ones. The difference from NumPy is that they can accept both :class:`numpy.ndarray` and :class:`python-pcl.ndarray`." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_allclose `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_almost_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_almost_equal_nulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_max_ulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_list_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_less `" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:32 +msgid "NumPy-python-pcl Consistency Check" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:34 +msgid "The following decorators are for testing consistency between python-pcl's functions and corresponding NumPy's ones." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_allclose `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal_nulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_max_ulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_list_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_less `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_raises `" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:52 +msgid "Parameterized dtype Test" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:54 +msgid "The following decorators offer the standard way for parameterized test with respect to single or the combination of dtype(s)." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_all_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_float_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_signed_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_unsigned_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_int_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_all_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_signed_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_unsigned_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_int_dtypes_combination `" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:76 +msgid "Parameterized order Test" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:77 +msgid "The following decorators offer the standard way to parameterize tests with orders." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_orders `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_CF_orders `" +msgstr "" + +#: ..\..\source\tutorial\tracking.rst:2 +msgid "Padding" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.pad `" +msgstr "" + +#: ..\..\source\tutorial\visualization.rst:2 +msgid "Profiling" +msgstr "" + +#: ..\..\source\tutorial\visualization.rst:5 +msgid "time range" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.prof.TimeRangeDecorator `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.prof.time_range `" +msgstr "" + diff --git a/docs/source/locale/pot/compatibility.pot b/docs/source/locale/pot/compatibility.pot new file mode 100644 index 000000000..122f39cf5 --- /dev/null +++ b/docs/source/locale/pot/compatibility.pot @@ -0,0 +1,218 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\compatibility.rst:2 +msgid "API Compatibility Policy" +msgstr "" + +#: ..\..\source\compatibility.rst:4 +msgid "This document expresses the design policy on compatibilities of python-pcl APIs. Development team should obey this policy on deciding to add, extend, and change APIs and their behaviors." +msgstr "" + +#: ..\..\source\compatibility.rst:7 +msgid "This document is written for both users and developers. Users can decide the level of dependencies on python-pcl implementations in their codes based on this document. Developers should read through this document before creating pull requests that contain changes on the interface. Note that this document may contain ambiguities on the level of supported compatibilities." +msgstr "" + +#: ..\..\source\compatibility.rst:14 +msgid "Versioning and Backward Compatibilities" +msgstr "" + +#: ..\..\source\compatibility.rst:16 +msgid "The updates of python-pcl are classified into three levels: major, minor, and revision. These types have distinct levels of backward compatibilities." +msgstr "" + +#: ..\..\source\compatibility.rst:19 +msgid "**Major update** contains disruptive changes that break the backward compatibility." +msgstr "" + +#: ..\..\source\compatibility.rst:20 +msgid "**Minor update** contains addition and extension to the APIs keeping the supported backward compatibility." +msgstr "" + +#: ..\..\source\compatibility.rst:21 +msgid "**Revision update** contains improvements on the API implementations without changing any API specifications." +msgstr "" + +#: ..\..\source\compatibility.rst:23 +msgid "Note that we do not support full backward compatibility, which is almost infeasible for Python-based APIs, since there is no way to completely hide the implementation details." +msgstr "" + +#: ..\..\source\compatibility.rst:27 +msgid "Processes to Break Backward Compatibilities" +msgstr "" + +#: ..\..\source\compatibility.rst:30 +msgid "Deprecation, Dropping, and Its Preparation" +msgstr "" + +#: ..\..\source\compatibility.rst:32 +msgid "Any APIs may be *deprecated* at some minor updates. In such a case, the deprecation note is added to the API documentation, and the API implementation is changed to fire deprecation warning (if possible). There should be another way to reimplement the same things previously written with the deprecated APIs." +msgstr "" + +#: ..\..\source\compatibility.rst:36 +msgid "Any APIs may be marked as *to be dropped in the future*. In such a case, the dropping is stated in the documentation with the major version number on which the API is planned to be dropped, and the API implementation is changed to fire the future warning (if possible)." +msgstr "" + +#: ..\..\source\compatibility.rst:39 +msgid "The actual dropping should be done through the following steps:" +msgstr "" + +#: ..\..\source\compatibility.rst:41 +msgid "Make the API deprecated. At this point, users should not need the deprecated API in their new application codes." +msgstr "" + +#: ..\..\source\compatibility.rst:43 +msgid "After that, mark the API as *to be dropped in the future*. It must be done in the minor update different from that of the deprecation." +msgstr "" + +#: ..\..\source\compatibility.rst:45 +msgid "At the major version announced in the above update, drop the API." +msgstr "" + +#: ..\..\source\compatibility.rst:47 +msgid "Consequently, it takes at least two minor versions to drop any APIs after the first deprecation." +msgstr "" + +#: ..\..\source\compatibility.rst:50 +msgid "API Changes and Its Preparation" +msgstr "" + +#: ..\..\source\compatibility.rst:52 +msgid "Any APIs may be marked as *to be changed in the future* for changes without backward compatibility. In such a case, the change is stated in the documentation with the version number on which the API is planned to be changed, and the API implementation is changed to fire the future warning on the certain usages." +msgstr "" + +#: ..\..\source\compatibility.rst:55 +msgid "The actual change should be done in the following steps:" +msgstr "" + +#: ..\..\source\compatibility.rst:57 +msgid "Announce that the API will be changed in the future. At this point, the actual version of change need not be accurate." +msgstr "" + +#: ..\..\source\compatibility.rst:59 +msgid "After the announcement, mark the API as *to be changed in the future* with version number of planned changes. At this point, users should not use the marked API in their new application codes." +msgstr "" + +#: ..\..\source\compatibility.rst:61 +msgid "At the major update announced in the above update, change the API." +msgstr "" + +#: ..\..\source\compatibility.rst:65 +msgid "Supported Backward Compatibility" +msgstr "" + +#: ..\..\source\compatibility.rst:67 +msgid "This section defines backward compatibilities that minor updates must maintain." +msgstr "" + +#: ..\..\source\compatibility.rst:70 +msgid "Documented Interface" +msgstr "" + +#: ..\..\source\compatibility.rst:72 +msgid "python-pcl has the official API documentation. Many applications can be written based on the documented features. We support backward compatibilities of documented features. In other words, codes only based on the documented features run correctly with minor/revision-updated versions." +msgstr "" + +#: ..\..\source\compatibility.rst:77 +msgid "Developers are encouraged to use apparent names for objects of implementation details. For example, attributes outside of the documented APIs should have one or more underscores at the prefix of their names." +msgstr "" + +#: ..\..\source\compatibility.rst:83 +msgid "Undocumented behaviors" +msgstr "" + +#: ..\..\source\compatibility.rst:85 +msgid "Behaviors of python-pcl implementation not stated in the documentation are undefined. Undocumented behaviors are not guaranteed to be stable between different minor/revision versions." +msgstr "" + +#: ..\..\source\compatibility.rst:88 +msgid "Minor update may contain changes to undocumented behaviors. For example, suppose an API X is added at the minor update. In the previous version, attempts to use X cause AttributeError. This behavior is not stated in the documentation, so this is undefined. Thus, adding the API X in minor version is permissible." +msgstr "" + +#: ..\..\source\compatibility.rst:94 +msgid "Revision update may also contain changes to undefined behaviors. Typical example is a bug fix. Another example is an improvement on implementation, which may change the internal object structures not shown in the documentation. As a consequence, **even revision updates do not support compatibility of pickling, unless the full layout of pickled objects is clearly documented.**" +msgstr "" + +#: ..\..\source\compatibility.rst:100 +msgid "Documentation Error" +msgstr "" + +#: ..\..\source\compatibility.rst:102 +msgid "Compatibility is basically determined based on the documentation, though it sometimes contains errors. It may make the APIs confusing to assume the documentation always stronger than the implementations. We therefore may fix the documentation errors in any updates that may break the compatibility in regard to the documentation." +msgstr "" + +#: ..\..\source\compatibility.rst:107 +msgid "Developers MUST NOT fix the documentation and implementation of the same functionality at the same time in revision updates as \"bug fix\". Such a change completely breaks the backward compatibility. If you want to fix the bugs in both sides, first fix the documentation to fit it into the implementation, and start the API changing procedure described above." +msgstr "" + +#: ..\..\source\compatibility.rst:112 +msgid "Object Attributes and Properties" +msgstr "" + +#: ..\..\source\compatibility.rst:114 +msgid "Object attributes and properties are sometimes replaced by each other at minor updates. It does not break the user codes, except the codes depend on how the attributes and properties are implemented." +msgstr "" + +#: ..\..\source\compatibility.rst:118 +msgid "Functions and Methods" +msgstr "" + +#: ..\..\source\compatibility.rst:120 +msgid "Methods may be replaced by callable attributes keeping the compatibility of parameters and return values in minor updates. It does not break the user codes, except the codes depend on how the methods and callable attributes are implemented." +msgstr "" + +#: ..\..\source\compatibility.rst:124 +msgid "Exceptions and Warnings" +msgstr "" + +#: ..\..\source\compatibility.rst:126 +msgid "The specifications of raising exceptions are considered as a part of standard backward compatibilities. No exception is raised in the future versions with correct usages that the documentation allows, unless the API changing process is completed." +msgstr "" + +#: ..\..\source\compatibility.rst:129 +msgid "On the other hand, warnings may be added at any minor updates for any APIs. It means minor updates do not keep backward compatibility of warnings." +msgstr "" + +#: ..\..\source\compatibility.rst:134 +msgid "Installation Compatibility" +msgstr "" + +#: ..\..\source\compatibility.rst:136 +msgid "The installation process is another concern of compatibilities. We support environmental compatibilities in the following ways." +msgstr "" + +#: ..\..\source\compatibility.rst:139 +msgid "Any changes of dependent libraries that force modifications on the existing environments must be done in major updates. Such changes include following cases:" +msgstr "" + +#: ..\..\source\compatibility.rst:142 +msgid "dropping supported versions of dependent libraries (e.g. dropping cuDNN v2)" +msgstr "" + +#: ..\..\source\compatibility.rst:143 +msgid "adding new mandatory dependencies (e.g. adding h5py to setup_requires)" +msgstr "" + +#: ..\..\source\compatibility.rst:145 +msgid "Supporting optional packages/libraries may be done in minor updates (e.g. supporting h5py in optional features)." +msgstr "" + +#: ..\..\source\compatibility.rst:148 +msgid "The installation compatibility does not guarantee that all the features of python-pcl correctly run on supported environments. It may contain bugs that only occurs in certain environments. Such bugs should be fixed in some updates." +msgstr "" + diff --git a/docs/source/locale/pot/contribution.pot b/docs/source/locale/pot/contribution.pot new file mode 100644 index 000000000..1668a0173 --- /dev/null +++ b/docs/source/locale/pot/contribution.pot @@ -0,0 +1,306 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\contribution.rst:2 +msgid "python-pcl Contribution Guide" +msgstr "" + +#: ..\..\source\contribution.rst:4 +msgid "This is a guide for all contributions to python-pcl. The development of python-pcl is running on `the official repository at GitHub `_. Anyone that wants to register an issue or to send a pull request should read through this document." +msgstr "" + +#: ..\..\source\contribution.rst:9 +msgid "Classification of Contributions" +msgstr "" + +#: ..\..\source\contribution.rst:11 +msgid "There are several ways to contribute to python-pcl community:" +msgstr "" + +#: ..\..\source\contribution.rst:13 +msgid "Registering an issue" +msgstr "" + +#: ..\..\source\contribution.rst:14 +msgid "Sending a pull request (PR)" +msgstr "" + +#: ..\..\source\contribution.rst:15 +msgid "Sending a question to `python-pcl User Group `_" +msgstr "" + +#: ..\..\source\contribution.rst:16 +msgid "Writing a post about python-pcl" +msgstr "" + +#: ..\..\source\contribution.rst:18 +msgid "This document mainly focuses on 1 and 2, though other contributions are also appreciated." +msgstr "" + +#: ..\..\source\contribution.rst:21 +msgid "Release and Milestone" +msgstr "" + +#: ..\..\source\contribution.rst:23 +msgid "We are using `GitHub Flow `_ as our basic working process. In particular, we are using the master branch for our development, and releases are made as tags." +msgstr "" + +#: ..\..\source\contribution.rst:26 +msgid "Releases are classified into three groups: major, minor, and revision. This classification is based on following criteria:" +msgstr "" + +#: ..\..\source\contribution.rst:29 +msgid "**Major update** contains disruptive changes that break the backward compatibility." +msgstr "" + +#: ..\..\source\contribution.rst:30 +msgid "**Minor update** contains additions and extensions to the APIs keeping the supported backward compatibility." +msgstr "" + +#: ..\..\source\contribution.rst:31 +msgid "**Revision update** contains improvements on the API implementations without changing any API specification." +msgstr "" + +#: ..\..\source\contribution.rst:33 +msgid "The release classification is reflected into the version number x.y.z, where x, y, and z corresponds to major, minor, and revision updates, respectively." +msgstr "" + +#: ..\..\source\contribution.rst:35 +msgid "We set a milestone for an upcoming release. The milestone is of name 'vX.Y.Z', where the version number represents a revision release at the outset. If at least one *feature* PR is merged in the period, we rename the milestone to represent a minor release (see the next section for the PR types)." +msgstr "" + +#: ..\..\source\contribution.rst:39 +msgid "See also :doc:`compatibility`." +msgstr "" + +#: ..\..\source\contribution.rst:42 +msgid "Issues and PRs" +msgstr "" + +#: ..\..\source\contribution.rst:44 +msgid "Issues and PRs are classified into following categories:" +msgstr "" + +#: ..\..\source\contribution.rst:46 +msgid "**Bug**: bug reports (issues) and bug fixes (PRs)" +msgstr "" + +#: ..\..\source\contribution.rst:47 +msgid "**Enhancement**: implementation improvements without breaking the interface" +msgstr "" + +#: ..\..\source\contribution.rst:48 +msgid "**Feature**: feature requests (issues) and their implementations (PRs)" +msgstr "" + +#: ..\..\source\contribution.rst:49 +msgid "**NoCompat**: disrupts backward compatibility" +msgstr "" + +#: ..\..\source\contribution.rst:50 +msgid "**Test**: test fixes and updates" +msgstr "" + +#: ..\..\source\contribution.rst:51 +msgid "**Document**: document fixes and improvements" +msgstr "" + +#: ..\..\source\contribution.rst:52 +msgid "**Example**: fixes and improvements on the examples" +msgstr "" + +#: ..\..\source\contribution.rst:53 +msgid "**Install**: fixes installation script" +msgstr "" + +#: ..\..\source\contribution.rst:54 +msgid "**Contribution-Welcome**: issues that we request for contribution (only issues are categorized to this)" +msgstr "" + +#: ..\..\source\contribution.rst:55 +msgid "**Other**: other issues and PRs" +msgstr "" + +#: ..\..\source\contribution.rst:57 +msgid "Issues and PRs are labeled by these categories. This classification is often reflected into its corresponding release category: Feature issues/PRs are contained into minor/major releases and NoCompat issues/PRs are contained into major releases, while other issues/PRs can be contained into any releases including revision ones." +msgstr "" + +#: ..\..\source\contribution.rst:60 +msgid "On registering an issue, write precise explanations on what you want python-pcl to be. Bug reports must include necessary and sufficient conditions to reproduce the bugs. Feature requests must include **what** you want to do (and **why** you want to do, if needed). You can contain your thoughts on **how** to realize it into the feature requests, though **what** part is most important for discussions." +msgstr "" + +#: ..\..\source\contribution.rst:67 +msgid "If you have a question on usages of python-pcl, it is highly recommended to send a post to `python-pcl User Group `_ instead of the issue tracker. The issue tracker is not a place to share knowledge on practices. We may redirect question issues to python-pcl User Group." +msgstr "" + +#: ..\..\source\contribution.rst:71 +msgid "If you can write code to fix an issue, send a PR to the master branch. Before writing your code for PRs, read through the :ref:`coding-guide`. The description of any PR must contain a precise explanation of **what** and **how** you want to do; it is the first documentation of your code for developers, a very important part of your PR." +msgstr "" + +#: ..\..\source\contribution.rst:75 +msgid "Once you send a PR, it is automatically tested on `Travis CI `_ for Linux and Mac OS X, and on `AppVeyor `_ for Windows. Your PR need to pass at least the test for Linux on Travis CI. After the automatic test passes, some of the core developers will start reviewing your code. Note that this automatic PR test only includes CPU tests." +msgstr "" + +#: ..\..\source\contribution.rst:82 +msgid "We are also running continuous integration with GPU tests for the master branch. Since this service is running on our internal server, we do not use it for automatic PR tests to keep the server secure." +msgstr "" + +#: ..\..\source\contribution.rst:86 +msgid "Even if your code is not complete, you can send a pull request as a *work-in-progress PR* by putting the ``[WIP]`` prefix to the PR title. If you write a precise explanation about the PR, core developers and other contributors can join the discussion about how to proceed the PR." +msgstr "" + +#: ..\..\source\contribution.rst:92 +msgid "Coding Guidelines" +msgstr "" + +#: ..\..\source\contribution.rst:94 +msgid "We use `PEP8 `_ and a part of `OpenStack Style Guidelines `_ related to general coding style as our basic style guidelines." +msgstr "" + +#: ..\..\source\contribution.rst:96 +msgid "To check your code, use ``autopep8`` and ``flake8`` command installed by ``hacking`` package::" +msgstr "" + +#: ..\..\source\contribution.rst:102 +msgid "To check Cython code, use ``.flake8.cython`` configuration file::" +msgstr "" + +#: ..\..\source\contribution.rst:106 +msgid "The ``autopep8`` supports automatically correct Python code to conform to the PEP 8 style guide::" +msgstr "" + +#: ..\..\source\contribution.rst:110 +msgid "The ``flake8`` command lets you know the part of your code not obeying our style guidelines. Before sending a pull request, be sure to check that your code passes the ``flake8`` checking." +msgstr "" + +#: ..\..\source\contribution.rst:113 +msgid "Note that ``flake8`` command is not perfect. It does not check some of the style guidelines. Here is a (not-complete) list of the rules that ``flake8`` cannot check." +msgstr "" + +#: ..\..\source\contribution.rst:117 +msgid "Relative imports are prohibited. [H304]" +msgstr "" + +#: ..\..\source\contribution.rst:118 +msgid "Importing non-module symbols is prohibited." +msgstr "" + +#: ..\..\source\contribution.rst:119 +msgid "Import statements must be organized into three parts: standard libraries, third-party libraries, and internal imports. [H306]" +msgstr "" + +#: ..\..\source\contribution.rst:121 +msgid "In addition, we restrict the usage of *shortcut symbols* in our code base. They are symbols imported by packages and sub-packages of ``python-pcl``. For example, ``python-pcl.cuda.Device`` is a shortcut of ``python-pcl.cuda.device.Device``. **It is not allowed to use such shortcuts in the ``python-pcl`` library implementation**. Note that you can still use them in ``tests`` and ``examples`` directories." +msgstr "" + +#: ..\..\source\contribution.rst:127 +msgid "Once you send a pull request, your coding style is automatically checked by `Travis-CI `_. The reviewing process starts after the check passes." +msgstr "" + +#: ..\..\source\contribution.rst:130 +msgid "The python-pcl is designed based on NumPy's API design. python-pcl's source code and documents contain the original NumPy ones. Please note the followings when writing the document." +msgstr "" + +#: ..\..\source\contribution.rst:133 +msgid "In order to identify overlapping parts, it is preferable to add some remarks that this document is just copied or altered from the original one. It is also preferable to briefly explain the specification of the function in a short paragraph, and refer to the corresponding function in NumPy so that users can read the detailed document. However, it is possible to include a complete copy of the document with such a remark if users cannot summarize in such a way." +msgstr "" + +#: ..\..\source\contribution.rst:140 +msgid "If a function in python-pcl only implements a limited amount of features in the original one, users should explicitly describe only what is implemented in the document." +msgstr "" + +#: ..\..\source\contribution.rst:146 +msgid "Testing Guidelines" +msgstr "" + +#: ..\..\source\contribution.rst:148 +msgid "Testing is one of the most important part of your code. You must test your code by unit tests following our testing guidelines. Note that we are using the nose package and the mock package for testing, so install nose and mock before writing your code::" +msgstr "" + +#: ..\..\source\contribution.rst:154 +msgid "In order to run unit tests at the repository root, you first have to build Cython files in place by running the following command::" +msgstr "" + +#: ..\..\source\contribution.rst:158 +msgid "Once the Cython modules are built, you can run unit tests simply by running ``nosetests`` command at the repository root::" +msgstr "" + +#: ..\..\source\contribution.rst:162 +msgid "It requires CUDA by default. In order to run unit tests that do not require CUDA, pass ``--attr='!gpu'`` option to the ``nosetests`` command::" +msgstr "" + +#: ..\..\source\contribution.rst:167 +msgid "Some GPU tests involve multiple GPUs. If you want to run GPU tests with insufficient number of GPUs, specify the number of available GPUs by ``--eval-attr='gpu`_ **with --attr='!gpu,!slow' option**. Since Travis-CI does not support CUDA, we cannot check your CUDA-related code automatically. The reviewing process starts after the test passes. Note that reviewers will test your code without the option to check CUDA-related code." +msgstr "" + +#: ..\..\source\contribution.rst:239 +msgid "Some of numerically unstable tests might cause errors irrelevant to your changes. In such a case, we ignore the failures and go on to the review process, so do not worry about it." +msgstr "" + diff --git a/docs/source/locale/pot/developers.pot b/docs/source/locale/pot/developers.pot new file mode 100644 index 000000000..e2c257be8 --- /dev/null +++ b/docs/source/locale/pot/developers.pot @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\developers.rst:3 +msgid "For python-pcl Developers" +msgstr "" + diff --git a/docs/source/locale/pot/index.pot b/docs/source/locale/pot/index.pot new file mode 100644 index 000000000..d0795b4d4 --- /dev/null +++ b/docs/source/locale/pot/index.pot @@ -0,0 +1,26 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\index.rst:3 +msgid "python-pcl -- PointCloudLibrary-like API" +msgstr "" + +#: ..\..\source\index.rst:5 +msgid "This is the `python-pcl `_ documentation." +msgstr "" + diff --git a/docs/source/locale/pot/install.pot b/docs/source/locale/pot/install.pot new file mode 100644 index 000000000..9c5a95b24 --- /dev/null +++ b/docs/source/locale/pot/install.pot @@ -0,0 +1,162 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\install.rst:2 +msgid "Installation Guide" +msgstr "" + +#: ..\..\source\install.rst:7 +msgid "Recommended Environments" +msgstr "" + +#: ..\..\source\install.rst:9 +msgid "We recommend these Linux distributions." +msgstr "" + +#: ..\..\source\install.rst:11 +msgid "`Ubuntu `_ 14.04/16.04 LTS 64bit" +msgstr "" + +#: ..\..\source\install.rst:12 +msgid "`MacOS `_ 10.10/10.11" +msgstr "" + +#: ..\..\source\install.rst:13 +msgid "`Windows `_ 7/8.1/10 64bit" +msgstr "" + +#: ..\..\source\install.rst:15 +msgid "The following versions of Python can be used: 2.7.6+, 3.4.3+, 3.5.1+, and 3.6.0+." +msgstr "" + +#: ..\..\source\install.rst:19 +msgid "We are testing python-pcl automatically with Jenkins, where all the above *recommended* environments are tested." +msgstr "" + +#: ..\..\source\install.rst:21 +msgid "python-pcl is supported on Python 2.7.6+, 3.4.3+, 3.5.1+, 3.6.0+. python-pcl uses C++ compiler such as g++. You need to install it before installing python-pcl. This is typical installation method for each platform::" +msgstr "" + +#: ..\..\source\install.rst:43 +msgid "If you use old ``setuptools``, upgrade it::" +msgstr "" + +#: ..\..\source\install.rst:49 +msgid "Dependencies" +msgstr "" + +#: ..\..\source\install.rst:51 +msgid "Before installing python-pcl, we recommend to upgrade ``setuptools`` if you are using an old one::" +msgstr "" + +#: ..\..\source\install.rst:55 +msgid "The following Python packages are required to install python-pcl. The latest version of each package will automatically be installed if missing." +msgstr "" + +#: ..\..\source\install.rst:58 +msgid "`NumPy `_ 1.9, 1.10, 1.11, 1.12" +msgstr "" + +#: ..\..\source\install.rst:62 +msgid "Install python-pcl" +msgstr "" + +#: ..\..\source\install.rst:65 +msgid "Install python-pcl via pip" +msgstr "" + +#: ..\..\source\install.rst:67 +msgid "We recommend to install python-pcl via pip::" +msgstr "" + +#: ..\..\source\install.rst:73 +msgid "All optional PointCloudLibrary related libraries, need to be installed before installing python-pcl. After you update these libraries, please reinstall python-pcl because you need to compile and link to the newer version of them." +msgstr "" + +#: ..\..\source\install.rst:78 +msgid "Install python-pcl from source" +msgstr "" + +#: ..\..\source\install.rst:80 +msgid "The tarball of the source tree is available via ``pip download python-pcl`` or from `the release notes page `_. You can use ``setup.py`` to install python-pcl from the tarball::" +msgstr "" + +#: ..\..\source\install.rst:87 +msgid "You can also install the development version of python-pcl from a cloned Git repository::" +msgstr "" + +#: ..\..\source\install.rst:97 +msgid "When an error occurs..." +msgstr "" + +#: ..\..\source\install.rst:99 +msgid "Use ``-vvvv`` option with ``pip`` command. That shows all logs of installation. It may help you::" +msgstr "" + +#: ..\..\source\install.rst:109 +msgid "Install python-pcl with pcl.dll" +msgstr "" + +#: ..\..\source\install.rst:114 +msgid "Install python-pcl for developers" +msgstr "" + +#: ..\..\source\install.rst:116 +msgid "python-pcl uses Cython (>=0.24). Developers need to use Cython to regenerate C++ sources from ``pyx`` files. We recommend to use ``pip`` with ``-e`` option for editable mode::" +msgstr "" + +#: ..\..\source\install.rst:124 +msgid "Users need not to install Cython as a distribution package of python-pcl only contains generated sources." +msgstr "" + +#: ..\..\source\install.rst:128 +msgid "Uninstall python-pcl" +msgstr "" + +#: ..\..\source\install.rst:130 +msgid "Use pip to uninstall python-pcl::" +msgstr "" + +#: ..\..\source\install.rst:136 +msgid "When you upgrade python-pcl, ``pip`` sometimes install the new version without removing the old one in ``site-packages``. In this case, ``pip uninstall`` only removes the latest one. To ensure that python-pcl is completely removed, run the above command repeatedly until ``pip`` returns an error." +msgstr "" + +#: ..\..\source\install.rst:142 +msgid "Upgrade python-pcl" +msgstr "" + +#: ..\..\source\install.rst:144 +msgid "Just use ``pip`` with ``-U`` option::" +msgstr "" + +#: ..\..\source\install.rst:150 +msgid "Reinstall python-pcl" +msgstr "" + +#: ..\..\source\install.rst:152 +msgid "If you want to reinstall python-pcl, please uninstall python-pcl and then install it. We recommend to use ``--no-cache-dir`` option as ``pip`` sometimes uses cache::" +msgstr "" + +#: ..\..\source\install.rst:158 +msgid "When you install python-pcl without PointCloudLibrary, and after that you want to use PointCloudLibrary, please reinstall python-pcl. You need to reinstall python-pcl when you want to upgrade PointCloudLibrary." +msgstr "" + +#: ..\..\source\install.rst:163 +msgid "FAQ" +msgstr "" + diff --git a/docs/source/locale/pot/license.pot b/docs/source/locale/pot/license.pot new file mode 100644 index 000000000..ccc25a777 --- /dev/null +++ b/docs/source/locale/pot/license.pot @@ -0,0 +1,74 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\license.rst:2 +msgid "License" +msgstr "" + +#: ..\..\source\license.rst:4 +msgid "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:" +msgstr "" + +#: ..\..\source\license.rst:11 +msgid "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software." +msgstr "" + +#: ..\..\source\license.rst:14 +msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." +msgstr "" + +#: ..\..\source\license.rst:24 +msgid "python-pcl" +msgstr "" + +#: ..\..\source\license.rst:25 +msgid "The python-pcl is designed based on Point Cloud Library's API. python-pcl's source code and documents contain the original Point Cloud Library ones." +msgstr "" + +#: ..\..\source\license.rst:29 +msgid "Software License Agreement (BSD License)" +msgstr "" + +#: ..\..\source\license.rst:31 +msgid "Point Cloud Library (PCL) - www.pointclouds.org Copyright (c) 2009-2012, Willow Garage, Inc. Copyright (c) 2012-, Open Perception, Inc. Copyright (c) XXX, respective authors." +msgstr "" + +#: ..\..\source\license.rst:36 +msgid "All rights reserved." +msgstr "" + +#: ..\..\source\license.rst:38 +msgid "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:" +msgstr "" + +#: ..\..\source\license.rst:42 +msgid "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer." +msgstr "" + +#: ..\..\source\license.rst:44 +msgid "Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution." +msgstr "" + +#: ..\..\source\license.rst:48 +msgid "Neither the name of the copyright holder(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission." +msgstr "" + +#: ..\..\source\license.rst:52 +msgid "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +msgstr "" + diff --git a/docs/source/locale/pot/overview.pot b/docs/source/locale/pot/overview.pot new file mode 100644 index 000000000..6ad8d3540 --- /dev/null +++ b/docs/source/locale/pot/overview.pot @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\overview.rst:4 +msgid "python-pcl Overview" +msgstr "" + +#: ..\..\source\overview.rst:8 +msgid "`python-pcl `_ is an implementation of PointCloudLibrary-compatible. interface." +msgstr "" + +#: ..\..\source\overview.rst:11 +msgid "The following is a brief overview of supported subset of PointCloudLibrary interface:" +msgstr "" + +#: ..\..\source\overview.rst:13 +msgid "`filters `_" +msgstr "" + +#: ..\..\source\overview.rst:14 +msgid "`features `_" +msgstr "" + +#: ..\..\source\overview.rst:15 +msgid "`keypoints `_" +msgstr "" + +#: ..\..\source\overview.rst:16 +msgid "`registration `_" +msgstr "" + +#: ..\..\source\overview.rst:17 +msgid "`kdtree `_" +msgstr "" + +#: ..\..\source\overview.rst:18 +msgid "`octree `_" +msgstr "" + +#: ..\..\source\overview.rst:19 +msgid "`segmentation `_" +msgstr "" + +#: ..\..\source\overview.rst:20 +msgid "`sample_consensus `_" +msgstr "" + +#: ..\..\source\overview.rst:21 +msgid "`surface `_" +msgstr "" + +#: ..\..\source\overview.rst:22 +msgid "`recognition `_" +msgstr "" + +#: ..\..\source\overview.rst:23 +msgid "`io `_" +msgstr "" + +#: ..\..\source\overview.rst:24 +msgid "`visualization `_" +msgstr "" + diff --git a/docs/source/locale/pot/reference.pot b/docs/source/locale/pot/reference.pot new file mode 100644 index 000000000..0c66c73b9 --- /dev/null +++ b/docs/source/locale/pot/reference.pot @@ -0,0 +1,731 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\reference\common.rst:2 +msgid "Common Operations" +msgstr "" + +#: ..\..\source\reference\common.rst:5 +msgid "Elementwise bit operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_and `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_or `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_xor `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.invert `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.left_shift `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.right_shift `" +msgstr "" + +#: ..\..\source\reference\common.rst:20 +msgid "Bit packing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.packbits `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.unpackbits `" +msgstr "" + +#: ..\..\source\reference\common.rst:31 +msgid "Output formatting" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.binary_repr `" +msgstr "" + +#: ..\..\source\reference\environment.rst:2 +msgid "Environment variables" +msgstr "" + +#: ..\..\source\reference\environment.rst:4 +msgid "Here are the environment variables python-pcl uses." +msgstr "" + +#: ..\..\source\reference\environment.rst:8 +msgid "``PATH``" +msgstr "" + +#: ..\..\source\reference\environment.rst:8 +msgid "Path to the directory to PointCloudLibrary dll/exe. See :ref:`overview` for details." +msgstr "" + +#: ..\..\source\reference\environment.rst:14 +msgid "For install" +msgstr "" + +#: ..\..\source\reference\environment.rst:16 +msgid "These environment variables are only used during installation." +msgstr "" + +#: ..\..\source\reference\environment.rst:19 +msgid "``PCL_ROOT``" +msgstr "" + +#: ..\..\source\reference\environment.rst:19 +msgid "Path to the directory containing PointCloudLibrary. The parent of the directory containing ``nvcc`` is used as default. See :ref:`install_pointcloudlibrary` for details." +msgstr "" + +#: ..\..\source\reference\features.rst:2 +msgid "Features Routines" +msgstr "" + +#: ..\..\source\reference\features.rst:5 +msgid "Basic creation routines" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`DifferenceOfNormalsEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`IntegralImageNormalEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`MomentOfInertiaEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`NormalEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`NormalEstimationOMP `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`RangeImageBorderExtractor `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`ROPSEstimation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`VFHEstimation `" +msgstr "" + +#: ..\..\source\reference\filters.rst:2 +msgid "Filters" +msgstr "" + +#: ..\..\source\reference\filters.rst:5 +msgid "Device management" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ApproximateVoxelGrid `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ConditionalRemoval `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ConditionAnd `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.CropBox `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.CropHull `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.FieldComparison `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.PassThroughFilter `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ProjectInliers `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.RadiusOutlierRemoval `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.StatisticalOutlierRemovalFilter `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.VoxelGridFilter `" +msgstr "" + +#: ..\..\source\reference\generated\pcl.rst:2 +#: ..\..\source\reference\pcl.rst:2 +msgid "pcl" +msgstr "" + +#: ..\..\source\reference\generated\pcl.rst:9 +#: ..\..\source\reference\pcl.rst:9 +msgid "Functions" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid "Load pointcloud from path." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load2 `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_PointWithViewpoint `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZI `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZRGB `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZRGBA `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid "Save pointcloud to file." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save2 `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid "Save PointCloud_PointCloud2 to file." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save_PointNormal `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save_XYZRGBA `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\source\reference\generated\pcl.rst:30 +#: ..\..\source\reference\pcl.rst:30 +msgid "Classes" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZI `\\" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGB `\\" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGBA `\\" +msgstr "" + +#: ..\..\source\reference\generated\pcl.IntegralImageNormalEstimation.rst:2 +msgid "pcl.IntegralImageNormalEstimation" +msgstr "" + +#: ..\..\docstring of pcl.IntegralImageNormalEstimation:1 +msgid "IntegralImageNormalEstimation class for" +msgstr "" + +#: ..\..\source\reference\generated\pcl.IntegralImageNormalEstimation.rst:14 +#: ..\..\source\reference\generated\pcl.MomentOfInertiaEstimation.rst:14 +#: ..\..\source\reference\generated\pcl.NormalEstimation.rst:14 +#: ..\..\source\reference\generated\pcl.ROPSEstimation.rst:14 +#: ..\..\source\reference\generated\pcl.VFHEstimation.rst:14 +msgid "Methods" +msgstr "" + +#: ..\..\source\reference\generated\pcl.MomentOfInertiaEstimation.rst:2 +msgid "pcl.MomentOfInertiaEstimation" +msgstr "" + +#: ..\..\docstring of pcl.MomentOfInertiaEstimation:1 +msgid "MomentOfInertiaEstimation class for" +msgstr "" + +#: ..\..\source\reference\generated\pcl.NormalEstimation.rst:2 +msgid "pcl.NormalEstimation" +msgstr "" + +#: ..\..\docstring of pcl.NormalEstimation:1 +msgid "NormalEstimation class for" +msgstr "" + +#: ..\..\source\reference\generated\pcl.ROPSEstimation.rst:2 +msgid "pcl.ROPSEstimation" +msgstr "" + +#: ..\..\docstring of pcl.ROPSEstimation:1 +msgid "ROPSEstimation class for" +msgstr "" + +#: ..\..\source\reference\generated\pcl.VFHEstimation.rst:2 +msgid "pcl.VFHEstimation" +msgstr "" + +#: ..\..\docstring of pcl.VFHEstimation:1 +msgid "VFHEstimation class for" +msgstr "" + +#: ..\..\source\reference\grabber.rst:2 +msgid "Grabber" +msgstr "" + +#: ..\..\source\reference\index.rst:5 +msgid "python-pcl Reference Manual" +msgstr "" + +#: ..\..\source\reference\index.rst:7 +msgid "This is the official reference of python-pcl, a multi-dimensional array on CUDA with a subset of NumPy interface." +msgstr "" + +#: ..\..\source\reference\index.rst:11 +msgid "Indices and tables" +msgstr "" + +#: ..\..\source\reference\index.rst:13 +msgid ":ref:`genindex`" +msgstr "" + +#: ..\..\source\reference\index.rst:14 +msgid ":ref:`modindex`" +msgstr "" + +#: ..\..\source\reference\index.rst:17 +msgid "Reference" +msgstr "" + +#: ..\..\source\reference\io.rst:2 +msgid "Input and Output" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.load `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.save `" +msgstr "" + +#: ..\..\source\reference\kdtree.rst:2 +msgid "KdTree" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.KdTree `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.KdTree_FLANN `" +msgstr "" + +#: ..\..\source\reference\keypoint.rst:2 +msgid "KeyPoint" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.HarrisKeypoint3D `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.NarfKeypoint `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.UniformSampling `" +msgstr "" + +#: ..\..\source\reference\octree.rst:2 +msgid "Octree" +msgstr "" + +#: ..\..\source\reference\octree.rst:5 +msgid "Truth value testing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.Octree2BufBase `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.OctreePointCloud `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.OctreePointCloud2Buf `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.OctreePointCloudChangeDetector `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.OctreePointCloudSearch `" +msgstr "" + +#: ..\..\source\reference\registration.rst:2 +msgid "Registration" +msgstr "" + +#: ..\..\source\reference\registration.rst:5 +msgid "Basic manipulations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.GeneralizedIterativeClosestPoint `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.IterativeClosestPoint `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.IterativeClosestPointNonLinear `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.NormalDistributionsTransform `" +msgstr "" + +#: ..\..\source\reference\sampleconsensus.rst:2 +msgid "SampleConsensus" +msgstr "" + +#: ..\..\source\reference\sampleconsensus.rst:5 +msgid "Trigonometric functions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.RandomSampleConsensus `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModel `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelCylinder `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelLine `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelPlane `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelRegistration `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelSphere `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SampleConsensusModelStick `" +msgstr "" + +#: ..\..\source\reference\segmentation.rst:2 +msgid "Segmentation" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ConditionalEuclideanClustering `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.EuclideanClusterExtraction `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.MinCutSegmentation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ProgressiveMorphologicalFilter `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.Segmentation `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.SegmentationNormal `" +msgstr "" + +#: ..\..\source\reference\surface.rst:2 +msgid "Surface" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ConcaveHull `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.MovingLeastSquares `" +msgstr "" + +#: ..\..\source\reference\testing.rst:2 +msgid "Testing Modules" +msgstr "" + +#: ..\..\source\reference\testing.rst:6 +msgid "python-pcl offers testing utilities to support unit testing. They are under namespace :mod:`python-pcl.testing`." +msgstr "" + +#: ..\..\source\reference\testing.rst:11 +msgid "Standard Assertions" +msgstr "" + +#: ..\..\source\reference\testing.rst:13 +msgid "The assertions have same names as NumPy's ones. The difference from NumPy is that they can accept both :class:`numpy.ndarray` and :class:`python-pcl.ndarray`." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_allclose `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_almost_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_almost_equal_nulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_max_ulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_list_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_less `" +msgstr "" + +#: ..\..\source\reference\testing.rst:32 +msgid "NumPy-python-pcl Consistency Check" +msgstr "" + +#: ..\..\source\reference\testing.rst:34 +msgid "The following decorators are for testing consistency between python-pcl's functions and corresponding NumPy's ones." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_allclose `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal_nulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_max_ulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_list_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_less `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_raises `" +msgstr "" + +#: ..\..\source\reference\testing.rst:52 +msgid "Parameterized dtype Test" +msgstr "" + +#: ..\..\source\reference\testing.rst:54 +msgid "The following decorators offer the standard way for parameterized test with respect to single or the combination of dtype(s)." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_all_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_float_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_signed_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_unsigned_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_int_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_all_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_signed_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_unsigned_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_int_dtypes_combination `" +msgstr "" + +#: ..\..\source\reference\testing.rst:76 +msgid "Parameterized order Test" +msgstr "" + +#: ..\..\source\reference\testing.rst:77 +msgid "The following decorators offer the standard way to parameterize tests with orders." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_orders `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_CF_orders `" +msgstr "" + +#: ..\..\source\reference\tracking.rst:2 +msgid "Tracking" +msgstr "" + +#: ..\..\source\reference\visualization.rst:2 +msgid "Visualization" +msgstr "" + +#: ..\..\source\reference\visualization.rst:5 +msgid "viewer" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.CloudViewing `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.PCLHistogramViewing `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.PCLVisualizering `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.RangeImageVisualization `" +msgstr "" + diff --git a/docs/source/locale/pot/tutorial.pot b/docs/source/locale/pot/tutorial.pot new file mode 100644 index 000000000..37287c342 --- /dev/null +++ b/docs/source/locale/pot/tutorial.pot @@ -0,0 +1,1336 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2017, Tooru Oonuma. +# This file is distributed under the same license as the python-pcl package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: python-pcl 0.0.1.dev0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 13:25+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ..\..\source\tutorial\common.rst:2 +msgid "Common Operations" +msgstr "" + +#: ..\..\source\tutorial\common.rst:5 +msgid "Elementwise bit operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_and `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_or `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.bitwise_xor `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.invert `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.left_shift `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.right_shift `" +msgstr "" + +#: ..\..\source\tutorial\common.rst:20 +msgid "Bit packing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.packbits `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.unpackbits `" +msgstr "" + +#: ..\..\source\tutorial\common.rst:31 +msgid "Output formatting" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.binary_repr `" +msgstr "" + +#: ..\..\source\tutorial\features.rst:2 +msgid "Array Creation Routines" +msgstr "" + +#: ..\..\source\tutorial\features.rst:5 +msgid "Basic creation routines" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.empty `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.empty_like `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.eye `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.identity `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ones `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ones_like `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.zeros `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.zeros_like `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.full `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.full_like `" +msgstr "" + +#: ..\..\source\tutorial\features.rst:24 +msgid "Creation from other data" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.array `" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.asarray `" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.asanyarray `" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.ascontiguousarray `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.copy `" +msgstr "" + +#: ..\..\source\tutorial\features.rst:38 +msgid "Numerical ranges" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arange `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linspace `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logspace `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.meshgrid `" +msgstr "" + +#: ..\..\source\tutorial\features.rst:51 +msgid "Matrix creation" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.diag `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.diagflat `" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:2 +msgid "Low-Level CUDA Support" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:5 +msgid "Device management" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.Device `" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:15 +msgid "Memory management" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.Memory `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.MemoryPointer `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.alloc `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.set_allocator `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.MemoryPool `" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:29 +msgid "Streams and events" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.Stream `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.Event `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.get_elapsed_time `" +msgstr "" + +#: ..\..\source\tutorial\filters.rst:41 +msgid "Profiler" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.profile `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.profiler.initialize `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.profiler.start `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.profiler.stop `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.Mark `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.MarkC `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.RangePush `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.RangePushC `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cuda.nvtx.RangePop `" +msgstr "" + +#: ..\..\source\tutorial\generated\pcl.rst:2 +#: ..\..\source\tutorial\pcl.rst:2 +msgid "pcl" +msgstr "" + +#: ..\..\source\tutorial\generated\pcl.rst:9 +#: ..\..\source\tutorial\pcl.rst:9 +msgid "Functions" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid "Load pointcloud from path." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load2 `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_PointWithViewpoint `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZI `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZRGB `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`load_XYZRGBA `\\ (path[, format])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +#: ..\..\:1 +msgid "Save pointcloud to file." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save2 `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid "Save PointCloud_PointCloud2 to file." +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save_PointNormal `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`save_XYZRGBA `\\ (cloud, path[, format, binary])" +msgstr "" + +#: ..\..\source\tutorial\generated\pcl.rst:30 +#: ..\..\source\tutorial\pcl.rst:30 +msgid "Classes" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:2 +msgid "Difference between python-pcl and NumPy" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:4 +msgid "The interface of python-pcl is designed to obey that of NumPy. However, there are some differeneces." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:9 +msgid "Cast behavior from float to integer" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:11 +msgid "Some casting behaviors from float to integer are not defined in C++ specification. The casting from a negative float to unsigned integer and infinity to integer is one of such eamples. The behavior of NumPy depends on your CPU architecture. This is Intel CPU result." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:28 +msgid "Random methods support dtype argument" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:30 +msgid "NumPy's random value generator does not support dtype option and it always resturns a ``float32`` value. We support the option in python-pcl because cuRAND, which is used in python-pcl, supports any types of float values." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:42 +msgid "Out-of-bounds indices" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:43 +msgid "python-pcl handles out-of-bounds indices differently by default from NumPy when using integer array indexing. NumPy handles them by raising an error, but python-pcl wraps around them." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:59 +msgid "Duplicate values in indices" +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:60 +msgid "python-pcl's ``__setitem__`` behaves differently from NumPy when integer arrays reference the same location multiple times. In that case, the value that is actually stored is undefined. Here is an example of python-pcl." +msgstr "" + +#: ..\..\source\tutorial\grabber.rst:72 +msgid "NumPy stores the value corresponding to the last element among elements referencing duplicate locations." +msgstr "" + +#: ..\..\source\tutorial\index.rst:2 +msgid "python-pcl Tutorial" +msgstr "" + +#: ..\..\source\tutorial\io.rst:2 +msgid "Input and Output" +msgstr "" + +#: ..\..\source\tutorial\io.rst:5 +msgid "NPZ files" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.load `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.save `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.savez `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.savez_compressed `" +msgstr "" + +#: ..\..\source\tutorial\io.rst:18 +msgid "String formatting" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.array_repr `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.array_str `" +msgstr "" + +#: ..\..\source\tutorial\io.rst:29 +msgid "Base-n representations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.base_repr `" +msgstr "" + +#: ..\..\source\tutorial\kdtree.rst:2 +msgid "NumPy-python-pcl Generic Code Support" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.get_array_module `" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:2 +msgid "Linear Algebra" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:5 +msgid "Matrix and vector products" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.dot `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.vdot `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.inner `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.outer `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.matmul `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.tensordot `" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:20 +msgid "Decompositions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.cholesky `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.qr `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.svd `" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:31 +msgid "Matrix eigenvalues" +msgstr "" + +#: ..\..\source\tutorial\keypoint.rst:37 +msgid "Norms etc." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.norm `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.matrix_rank `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.linalg.slogdet `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.trace `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:2 +msgid "Logic Functions" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:5 +msgid "Truth value testing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.all `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.any `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:16 +msgid "Infinities and NaNs" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.isfinite `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.isinf `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.isnan `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:28 +msgid "Array type testing" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.isscalar `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:39 +msgid "Logic operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logical_and `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logical_or `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logical_not `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logical_xor `" +msgstr "" + +#: ..\..\source\tutorial\octree.rst:52 +msgid "Comparison operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.greater `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.greater_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.less `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.less_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.not_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZI `\\" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGB `\\" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`VoxelGridFilter_PointXYZRGBA `\\" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:2 +msgid "Array Manipulation Routines" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:5 +msgid "Basic manipulations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.copyto `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:15 +msgid "Shape manipulation" +msgstr "" + +#: ..\..\:1 +#: ..\..\:1 +msgid ":obj:`python-pcl.reshape `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ravel `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:26 +msgid "Transposition" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.rollaxis `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.swapaxes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.transpose `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:38 +msgid "Edit dimensionalities" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.atleast_1d `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.atleast_2d `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.atleast_3d `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.broadcast `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.broadcast_arrays `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.broadcast_to `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.expand_dims `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.squeeze `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:55 +msgid "Changing kind of array" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.asfortranarray `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:68 +msgid "Joining arrays along axis" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.concatenate `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.stack `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.column_stack `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.dstack `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.hstack `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.vstack `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:83 +msgid "Splitting arrays along axis" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.split `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.array_split `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.dsplit `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.hsplit `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.vsplit `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:97 +msgid "Repeating part of arrays along axis" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.tile `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.repeat `" +msgstr "" + +#: ..\..\source\tutorial\registration.rst:108 +msgid "Rearranging elements" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.flip `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fliplr `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.flipud `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.roll `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.rot90 `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:2 +msgid "Mathematical Functions" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:5 +msgid "Trigonometric functions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sin `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cos `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.tan `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arcsin `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arccos `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arctan `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.hypot `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arctan2 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.deg2rad `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.rad2deg `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.degrees `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.radians `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:26 +msgid "Hyperbolic functions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sinh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cosh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.tanh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arcsinh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arccosh `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.arctanh `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:41 +msgid "Rounding" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.rint `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.floor `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ceil `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.trunc `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fix `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:55 +msgid "Sums and products" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sum `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.prod `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cumsum `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.cumprod `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:68 +msgid "Exponential and logarithm functions" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.exp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.expm1 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.exp2 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.log `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.log10 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.log2 `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.log1p `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logaddexp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.logaddexp2 `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:86 +msgid "Floating point manipulations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.signbit `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.copysign `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ldexp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.frexp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.nextafter `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:100 +msgid "Arithmetic operations" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.negative `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.add `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.subtract `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.multiply `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.divide `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.true_divide `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.floor_divide `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.power `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fmod `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.mod `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.remainder `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.modf `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.reciprocal `" +msgstr "" + +#: ..\..\source\tutorial\sampleconsensus.rst:122 +msgid "Miscellaneous" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.clip `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sqrt `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.square `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.absolute `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.sign `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.maximum `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.minimum `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fmax `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.fmin `" +msgstr "" + +#: ..\..\source\tutorial\segmentation.rst:2 +msgid "Kernel binary memoization" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.memoize `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.clear_memo `" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:2 +msgid "Multi-Dimensional Array (ndarray)" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:4 +msgid ":class:`python-pcl.ndarray` is the python-pcl counterpart of NumPy :class:`numpy.ndarray`. It provides an intuitive interface for a fixed-size multidimensional array which resides in a CUDA device." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:8 +msgid "For the basic concept of ``ndarray``\\s, please refer to the `NumPy documentation `_." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.ndarray `" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:19 +msgid "Code compatibility features" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:21 +msgid ":class:`python-pcl.ndarray` is designed to be interchangeable with :class:`numpy.ndarray` in terms of code compatibility as much as possible. But occasionally, you will need to know whether the arrays you're handling are :class:`python-pcl.ndarray` or :class:`numpy.ndarray`. One example is when invoking module-level functions such as :meth:`python-pcl.sum` or :meth:`numpy.sum`. In such situations, :meth:`python-pcl.get_array_module` can be used." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:34 +msgid "Conversion to/from NumPy arrays" +msgstr "" + +#: ..\..\source\tutorial\surface.rst:36 +msgid ":class:`python-pcl.ndarray` and :class:`numpy.ndarray` are not implicitly convertible to each other. That means, NumPy functions cannot take :class:`python-pcl.ndarray`\\s as inputs, and vice versa." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:39 +msgid "To convert :class:`numpy.ndarray` to :class:`python-pcl.ndarray`, use :meth:`python-pcl.array` or :meth:`python-pcl.asarray`." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:40 +msgid "To convert :class:`python-pcl.ndarray` to :class:`numpy.ndarray`, use :meth:`python-pcl.asnumpy` or :meth:`python-pcl.ndarray.get`." +msgstr "" + +#: ..\..\source\tutorial\surface.rst:42 +msgid "Note that converting between :class:`python-pcl.ndarray` and :class:`numpy.ndarray` incurs data transfer between the host (CPU) device and the GPU device, which is costly in terms of performance." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.asnumpy `" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:2 +msgid "Testing Modules" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:6 +msgid "python-pcl offers testing utilities to support unit testing. They are under namespace :mod:`python-pcl.testing`." +msgstr "" + +#: ..\..\source\tutorial\testing.rst:11 +msgid "Standard Assertions" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:13 +msgid "The assertions have same names as NumPy's ones. The difference from NumPy is that they can accept both :class:`numpy.ndarray` and :class:`python-pcl.ndarray`." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_allclose `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_almost_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_almost_equal_nulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_max_ulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_list_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.assert_array_less `" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:32 +msgid "NumPy-python-pcl Consistency Check" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:34 +msgid "The following decorators are for testing consistency between python-pcl's functions and corresponding NumPy's ones." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_allclose `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_almost_equal_nulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_max_ulp `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_list_equal `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_array_less `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.numpy_python-pcl_raises `" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:52 +msgid "Parameterized dtype Test" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:54 +msgid "The following decorators offer the standard way for parameterized test with respect to single or the combination of dtype(s)." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_all_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_float_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_signed_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_unsigned_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_int_dtypes `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_all_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_signed_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_unsigned_dtypes_combination `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_int_dtypes_combination `" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:76 +msgid "Parameterized order Test" +msgstr "" + +#: ..\..\source\tutorial\testing.rst:77 +msgid "The following decorators offer the standard way to parameterize tests with orders." +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_orders `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.testing.for_CF_orders `" +msgstr "" + +#: ..\..\source\tutorial\tracking.rst:2 +msgid "Padding" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.pad `" +msgstr "" + +#: ..\..\source\tutorial\visualization.rst:2 +msgid "Profiling" +msgstr "" + +#: ..\..\source\tutorial\visualization.rst:5 +msgid "time range" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.prof.TimeRangeDecorator `" +msgstr "" + +#: ..\..\:1 +msgid ":obj:`python-pcl.prof.time_range `" +msgstr "" + diff --git a/docs/source/overview.rst b/docs/source/overview.rst new file mode 100644 index 000000000..3c455837f --- /dev/null +++ b/docs/source/overview.rst @@ -0,0 +1,26 @@ +.. _overview: + +python-pcl Overview +============= + +.. module:: python-pcl + +`python-pcl `_ is an implementation of PointCloudLibrary-compatible. +interface. + +The following is a brief overview of supported subset of PointCloudLibrary interface: + +- `filters `_ +- `features `_ +- `keypoints `_ +- `registration `_ +- `kdtree `_ +- `octree `_ +- `segmentation `_ +- `sample_consensus `_ +- `surface `_ +- `recognition `_ +- `io `_ +- `visualization `_ + + diff --git a/docs/source/reference/index.rst b/docs/source/reference/index.rst new file mode 100644 index 000000000..4934a069e --- /dev/null +++ b/docs/source/reference/index.rst @@ -0,0 +1,24 @@ +.. _python-pcl_reference: + +*************************** +python-pcl Reference Manual +*************************** + +This is the official reference of python-pcl, PointCloudLibrary-like API interface. + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` + +Reference +========= + +.. module:: python-pcl + +.. toctree:: + :maxdepth: 10 + + pcl diff --git a/docs/source/reference/pcl.rst b/docs/source/reference/pcl.rst new file mode 100644 index 000000000..03d49a745 --- /dev/null +++ b/docs/source/reference/pcl.rst @@ -0,0 +1,125 @@ +pcl +=== + +.. automodule:: pcl + + + + .. rubric:: Functions + + .. autosummary:: + + deg2rad + load + load2 + load_PointWithViewpoint + load_XYZI + load_XYZRGB + load_XYZRGBA + rad2deg + save + save2 + save_PointNormal + save_XYZRGBA + + + + + + .. rubric:: Classes + + .. autosummary:: + + ApproximateVoxelGrid + ApproximateVoxelGrid_PointXYZI + ApproximateVoxelGrid_PointXYZRGB + ApproximateVoxelGrid_PointXYZRGBA + ConcaveHull + ConcaveHull_PointXYZI + ConcaveHull_PointXYZRGB + ConcaveHull_PointXYZRGBA + ConditionAnd + ConditionalRemoval + CropBox + CropHull + EuclideanClusterExtraction + GeneralizedIterativeClosestPoint + HarrisKeypoint3D + IntegralImageNormalEstimation + IterativeClosestPoint + IterativeClosestPointNonLinear + KdTree + KdTreeFLANN + KdTreeFLANN_PointXYZI + KdTreeFLANN_PointXYZRGB + KdTreeFLANN_PointXYZRGBA + MomentOfInertiaEstimation + MovingLeastSquares + MovingLeastSquares_PointXYZRGB + MovingLeastSquares_PointXYZRGBA + NormalDistributionsTransform + NormalEstimation + OctreePointCloud + OctreePointCloud2Buf + OctreePointCloud2Buf_PointXYZI + OctreePointCloud2Buf_PointXYZRGB + OctreePointCloud2Buf_PointXYZRGBA + OctreePointCloudChangeDetector + OctreePointCloudChangeDetector_PointXYZI + OctreePointCloudChangeDetector_PointXYZRGB + OctreePointCloudChangeDetector_PointXYZRGBA + OctreePointCloudSearch + OctreePointCloudSearch_PointXYZI + OctreePointCloudSearch_PointXYZRGB + OctreePointCloudSearch_PointXYZRGBA + OctreePointCloud_PointXYZI + OctreePointCloud_PointXYZRGB + OctreePointCloud_PointXYZRGBA + PCLPointCloud2 + PassThroughFilter + PassThroughFilter_PointXYZI + PassThroughFilter_PointXYZRGB + PassThroughFilter_PointXYZRGBA + PointCloud + PointCloud_Histogram + PointCloud_Normal + PointCloud_PointNormal + PointCloud_PointWithViewpoint + PointCloud_PointXYZI + PointCloud_PointXYZRGB + PointCloud_PointXYZRGBA + PointIndices + ProjectInliers + ROPSEstimation + RadiusOutlierRemoval + RandomSampleConsensus + RangeImages + SampleConsensusModel + SampleConsensusModelCylinder + SampleConsensusModelLine + SampleConsensusModelPlane + SampleConsensusModelRegistration + SampleConsensusModelSphere + SampleConsensusModelStick + Segmentation + SegmentationNormal + Segmentation_PointXYZI + Segmentation_PointXYZI_Normal + Segmentation_PointXYZRGB + Segmentation_PointXYZRGBA + Segmentation_PointXYZRGBA_Normal + Segmentation_PointXYZRGB_Normal + Sequence + StatisticalOutlierRemovalFilter + StatisticalOutlierRemovalFilter_PointXYZI + StatisticalOutlierRemovalFilter_PointXYZRGB + StatisticalOutlierRemovalFilter_PointXYZRGBA + VFHEstimation + Vertices + VoxelGridFilter + + + + + + \ No newline at end of file diff --git a/docs/source/spelling_wordlist.txt b/docs/source/spelling_wordlist.txt new file mode 100644 index 000000000..4661d9f2f --- /dev/null +++ b/docs/source/spelling_wordlist.txt @@ -0,0 +1,166 @@ +acyclic +affine +allocator +arccosine +backend +backprop +backpropagation +Bernoulli +bilinear +bool +boolean +broadcast +broadcasted +Caffe +Cifer +channelwise +compatibilities +composability +composable +compositional +connectionist +concat +contrastive +convolutional +covariance +CPU +CTC +CUDA +python-pcl +customizable +cutorch +dataset +datasets +de +deallocated +deallocation +deconvolution +deconvolutional +deserialization +deserialize +deserialized +deserializes +deserializer +deserializers +deserializing +differentiable +dimensionalities +dimensionality +dimentional +dtype +dtypes +elementwise +embeddings +evaluator +facto +FFT +finalizer +functionalities +gaussian +GPU +grey +greyscale +gzip +hdf +huber +hyperparameter +hyperparameters +hypoteneous +implementers +indices +infeasible +initializer +initializers +instantiation +iterable +iteratively +libhdf +learnable +Linux +maxout +memoization +memoize +memoized +memoizes +memoizing +minibatch +mlpconv +mnist +multi +multiclass +namespace +NaN +normalizer +npz +NumPy +online +optimizer +optimizers +outliers +Overfeat +parallelization +parallelizations +parallelize +parallelized +parallelizes +parallelizing +parameterize +parameterized +perceptron +Perf +permutate +permutates +pluggable +postprocess +pre +preprocessing +profiler +profilers +proto +PRs +quantization +reimplement +reinstall +resized +runtime +serializable +serializer +serializers +sharding +siamese +sigmoid +softmax +stateful +subdirectories +subdirectory +summarization +tuple +tuples +ufunc +ufuncs +unigram +uninstall +unnormalize +unnormalized +unpooling +unregisters +unuseful +variadic +variational +vecLib +vectorized +versioning +workspace + +Bengio +Cho +Courville +farley +Goodfellow +Jurgen +Mirza +Nesterov +Schmidhuber +Socher +Warde +Zeiler diff --git a/docs/source/tutorial/GPU.rst b/docs/source/tutorial/GPU.rst new file mode 100644 index 000000000..5d9153c84 --- /dev/null +++ b/docs/source/tutorial/GPU.rst @@ -0,0 +1,28 @@ +GPU Tutorials +======================= + + +Configuring your PC to use your Nvidia GPU with PCL +~~~~~~~~~~~~~~~~~~~~~~ +This tutorial explains how to configure PCL to use with a Nvidia GPU + +* `Original ` +* TestCode : None + + +Using Kinfu Large Scale to generate a textured mesh +~~~~~~~~~~~~~~~~~~~~~~ +This tutorial demonstrates how to use KinFu Large Scale to produce a mesh from a room, and apply texture information in post-processing for a more appealing visual result. + +* `Original ` +* TestCode : None + + +Detecting people and their poses using PointCloud Library +~~~~~~~~~~~~~~~~~~~~~~ +This tutorial presents a method for people and pose detection. + +* `Original ` +* TestCode : None + + diff --git a/docs/source/tutorial/application.rst b/docs/source/tutorial/application.rst new file mode 100644 index 000000000..c3bf22840 --- /dev/null +++ b/docs/source/tutorial/application.rst @@ -0,0 +1,36 @@ +Applications Tutorials +====================== + + +Aligning object templates to a point cloud +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial gives an example of how some of the tools covered in the previous tutorials can be combined to solve a higher level problem - aligning a previously captured model of an object to some newly captured data. + +* `Original `_ \ +* TestCode : None + + +Cluster Recognition and 6DOF Pose Estimation using VFH descriptors +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we show how the Viewpoint Feature Histogram (VFH) descriptor can be used to recognize similar clusters in terms of their geometry. + +* `Original `_ \ +* TestCode : None + + +Point Cloud Streaming to Mobile Devices with Real-time Visualization +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial describes how to send point cloud data over the network from a desktop server to a client running on a mobile device. + +* `Original `_ \ +* TestCode : None + + +Detecting people on a ground plane with RGB-D data +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial presents a method for detecting people on a ground plane with RGB-D data. + +* `Original `_ \ +* TestCode : None + + diff --git a/docs/source/tutorial/features.rst b/docs/source/tutorial/features.rst new file mode 100644 index 000000000..98570c0bc --- /dev/null +++ b/docs/source/tutorial/features.rst @@ -0,0 +1,74 @@ +Features Tutorials +================== + +How 3D Features work in PCL +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This document presents a basic introduction to the 3D feature estimation methodologies in PCL. + +* `Original ` +* TestCode : None + + +Estimating Surface Normals in a PointCloud +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial discusses the theoretical and implementation details of the surface normal estimation module in PCL. + +* `Original ` +* TestCode : None + + +Normal Estimation Using Integral Images +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to compute normals for an organized point cloud using integral images. + +* `Original ` +* TestCode : examples\official\Features\NormalEstimationUsingIntegralImages.py + + +Point Feature Histograms (PFH) descriptors +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial introduces a family of 3D feature descriptors called PFH (Point Feature Histograms) and discusses their implementation details from PCLfs perspective. + +* `Original ` +* TestCode : None + + +Fast Point Feature Histograms (FPFH) descriptors +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial introduces the FPFH (Fast Point Feature Histograms) 3D descriptor and discusses their implementation details from PCLfs perspective. + +* `Original ` +* TestCode : None + + +Estimating VFH signatures for a set of points +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This document describes the Viewpoint Feature Histogram (VFH) descriptor, a novel representation for point clusters for the problem of Cluster (e.g., Object) Recognition and 6DOF Pose Estimation. + +* `Original ` +* TestCode : None + + +How to extract NARF features from a range image +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to extract NARF features from a range image. + +* `Original ` +* TestCode : None + +Moment of inertia and eccentricity based descriptors +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to compute moment of inertia and eccentricity of the cloud. In addition to this we will learn how to extract AABB and OBB. + +* `Original ` +* TestCode : examples\official\Features\moment_of_inertia.py + + +RoPs (Rotational Projection Statistics) feature +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to compute RoPS feature. + +* `Original ` +* TestCode : examples\official\Features\rops_feature.py + + diff --git a/docs/source/tutorial/filtering.rst b/docs/source/tutorial/filtering.rst new file mode 100644 index 000000000..107fa192f --- /dev/null +++ b/docs/source/tutorial/filtering.rst @@ -0,0 +1,50 @@ +Filtering Tutorials +====================== + +Filtering a PointCloud using a PassThrough filter +~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to remove points whose values fall inside/outside a user given interval along a specified dimension. + +* `Original `_ +* TestCode : None + +Downsampling a PointCloud using a VoxelGrid filter +~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to downsample (i.e., reduce the number of points) a Point Cloud. + +* `Original `_ +* TestCode : None + + +Removing outliers using a StatisticalOutlierRemoval filter +~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to remove sparse outliers from noisy data, using StatisticalRemoval. + +* `Original `_ +* TestCode : None + + +Projecting points using a parametric model +~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to project points to a parametric model (i.e., plane). + +* `Original ` +* TestCode : None + + +Extracting indices from a PointCloud +~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to extract a set of indices given by a segmentation algorithm. + +* `Original ` +* TestCode : None + + +Removing outliers using a Conditional or RadiusOutlier removal +~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to remove outliers from noisy data, using ConditionalRemoval, RadiusOutlierRemoval. + +* `Original ` +* TestCode : None + + diff --git a/docs/source/tutorial/index.rst b/docs/source/tutorial/index.rst new file mode 100644 index 000000000..49ab76e59 --- /dev/null +++ b/docs/source/tutorial/index.rst @@ -0,0 +1,21 @@ +python-pcl Tutorial +=================== + +.. toctree:: + :maxdepth: 1 + + features + filtering + io + keypoints + kdtree + octree + rangeimage + recognition + registration + sampleconsensus + segmentation + surface + visualization + application + GPU \ No newline at end of file diff --git a/docs/source/tutorial/io.rst b/docs/source/tutorial/io.rst new file mode 100644 index 000000000..6527cf193 --- /dev/null +++ b/docs/source/tutorial/io.rst @@ -0,0 +1,83 @@ +Input and Output Tutorials +========================== + +The PCD (Point Cloud Data) file format +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This document describes the PCD file format, and the way it is used inside PCL. + +* `Original ` +* TestCode : None + + +Reading Point Cloud data from PCD files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to read a Point Cloud from a PCD file. + +* `Original ` +* TestCode : None + + +Writing Point Cloud data to PCD files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to write a Point Cloud to a PCD file. + +* `Original ` +* TestCode : None + + +Concatenate the points of two Point Clouds +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to concatenate both the fields and the point data of two Point Clouds. When concatenating fields, one PointClouds contains only XYZ data, and the other contains Surface Normal information. + +* `Original ` +* TestCode : None + + +The OpenNI Grabber Framework in PCL +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to acquire point cloud data from an OpenNI camera. + +* `Original ` +* TestCode : None + + +The Velodyne High Definition LiDAR (HDL) Grabber +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to acquire point cloud data from a Velodyne HDL. + +* `Original ` +* TestCode : None + + +The PCL Dinast Grabber Framework +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to acquire point cloud data from a Dinast camera. + +* `Original ` +* TestCode : None + + +Grabbing point clouds from Ensenso cameras +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to acquire point cloud data from an IDS-Imaging Ensenso camera. + +* `Original ` +* TestCode : None + + +Grabbing point clouds / meshes from davidSDK scanners +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to acquire point cloud or mesh data from a davidSDK scanner. + +* `Original ` +* TestCode : None + + +Grabbing point clouds from DepthSense cameras +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to setup and use DepthSense cameras within PCL on both Linux and Windows platforms. + +* `Original ` +* TestCode : None + + diff --git a/docs/source/tutorial/kdtree.rst b/docs/source/tutorial/kdtree.rst new file mode 100644 index 000000000..8a5157461 --- /dev/null +++ b/docs/source/tutorial/kdtree.rst @@ -0,0 +1,10 @@ +KdTree Tutorials +================ + +How to use a KdTree to search +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In this tutorial, we will learn how to search using the nearest neighbor method for k-d trees + +* `Original ` +* TestCode : None diff --git a/docs/source/tutorial/keypoint.rst b/docs/source/tutorial/keypoint.rst new file mode 100644 index 000000000..3ce752230 --- /dev/null +++ b/docs/source/tutorial/keypoint.rst @@ -0,0 +1,12 @@ +KeyPoint Tutorials +================== + +How to extract NARF keypoint from a range image +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In this tutorial, we will learn how to extract NARF keypoints from a range image. + +* `Original ` +* TestCode : None + + diff --git a/docs/source/tutorial/octree.rst b/docs/source/tutorial/octree.rst new file mode 100644 index 000000000..3bf421289 --- /dev/null +++ b/docs/source/tutorial/octree.rst @@ -0,0 +1,27 @@ +Octree Tutorials +================ + +Point Cloud Compression +~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to compress a single point cloud and streams of point clouds. + +* `Original ` +* TestCode : None + + +Spatial Partitioning and Search Operations with Octrees +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to use octrees for spatial partitioning and nearest neighbor search. + +* `Original ` +* TestCode : None + + +Spatial change detection on unorganized point cloud data +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to use octrees for detecting spatial changes within point clouds. + +* `Original ` +* TestCode : None + + diff --git a/docs/source/tutorial/rangeImage.rst b/docs/source/tutorial/rangeImage.rst new file mode 100644 index 000000000..df71e4cd4 --- /dev/null +++ b/docs/source/tutorial/rangeImage.rst @@ -0,0 +1,19 @@ +RangeImage Tutorials +==================== + +How to create a range image from a point cloud +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial demonstrates how to create a range image from a point cloud and a given sensor position. + +* `Original ` +* TestCode : None + + +How to extract borders from range images +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial demonstrates how to extract borders (traversals from foreground to background) from a range image. + +* `Original ` +* TestCode : None + + diff --git a/docs/source/tutorial/recognition.rst b/docs/source/tutorial/recognition.rst new file mode 100644 index 000000000..76c09f077 --- /dev/null +++ b/docs/source/tutorial/recognition.rst @@ -0,0 +1,28 @@ +Recognition Tutorials +===================== + + +3D Object Recognition based on Correspondence Grouping +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial aims at explaining how to perform 3D Object Recognition based on the pcl_recognition module. + +* `Original ` +* TestCode : None + + +Implicit Shape Model +~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how the Implicit Shape Model algorithm works and how to use it for finding objects centers. + +* `Original ` +* TestCode : None + + +Tutorial: Hypothesis Verification for 3D Object Recognition +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial aims at explaining how to do 3D object recognition in clutter by verifying model hypotheses in cluttered and heavily occluded 3D scenes. + +* `Original ` +* TestCode : None + + diff --git a/docs/source/tutorial/registration.rst b/docs/source/tutorial/registration.rst new file mode 100644 index 000000000..941948d89 --- /dev/null +++ b/docs/source/tutorial/registration.rst @@ -0,0 +1,60 @@ +Registration Tutorials +====================== + + +The PCL Registration API +~~~~~~~~~~~~~~~~~~~~~~~~ +In this document, we describe the point cloud registration API and its modules: the estimation and rejection of point correspondences, and the estimation of rigid transformations. + +* `Original `_ \ +* TestCode : None + + +How to use iterative closest point +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial gives an example of how to use the iterative closest point algorithm to see if one PointCloud is just a rigid transformation of another PointCloud. + +* `Original `_ \ +* TestCode : None + + +How to incrementally register pairs of clouds +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This document demonstrates using the Iterative Closest Point algorithm in order to incrementally register a series of point clouds two by two. + +* `Original `_ \ +* TestCode : None + + +Interactive Iterative Closest Point +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial will teach you how to build an interactive ICP program + +* `Original `_ \ +* TestCode : None + + +How to use Normal Distributions Transform +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This document demonstrates using the Normal Distributions Transform algorithm to register two large point clouds. + +* `Original `_ \ +* TestCode : None + + +In-hand scanner for small objects +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This document shows how to use the In-hand scanner applications to obtain colored models of small objects with RGB-D cameras. + +* `Original `_ \ +* TestCode : None + + +Robust pose estimation of rigid objects +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we show how to find the alignment pose of a rigid object in a scene with clutter and occlusions. + +* `Original `_ \ +* TestCode : None + + diff --git a/docs/source/tutorial/sampleconsensus.rst b/docs/source/tutorial/sampleconsensus.rst new file mode 100644 index 000000000..e8fe945d1 --- /dev/null +++ b/docs/source/tutorial/sampleconsensus.rst @@ -0,0 +1,11 @@ +Sampleconsensus Tutorials +====================== + +How to use Random Sample Consensus model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we learn how to use a RandomSampleConsensus with a plane model to obtain the cloud fitting to this model. + +* `Original `_ \ +* TestCode : None + + diff --git a/docs/source/tutorial/segmentation.rst b/docs/source/tutorial/segmentation.rst new file mode 100644 index 000000000..1985534a2 --- /dev/null +++ b/docs/source/tutorial/segmentation.rst @@ -0,0 +1,92 @@ +segmentation Tutorials +========================= + + +Plane model segmentation +~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to segment arbitrary plane models from a given point cloud dataset. + +* `Original `_ \ +* TestCode : None + + +Cylinder model segmentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to segment arbitrary cylindrical models from a given point cloud dataset. + +* `Original `_ \ +* TestCode : None + + +Euclidean Cluster Extraction +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to extract Euclidean clusters with the pcl::EuclideanClusterExtraction class. + +* `Original `_ \ +* TestCode : None + + +Region growing segmentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to use region growing segmentation algorithm. + +* `Original `_ \ +* TestCode : None + + +Color-based region growing segmentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to use color-based region growing segmentation algorithm. + +* `Original `_ \ +* TestCode : None + + +Min-Cut Based Segmentation +~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to use min-cut based segmentation algorithm. + +* `Original `_ \ +* TestCode : None + + +Conditional Euclidean Clustering +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial describes how to use the Conditional Euclidean Clustering class in PCL: A segmentation algorithm that clusters points based on Euclidean distance and a user-customizable condition that needs to hold. + +* `Original `_ \ +* TestCode : None + + +Difference of Normals Based Segmentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to use the difference of normals feature for segmentation. + +* `Original `_ \ +* TestCode : None + + +Clustering of Pointclouds into Supervoxels - Theoretical primer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we show to break a pointcloud into the mid-level supervoxel representation. + +* `Original `_ \ +* TestCode : None + + +Identifying ground returns using ProgressiveMorphologicalFilter segmentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we show how to segment a point cloud into ground and non-ground returns. + +* `Original `_ \ +* TestCode : None + + +Filtering a PointCloud using ModelOutlierRemoval +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial describes how to extract points from a point cloud using SAC models + +* `Original `_ \ +* TestCode : None + + diff --git a/docs/source/tutorial/surface.rst b/docs/source/tutorial/surface.rst new file mode 100644 index 000000000..3ca4bf3f1 --- /dev/null +++ b/docs/source/tutorial/surface.rst @@ -0,0 +1,36 @@ +surface Tutorials +================= + + +Smoothing and normal estimation based on polynomial reconstruction +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial, we will learn how to construct and run a Moving Least Squares (MLS) algorithm to obtain smoothed XYZ coordinates and normals. + +* `Original `_ \ +* TestCode : None + + +Construct a concave or convex hull polygon for a plane model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to calculate a simple 2D concave or convex hull polygon for a set of points supported by a plane. + +* `Original `_ \ +* TestCode : None + + +Fast triangulation of unordered point clouds +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to run a greedy triangulation algorithm on a PointCloud with normals to obtain a triangle mesh based on projections of the local neighborhood. + +* `Original `_ \ +* TestCode : None + + +Fitting trimmed B-splines to unordered point clouds +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In this tutorial we will learn how to reconstruct a smooth surface from an unordered point-cloud by fitting trimmed B-splines. + +* `Original `_ \ +* TestCode : None + + diff --git a/docs/source/tutorial/tracking.rst b/docs/source/tutorial/tracking.rst new file mode 100644 index 000000000..924412312 --- /dev/null +++ b/docs/source/tutorial/tracking.rst @@ -0,0 +1,8 @@ +Padding +================================ + +.. autosummary:: + :toctree: generated/ + :nosignatures: + + python-pcl.pad diff --git a/docs/source/tutorial/visualization.rst b/docs/source/tutorial/visualization.rst new file mode 100644 index 000000000..37a7eae63 --- /dev/null +++ b/docs/source/tutorial/visualization.rst @@ -0,0 +1,60 @@ +Visualization Tutorials +======================= + + +The CloudViewer +~~~~~~~~~~~~~~~ +This tutorial demonstrates how to use the pcl visualization tools. + +* `Original `_ \ +* TestCode : None + + +How to visualize a range image +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial demonstrates how to use the pcl visualization tools for range images. + +* `Original `_ \ +* TestCode : None + + +PCLVisualizer +~~~~~~~~~~~~~ +This tutorial demonstrates how to use the PCLVisualizer class for powerful visualisation of point clouds and related data. + +* `Original `_ \ +* TestCode : None + + +PCLPlotter +~~~~~~~~~~ +This tutorial demonstrates how to use the PCLPlotter class for powerful visualisation of plots, charts and histograms of raw data and explicit functions. + +* `Original `_ \ +* TestCode : None + + +Visualization +~~~~~~~~~~~~~ +This tutorial will give an overview on the usage of the PCL visualization tools. + +* `Original `_ \ +* TestCode : None + + +Create a PCL visualizer in Qt with cmake +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial shows you how to create a PCL visualizer within a Qt application. + +* `Original `_ \ +* TestCode : None + + +Create a PCL visualizer in Qt to colorize clouds +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This tutorial shows you how to color point clouds within a Qt application. + +* `Original `_ \ +* TestCode : None + + diff --git a/docs/translate.bat b/docs/translate.bat new file mode 100644 index 000000000..57748413b --- /dev/null +++ b/docs/translate.bat @@ -0,0 +1,8 @@ +@ECHO OFF + +make gettext +mkdir locale\pot +copy build\locale\*.pot locale\pot +mkdir locale\ja\LC_MESSAGES +copy locale\pot\* locale\ja\LC_MESSAGES\ +sphinx-intl update -p build\locale -l ja \ No newline at end of file diff --git a/setup.py b/setup.py index 5704924f2..deb3013c9 100644 --- a/setup.py +++ b/setup.py @@ -573,21 +573,21 @@ def pkgconfig_win(flag, cut): if pcl_version == '-1.6': module = [Extension("pcl._pcl", ["pcl/_pcl.pyx", "pcl/minipcl.cpp", "pcl/ProjectInliers.cpp"], language="c++", **ext_args), - # Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), + Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), # Extension("pcl.pcl_grabber", ["pcl/pcl_grabber.pyx", "pcl/grabber_callback.cpp"], language="c++", **ext_args), # debug # gdb_debug=True, ] elif pcl_version == '-1.7': module = [Extension("pcl._pcl", ["pcl/_pcl_172.pyx", "pcl/minipcl.cpp", "pcl/ProjectInliers.cpp"], language="c++", **ext_args), - # Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), + Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), # Extension("pcl.pcl_grabber", ["pcl/pcl_grabber.pyx", "pcl/grabber_callback.cpp"], language="c++", **ext_args), # debug # gdb_debug=True, ] elif pcl_version == '-1.8': module = [Extension("pcl._pcl", ["pcl/_pcl_180.pyx", "pcl/minipcl.cpp", "pcl/ProjectInliers.cpp"], language="c++", **ext_args), - # Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), + Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), # Extension("pcl.pcl_grabber", ["pcl/pcl_grabber.pyx", "pcl/grabber_callback.cpp"], language="c++", **ext_args), # debug # gdb_debug=True, @@ -600,7 +600,7 @@ def pkgconfig_win(flag, cut): setup(name='python-pcl', description='pcl wrapper', url='http://github.com/strawlab/python-pcl', - version='0.2', + version='0.3', author='John Stowers', author_email='john.stowers@gmail.com', license='BSD', From 1d99c1bdc33fd3214de245b44a4305511154701d Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 6 Oct 2017 12:18:20 +0900 Subject: [PATCH 02/80] addpath(vtk include/lib path) --- setup.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/setup.py b/setup.py index deb3013c9..c81677158 100644 --- a/setup.py +++ b/setup.py @@ -541,6 +541,11 @@ def pkgconfig_win(flag, cut): ext_args['include_dirs'].append('/usr/include/ni') # ext_args['library_dirs'].append() # ext_args['libraries'].append() + + # VTK use? + ext_args['include_dirs'].append('/usr/include/vtk') + ext_args['library_dirs'].append('/usr/lib/vtk') + ext_args['library_dirs'].append('/usr/lib64/vtk') for flag in pkgconfig('--cflags-only-other'): if flag.startswith('-D'): From 37992881266a1cd3828edf2f7896bff78a13afe5 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 6 Oct 2017 12:38:27 +0900 Subject: [PATCH 03/80] add vtk path --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index c81677158..72bcc1646 100644 --- a/setup.py +++ b/setup.py @@ -544,8 +544,11 @@ def pkgconfig_win(flag, cut): # VTK use? ext_args['include_dirs'].append('/usr/include/vtk') + ext_args['include_dirs'].append('/usr/local/include/vtk') ext_args['library_dirs'].append('/usr/lib/vtk') ext_args['library_dirs'].append('/usr/lib64/vtk') + ext_args['include_dirs'].append('/usr/local/lib/vtk') + ext_args['include_dirs'].append('/usr/local/lib64/vtk') for flag in pkgconfig('--cflags-only-other'): if flag.startswith('-D'): From 1e222a2aa7fe47a10a4ebb801cc88015aee4e659 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 6 Oct 2017 12:59:04 +0900 Subject: [PATCH 04/80] vtk test --- .travis.yml | 6 ++++++ setup.py | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1a048db2a..c0a91918f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -72,6 +72,9 @@ before_install: travis_wait 45 brew install pcl --without-qt; + ls /usr/include; + ls /usr/include/pcl-1.8; + cp -n ./travisCI/pcl_2d-1.8.pc /usr/local/lib/pkgconfig/pcl_2d-1.8.pc; fi @@ -82,6 +85,9 @@ install: sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl -y; sudo apt-get update -y; sudo apt-get install libpcl-all -y; + + ls /usr/include; + ls /usr/include/pcl-1.7; fi - if [[ ( "$TRAVIS_OS_NAME" == "linux" ) && ( "$PCL_VERSION" == "1.8" ) ]]; then sudo add-apt-repository -y ppa:webupd8team/java && sudo apt update && sudo apt -y install oracle-java8-installer; diff --git a/setup.py b/setup.py index 72bcc1646..ad71efbf6 100644 --- a/setup.py +++ b/setup.py @@ -547,8 +547,8 @@ def pkgconfig_win(flag, cut): ext_args['include_dirs'].append('/usr/local/include/vtk') ext_args['library_dirs'].append('/usr/lib/vtk') ext_args['library_dirs'].append('/usr/lib64/vtk') - ext_args['include_dirs'].append('/usr/local/lib/vtk') - ext_args['include_dirs'].append('/usr/local/lib64/vtk') + ext_args['library_dirs'].append('/usr/local/lib/vtk') + ext_args['library_dirs'].append('/usr/local/lib64/vtk') for flag in pkgconfig('--cflags-only-other'): if flag.startswith('-D'): From b7d4c8f6b06da3dd451d9d06e4d807dfafe350fb Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 6 Oct 2017 14:15:51 +0900 Subject: [PATCH 05/80] vtk test2 --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index c0a91918f..b6b05a8a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -72,8 +72,8 @@ before_install: travis_wait 45 brew install pcl --without-qt; - ls /usr/include; - ls /usr/include/pcl-1.8; + ls /usr/local/include; + ls /usr/local/include/pcl-1.8; cp -n ./travisCI/pcl_2d-1.8.pc /usr/local/lib/pkgconfig/pcl_2d-1.8.pc; fi @@ -86,8 +86,8 @@ install: sudo apt-get update -y; sudo apt-get install libpcl-all -y; - ls /usr/include; - ls /usr/include/pcl-1.7; + ls /usr/local/include; + ls /usr/local/include/pcl-1.7; fi - if [[ ( "$TRAVIS_OS_NAME" == "linux" ) && ( "$PCL_VERSION" == "1.8" ) ]]; then sudo add-apt-repository -y ppa:webupd8team/java && sudo apt update && sudo apt -y install oracle-java8-installer; From 8dfa570a6e6b065e3fd8aeed547d3762003b3dfa Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 6 Oct 2017 14:32:08 +0900 Subject: [PATCH 06/80] vtk test3 --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b6b05a8a3..caff42e73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -73,7 +73,6 @@ before_install: travis_wait 45 brew install pcl --without-qt; ls /usr/local/include; - ls /usr/local/include/pcl-1.8; cp -n ./travisCI/pcl_2d-1.8.pc /usr/local/lib/pkgconfig/pcl_2d-1.8.pc; fi @@ -87,7 +86,6 @@ install: sudo apt-get install libpcl-all -y; ls /usr/local/include; - ls /usr/local/include/pcl-1.7; fi - if [[ ( "$TRAVIS_OS_NAME" == "linux" ) && ( "$PCL_VERSION" == "1.8" ) ]]; then sudo add-apt-repository -y ppa:webupd8team/java && sudo apt update && sudo apt -y install oracle-java8-installer; From b561e4946054d4052bc8f3e7b0c2d2dd7567dc4c Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 6 Oct 2017 14:56:38 +0900 Subject: [PATCH 07/80] vtk test4 --- setup.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index ad71efbf6..3244cbedd 100644 --- a/setup.py +++ b/setup.py @@ -543,12 +543,15 @@ def pkgconfig_win(flag, cut): # ext_args['libraries'].append() # VTK use? - ext_args['include_dirs'].append('/usr/include/vtk') - ext_args['include_dirs'].append('/usr/local/include/vtk') - ext_args['library_dirs'].append('/usr/lib/vtk') - ext_args['library_dirs'].append('/usr/lib64/vtk') - ext_args['library_dirs'].append('/usr/local/lib/vtk') - ext_args['library_dirs'].append('/usr/local/lib64/vtk') + # ext_args['include_dirs'].append('/usr/include/vtk') + # ext_args['include_dirs'].append('/usr/local/include/vtk') + ext_args['include_dirs'].append('/usr/include/vtk-5.8') + ext_args['library_dirs'].append('/usr/lib') + # ext_args['library_dirs'].append('/usr/lib/vtk') + # ext_args['library_dirs'].append('/usr/lib64/vtk') + # ext_args['library_dirs'].append('/usr/local/lib/vtk') + # ext_args['library_dirs'].append('/usr/local/lib64/vtk') + # ext_args['libraries'].append('???') for flag in pkgconfig('--cflags-only-other'): if flag.startswith('-D'): From c9f9820ea8b022e58c42916746ae7fcd01655d3b Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 6 Oct 2017 17:09:16 +0900 Subject: [PATCH 08/80] vtk test5 --- setup.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 3244cbedd..52f248d89 100644 --- a/setup.py +++ b/setup.py @@ -545,12 +545,12 @@ def pkgconfig_win(flag, cut): # VTK use? # ext_args['include_dirs'].append('/usr/include/vtk') # ext_args['include_dirs'].append('/usr/local/include/vtk') + # pcl 1.7(Ubuntu) ext_args['include_dirs'].append('/usr/include/vtk-5.8') ext_args['library_dirs'].append('/usr/lib') - # ext_args['library_dirs'].append('/usr/lib/vtk') - # ext_args['library_dirs'].append('/usr/lib64/vtk') - # ext_args['library_dirs'].append('/usr/local/lib/vtk') - # ext_args['library_dirs'].append('/usr/local/lib64/vtk') + # pcl 1.8.1(MacOSX) + ext_args['include_dirs'].append('/usr/include/vtk-8.0') + ext_args['library_dirs'].append('/usr/lib') # ext_args['libraries'].append('???') for flag in pkgconfig('--cflags-only-other'): From 8b5a5829184121a448e9eb4e0cf4f2c804f2c7b4 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 6 Oct 2017 17:52:03 +0900 Subject: [PATCH 09/80] vtk test6 --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 52f248d89..d812b8bed 100644 --- a/setup.py +++ b/setup.py @@ -549,8 +549,8 @@ def pkgconfig_win(flag, cut): ext_args['include_dirs'].append('/usr/include/vtk-5.8') ext_args['library_dirs'].append('/usr/lib') # pcl 1.8.1(MacOSX) - ext_args['include_dirs'].append('/usr/include/vtk-8.0') - ext_args['library_dirs'].append('/usr/lib') + ext_args['include_dirs'].append('/usr/local/include/vtk-8.0') + ext_args['library_dirs'].append('/usr/local/lib') # ext_args['libraries'].append('???') for flag in pkgconfig('--cflags-only-other'): From d3d9ff7a01e1c636df0720e85068a3a172a581a5 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Mon, 9 Oct 2017 18:05:43 +0900 Subject: [PATCH 10/80] test_files add docs update CloudViewing add --- .travis.yml | 2 - examples/visualization.py | 25 +- readme.rst | 3 +- setup.py | 5 +- tests/test.py | 613 ------------------- tests/test_XYZI.py | 469 -------------- tests/test_XYZRGB.py | 425 ------------- tests/test_XYZRGBA.py | 425 ------------- tests/test_features.py | 61 ++ tests/{test_pcl.py => test_filters.py} | 807 ++++++++----------------- tests/test_io.py | 232 +++++++ tests/test_kdtree.py | 83 +++ tests/test_keypoints.py | 49 ++ tests/test_octree.py | 93 +++ tests/test_pcl_172.py | 566 ----------------- tests/test_pcl_180.py | 568 ----------------- tests/test_recognition.py | 27 + tests/test_registration_160.py | 72 --- tests/test_sampleconsensus.py | 75 +++ tests/test_segmentation.py | 61 ++ tests/test_surface.py | 33 + 21 files changed, 1000 insertions(+), 3694 deletions(-) delete mode 100644 tests/test.py delete mode 100644 tests/test_XYZI.py delete mode 100644 tests/test_XYZRGB.py delete mode 100644 tests/test_XYZRGBA.py create mode 100644 tests/test_features.py rename tests/{test_pcl.py => test_filters.py} (61%) create mode 100644 tests/test_io.py create mode 100644 tests/test_kdtree.py create mode 100644 tests/test_keypoints.py create mode 100644 tests/test_octree.py delete mode 100644 tests/test_pcl_172.py delete mode 100644 tests/test_pcl_180.py create mode 100644 tests/test_recognition.py delete mode 100644 tests/test_registration_160.py create mode 100644 tests/test_sampleconsensus.py create mode 100644 tests/test_segmentation.py create mode 100644 tests/test_surface.py diff --git a/.travis.yml b/.travis.yml index caff42e73..cd17725e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -84,8 +84,6 @@ install: sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl -y; sudo apt-get update -y; sudo apt-get install libpcl-all -y; - - ls /usr/local/include; fi - if [[ ( "$TRAVIS_OS_NAME" == "linux" ) && ( "$PCL_VERSION" == "1.8" ) ]]; then sudo add-apt-repository -y ppa:webupd8team/java && sudo apt update && sudo apt -y install oracle-java8-installer; diff --git a/examples/visualization.py b/examples/visualization.py index b6b5db82d..a5e4d741f 100644 --- a/examples/visualization.py +++ b/examples/visualization.py @@ -3,18 +3,19 @@ import numpy as np import pcl - -import pcl.pcl_visualization -# from pcl.pcl_registration import icp, gicp, icp_nl - -cloud = pcl.load_XYZRGB('./examples/pcldata/tutorials/table_scene_mug_stereo_textured.pcd') - visual = pcl.pcl_visualization.CloudViewing() - -# PointXYZ -# visual.ShowMonochromeCloud(cloud) - # visual.ShowGrayCloud(cloud) -visual.ShowColorCloud(cloud) -# visual.ShowColorACloud(cloud) + +import pcl.pcl_visualization +# from pcl.pcl_registration import icp, gicp, icp_nl + +cloud = pcl.load_XYZRGB('./examples/pcldata/tutorials/table_scene_mug_stereo_textured.pcd') +visual = pcl.pcl_visualization.CloudViewing() + +# PointXYZ +# visual.ShowMonochromeCloud(cloud) + +# visual.ShowGrayCloud(cloud, b'cloud') +visual.ShowColorCloud(cloud, b'cloud') +# visual.ShowColorACloud(cloud, b'cloud') # while True: # visual.WasStopped() diff --git a/readme.rst b/readme.rst index ceb59c6c4..e294f942d 100644 --- a/readme.rst +++ b/readme.rst @@ -14,6 +14,7 @@ })(); +
Introduction ============ @@ -97,7 +98,7 @@ and Windows with and Windows with * (Miniconda/Anaconda) - Python 3.5 - * pcl 1.8.0(VS2015) + * pcl 1.8.1(VS2015) * Cython <= 0.25.2 * Gtk+ diff --git a/setup.py b/setup.py index d812b8bed..8839140d1 100644 --- a/setup.py +++ b/setup.py @@ -548,10 +548,13 @@ def pkgconfig_win(flag, cut): # pcl 1.7(Ubuntu) ext_args['include_dirs'].append('/usr/include/vtk-5.8') ext_args['library_dirs'].append('/usr/lib') + # ext_args['libraries'].append('libvtk*.so') # pcl 1.8.1(MacOSX) ext_args['include_dirs'].append('/usr/local/include/vtk-8.0') ext_args['library_dirs'].append('/usr/local/lib') - # ext_args['libraries'].append('???') + ext_args['include_dirs'].append('/usr/local/Cellar/vtk/8.0.1/include') + ext_args['library_dirs'].append('/usr/local/Cellar/vtk/8.0.1/lib') + # ext_args['libraries'].append('libvtk*.dylib') for flag in pkgconfig('--cflags-only-other'): if flag.startswith('-D'): diff --git a/tests/test.py b/tests/test.py deleted file mode 100644 index a0e4e2611..000000000 --- a/tests/test.py +++ /dev/null @@ -1,613 +0,0 @@ -import os.path -import pickle -import shutil -import tempfile -import unittest - -import pcl -import numpy as np - -from numpy.testing import assert_array_almost_equal, assert_array_equal - - -_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] -_DATA = """0.0, 0.0, 0.2; - 1.0, 2.0, 3.2; - 2.0, 4.0, 6.2; - 3.0, 6.0, 9.2; - 4.0, 8.0, 12.2""" - -# io -class TestListIO(unittest.TestCase): - def setUp(self): - self.p = pcl.PointCloud(_data) - - def testFromList(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToList(self): - l = self.p.to_list() - assert np.allclose(l, _data) - - -class TestNumpyIO(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(_DATA, dtype=np.float32)) - self.p = pcl.PointCloud(self.a) - - def testFromNumpy(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToNumpy(self): - a = self.p.to_array() - self.assertTrue(np.alltrue(a == self.a)) - - def test_asarray(self): - p = pcl.PointCloud(self.p) # copy - # old0 = p[0] - a = np.asarray(p) # view - a[:] += 6 - assert_array_almost_equal(p[0], a[0]) - - # Regression test: deleting a second view would previously - # reset the view count to zero. - b = np.asarray(p) - del b - - self.assertRaises(ValueError, p.resize, 2 * p.size) - - def test_pickle(self): - """Test pickle support.""" - # In this testcase because picking reduces to pickling NumPy arrays. - s = pickle.dumps(self.p) - p = pickle.loads(s) - self.assertTrue(np.all(self.a == p.to_array())) - -# copy the output of seg -SEGDATA = """ 0.352222 -0.151883 2; - -0.106395 -0.397406 1; - -0.473106 0.292602 1; - -0.731898 0.667105 -2; - 0.441304 -0.734766 1; - 0.854581 -0.0361733 1; - -0.4607 -0.277468 4; - -0.916762 0.183749 1; - 0.968809 0.512055 1; - -0.998983 -0.463871 1; - 0.691785 0.716053 1; - 0.525135 -0.523004 1; - 0.439387 0.56706 1; - 0.905417 -0.579787 1; - 0.898706 -0.504929 1""" - -SEGINLIERS = """-0.106395 -0.397406 1; - -0.473106 0.292602 1; - 0.441304 -0.734766 1; - 0.854581 -0.0361733 1; - -0.916762 0.183749 1; - 0.968809 0.512055 1; - -0.998983 -0.463871 1; - 0.691785 0.716053 1; - 0.525135 -0.523004 1; - 0.439387 0.56706 1; - 0.905417 -0.579787 1; - 0.898706 -0.504929 1""" -SEGINLIERSIDX = [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14] - -SEGCOEFF = [0.0, 0.0, 1.0, -1.0] - - -class TestSegmentPlane(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(SEGDATA, dtype=np.float32)) - self.p = pcl.PointCloud() - self.p.from_array(self.a) - - def testLoad(self): - npts = self.a.shape[0] - self.assertEqual(npts, self.p.size) - self.assertEqual(npts, self.p.width) - self.assertEqual(1, self.p.height) - - def testSegmentPlaneObject(self): - seg = self.p.make_segmenter() - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_PLANE) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_distance_threshold(0.01) - - indices, model = seg.segment() - self.assertListEqual(indices, SEGINLIERSIDX) - self.assertListEqual(model, SEGCOEFF) - - -def test_pcd_read(): - TMPL = """# .PCD v.7 - Point Cloud Data file format -VERSION .7 -FIELDS x y z -SIZE 4 4 4 -TYPE F F F -COUNT 1 1 1 -WIDTH %(npts)d -HEIGHT 1 -VIEWPOINT 0.1 0 0.5 0 1 0 0 -POINTS %(npts)d -DATA ascii -%(data)s""" - - a = np.array(np.mat(SEGDATA, dtype=np.float32)) - npts = a.shape[0] - tmp_file = tempfile.mkstemp(suffix='.pcd')[1] - with open(tmp_file, "w") as f: - f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) - - p = pcl.load(tmp_file) - - assert p.width == npts - assert p.height == 1 - - for i, row in enumerate(a): - pt = np.array(p[i]) - ssd = sum((row - pt) ** 2) - assert ssd < 1e-6 - - assert_array_equal(p.sensor_orientation, - np.array([0, 1, 0, 0], dtype=np.float32)) - assert_array_equal(p.sensor_origin, - np.array([.1, 0, .5, 0], dtype=np.float32)) - - -def test_copy(): - a = np.random.randn(100, 3).astype(np.float32) - p1 = pcl.PointCloud(a) - p2 = pcl.PointCloud(p1) - assert_array_equal(p2.to_array(), a) - - -SEGCYLMOD = [0.0552167, 0.0547035, 0.757707, - -0.0270852, -4.41026, -2.88995, 0.0387603] -# 1.6 - (Only Mac), other -SEGCYLIN = 11461 -# 1.7.2 - (Only Mac) -# SEGCYLIN = 11462 -# 1.8 - (Only Mac) -# SEGCYLIN = 11450 - -class TestSegmentCylinder(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testSegment(self): - seg = self.p.make_segmenter_normals(50) - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_CYLINDER) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_normal_distance_weight(0.1) - seg.set_max_iterations(10000) - seg.set_distance_threshold(0.05) - seg.set_radius_limits(0, 0.1) - - indices, model = seg.segment() - - # MAC NG - # self.assertEqual(len(indices), SEGCYLIN) - - # npexp = np.array(SEGCYLMOD) - # npmod = np.array(model) - # ssd = sum((npexp - npmod) ** 2) - # self.assertLess(ssd, 1e-6) - - -class TestSave(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.tmpdir = tempfile.mkdtemp(suffix='pcl-test') - - def tearDown(self): - shutil.rmtree(self.tmpdir) - - def testSave(self): - for ext in ["pcd", "ply"]: - d = os.path.join(self.tmpdir, "foo." + ext) - pcl.save(self.p, d) - p = pcl.load(d) - self.assertEqual(self.p.size, p.size) - - -class TestFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") - - def testFilter(self): - mls = self.p.make_moving_least_squares() - mls.set_search_radius(0.5) - mls.set_polynomial_order(2) - mls.set_polynomial_fit(True) - f = mls.process() - # new instance is returned - self.assertNotEqual(self.p, f) - # mls filter retains the same number of points - self.assertEqual(self.p.size, f.size) - - -class TestExtract(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") - - def testExtractPos(self): - p2 = self.p.extract([1, 2, 3], False) - # new instance is returned - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, 3) - - def testExtractNeg(self): - p2 = self.p.extract([1, 2, 3], True) - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, self.p.size - 3) - - -class TestExceptions(unittest.TestCase): - - def setUp(self): - self.p = pcl.PointCloud(np.arange(9, dtype=np.float32).reshape(3, 3)) - - def testIndex(self): - self.assertRaises(IndexError, self.p.__getitem__, self.p.size) - self.assertRaises(Exception, self.p.get_point, self.p.size, 1) - - def testResize(self): - # XXX MemoryError isn't actually the prettiest exception for a - # negative argument. Don't hesitate to change this test to reflect - # better exceptions. - self.assertRaises(MemoryError, self.p.resize, -1) - - -class TestSegmenterNormal(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def _tpos(self, c): - self.assertEqual(c.size, 22745) - self.assertEqual(c.width, 22745) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def _tneg(self, c): - self.assertEqual(c.size, 1015) - self.assertEqual(c.width, 1015) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def testFilterPos(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - self.assertEqual(fil.mean_k, 50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.stddev_mul_thresh, 1.0) - c = fil.filter() - self._tpos(c) - - def testFilterNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.negative, False) - fil.set_negative(True) - self.assertEqual(fil.negative, True) - c = fil.filter() - self._tneg(c) - - def testFilterPosNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - c = fil.filter() - self._tpos(c) - fil.set_negative(True) - c = fil.filter() - self._tneg(c) - - -class TestVoxelGridFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_voxel_grid_filter() - fil.set_leaf_size(0.01, 0.01, 0.01) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 719) - - -class TestPassthroughFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 7751) - - def testFilterBoth(self): - total = self.p.size - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - front = fil.filter().size - fil.set_filter_limits(0.75, 100) - back = fil.filter().size - self.assertEqual(total, front + back) - - -class TestKdTree(unittest.TestCase): - def setUp(self): - rng = np.random.RandomState(42) - # Define two dense sets of points of sizes 30 and 170, resp. - a = rng.randn(100, 3).astype(np.float32) - a[:30] -= 42 - - self.pc = pcl.PointCloud(a) - self.kd = pcl.KdTreeFLANN(self.pc) - - def testException(self): - self.assertRaises(TypeError, pcl.KdTreeFLANN) - self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) - - def testKNN(self): - # Small cluster - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, 0, k=2) - for i in ind: - self.assertGreaterEqual(i, 0) - self.assertLess(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - # Big cluster - for ref, k in ((80, 1), (59, 3), (60, 10)): - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) - for i in ind: - self.assertGreaterEqual(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - -# class TestOctreePointCloud(unittest.TestCase): -# -# def setUp(self): -# self.t = pcl.OctreePointCloud(0.1) -# -# def testLoad(self): -# pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.t.set_input_cloud(pc) -# self.t.define_bounding_box() -# self.t.add_points_from_input_cloud() -# good_point = (0.035296999, -0.074322999, 1.2074) -# rs = self.t.is_voxel_occupied_at_point(good_point) -# self.assertTrue(rs) -# bad_point = (0.5, 0.5, 0.5) -# rs = self.t.is_voxel_occupied_at_point(bad_point) -# self.assertFalse(rs) -# voxels_len = 44 -# self.assertEqual(len(self.t.get_occupied_voxel_centers()), voxels_len) -# self.t.delete_voxel_at_point(good_point) -# self.assertEqual( -# len(self.t.get_occupied_voxel_centers()), voxels_len - 1) - - -class TestOctreePointCloudSearch(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloudSearch(0.1) - pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - - def testConstructor(self): - self.assertRaises(ValueError, pcl.OctreePointCloudSearch, 0.) - - def testRadiusSearch(self): - good_point = (0.035296999, -0.074322999, 1.2074) - rs = self.t.radius_search(good_point, 0.5, 1) - self.assertEqual(len(rs[0]), 1) - self.assertEqual(len(rs[1]), 1) - rs = self.t.radius_search(good_point, 0.5) - self.assertEqual(len(rs[0]), 19730) - self.assertEqual(len(rs[1]), 19730) - -# class TestOctreePointCloudChangeDetector(unittest.TestCase): -# -# def setUp(self): -# self.t = pcl.OctreePointCloudSearch(0.1) -# pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.t.set_input_cloud(pc) -# self.t.define_bounding_box() -# self.t.add_points_from_input_cloud() -# -# def testConstructor(self): -# self.assertRaises(ValueError, pcl.OctreePointCloudChangeDetector, 0.) -# -# def testRadiusSearch(self): -# good_point = (0.035296999, -0.074322999, 1.2074) -# rs = self.t.radius_search(good_point, 0.5, 1) -# self.assertEqual(len(rs[0]), 1) -# self.assertEqual(len(rs[1]), 1) -# rs = self.t.radius_search(good_point, 0.5) -# self.assertEqual(len(rs[0]), 19730) -# self.assertEqual(len(rs[1]), 19730) - -# class TestCropHull(unittest.TestCase): -# -# def setUp(self): -# self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# -# def testCropHull(self): -# filterCloud = pcl.PointCloud() -# vt = pcl.Vertices() -# # // inside point -# # cloud->push_back(pcl::PointXYZ(M_PI * 0.3, M_PI * 0.3, 0)); -# # // hull points -# # cloud->push_back(pcl::PointXYZ(0,0,0)); -# # cloud->push_back(pcl::PointXYZ(M_PI,0,0)); -# # cloud->push_back(pcl::PointXYZ(M_PI,M_PI*0.5,0)); -# # cloud->push_back(pcl::PointXYZ(0,M_PI*0.5,0)); -# # cloud->push_back(pcl::PointXYZ(0,0,0)); -# # // outside point -# # cloud->push_back(pcl::PointXYZ(-M_PI * 0.3, -M_PI * 0.3, 0)); -# points_2 = np.array([ -# [1 * 0.3, 1 * 0.3, 0], -# [0, 0, 0], -# [1, 0, 0], -# [1, 1 * 0.5, 0], -# [0, 1 * 0.5, 0], -# [0, 0, 0], -# # [-1 * 0.3 , -1 * 0.3, 0] -# ], dtype=np.float32) -# filterCloud.from_array(points_2) -# # print(filterCloud) -# -# vertices_point_1 = np.array([1, 2, 3, 4, 5], dtype=np.int) -# vt.from_array(vertices_point_1) -# # print(vt) -# # vt.vertices.push_back(1) -# # vt.vertices.push_back(2) -# # vt.vertices.push_back(3) -# # vt.vertices.push_back(4) -# # vt.vertices.push_back(5) -# # vertices = vector[pcl.Vertices] -# # vertices.push_back(vt) -# -# outputCloud = pcl.PointCloud() -# # crophull = pcl.CropHull() -# # crophull.setInputCloud(self.pc) -# crophull = self.pc.make_crophull() -# # crophull.setHullIndices(vertices) -# # crophull.setHullIndices(vt) -# # crophull.setHullCloud(filterCloud) -# # crophull.setDim(2) -# # crophull.setCropOutside(false) -# crophull.SetParameter(filterCloud, vt) -# # indices = vector[int] -# # cropHull.filter(indices); -# # outputCloud = cropHull.filter(); -# # print("before: " + outputCloud) -# crophull.Filtering(outputCloud) -# # print(outputCloud) - - -# Viewer -# // pcl::visualization::CloudViewer viewer ("Cluster viewer"); -# // viewer.showCloud(colored_cloud); - -# Write Point -# pcl::PCDWriter writer; -# std::stringstream ss; -# ss << "min_cut_seg" << ".pcd"; -# // writer.write (ss.str (), *cloud, false); -# pcl::io::savePCDFile(ss.str(), *outputCloud, false); - - -# class TestCropBox(unittest.TestCase): -# -# def setUp(self): -# # self.pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# -# def testCrop(self): -# pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") -# clipper = self.pc.make_cropbox() -# outcloud = pcl.PointCloud() -# self.assertEqual(outcloud.size, 0) -# -# # clipper.setTranslation(Eigen::Vector3f(pose->tx, pose->ty, pose->tz)); -# # clipper.setRotation(Eigen::Vector3f(pose->rx, pose->ry, pose->rz)); -# # clipper.setMin(-Eigen::Vector4f(tracklet->l/2, tracklet->w/2, 0, 0)); -# # clipper.setMax(Eigen::Vector4f(tracklet->l/2, tracklet->w/2, tracklet->h, 0)); -# # clipper.filter(*outcloud); -# tx = 0 -# ty = 0 -# tz = 0 -# clipper.set_Translation(tx, ty, tz) -# rx = 0 -# ry = 0 -# rz = 0 -# clipper.set_Rotation(rx, ry, rz) -# minx = -1.5 -# miny = -1.5 -# minz = 0 -# mins = 0 -# maxx = 3.5 -# maxy = 3.5 -# maxz = 2 -# maxs = 0 -# clipper.set_MinMax(minx, miny, minz, mins, maxx, maxy, maxz, maxs) -# clipper.Filtering(outcloud) -# # self.assertNotEqual(outcloud.size, 0) -# self.assertNotEqual(outcloud.size, self.pc.size) - -# Add ProjectInlier -# class TestProjectInlier(unittest.TestCase): -# -# def setUp(self): -# # TestData -# self.pc = pcl.PointCloud(a) -# self.kd = pcl.CropBox(self.pc) -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) -# -# def testCrop(self): -# # Big cluster -# for ref, k in ((80, 1), (59, 3), (60, 10)): -# ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) -# for i in ind: -# self.assertGreaterEqual(i, 30) -# for d in sqdist: -# self.assertGreaterEqual(d, 0) -# - -# Add RadiusOutlierRemoval - -# Add ConditionAnd - -def suite(): - suite = unittest.TestSuite() - suite.addTests(unittest.makeSuite(TestListIO)) - suite.addTests(unittest.makeSuite(TestNumpyIO)) - suite.addTests(unittest.makeSuite(TestSegmentPlane)) - suite.addTests(unittest.makeSuite(TestSegmentCylinder)) - suite.addTests(unittest.makeSuite(TestSave)) - suite.addTests(unittest.makeSuite(TestFilter)) - suite.addTests(unittest.makeSuite(TestExtract)) - suite.addTests(unittest.makeSuite(TestExceptions)) - suite.addTests(unittest.makeSuite(TestSegmenterNormal)) - suite.addTests(unittest.makeSuite(TestVoxelGridFilter)) - suite.addTests(unittest.makeSuite(TestPassthroughFilter)) - suite.addTests(unittest.makeSuite(TestKdTree)) - suite.addTests(unittest.makeSuite(TestOctreePointCloudSearch)) - return suite - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/test_XYZI.py b/tests/test_XYZI.py deleted file mode 100644 index 420da1b4b..000000000 --- a/tests/test_XYZI.py +++ /dev/null @@ -1,469 +0,0 @@ -import os.path -import pickle -import shutil -import tempfile -import unittest - -import pcl -import numpy as np - -from numpy.testing import assert_array_almost_equal, assert_array_equal - - -_data = [(i, 2 * i, 3 * i + 0.2, 7) for i in range(5)] -_DATA = """0.0, 0.0, 0.2, 7; - 1.0, 2.0, 3.2, 7; - 2.0, 4.0, 6.2, 7; - 3.0, 6.0, 9.2, 7; - 4.0, 8.0, 12.2, 7""" - -# io -class TestListIO(unittest.TestCase): - def setUp(self): - self.p = pcl.PointCloud_PointXYZI(_data) - - def testFromList(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToList(self): - l = self.p.to_list() - assert np.allclose(l, _data) - - -class TestNumpyIO(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(_DATA, dtype=np.float32)) - self.p = pcl.PointCloud_PointXYZI(self.a) - - def testFromNumpy(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToNumpy(self): - a = self.p.to_array() - self.assertTrue(np.alltrue(a == self.a)) - - def test_asarray(self): - p = pcl.PointCloud_PointXYZI(self.p) # copy - # old0 = p[0] - a = np.asarray(p) # view - a[:] += 6 - assert_array_almost_equal(p[0], a[0]) - - def test_pickle(self): - """Test pickle support.""" - # In this testcase because picking reduces to pickling NumPy arrays. - s = pickle.dumps(self.p) - p = pickle.loads(s) - self.assertTrue(np.all(self.a == p.to_array())) - -# copy the output of seg -SEGDATA = """ 0.352222 -0.151883 2 255; - -0.106395 -0.397406 1 255; - -0.473106 0.292602 1 255; - -0.731898 0.667105 -2 255; - 0.441304 -0.734766 1 255; - 0.854581 -0.0361733 1 255; - -0.4607 -0.277468 4 255; - -0.916762 0.183749 1 255; - 0.968809 0.512055 1 255; - -0.998983 -0.463871 1 255; - 0.691785 0.716053 1 255; - 0.525135 -0.523004 1 255; - 0.439387 0.56706 1 255; - 0.905417 -0.579787 1 255; - 0.898706 -0.504929 1 255""" - -SEGINLIERS = """-0.106395 -0.397406 1 255; - -0.473106 0.292602 1 255; - 0.441304 -0.734766 1 255; - 0.854581 -0.0361733 1 255; - -0.916762 0.183749 1 255; - 0.968809 0.512055 1 255; - -0.998983 -0.463871 1 255; - 0.691785 0.716053 1 255; - 0.525135 -0.523004 1 255; - 0.439387 0.56706 1 255; - 0.905417 -0.579787 1 255; - 0.898706 -0.504929 1 255""" -SEGINLIERSIDX = [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14] - -SEGCOEFF = [0.0, 0.0, 1.0, -1.0] - - -class TestSegmentPlane(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(SEGDATA, dtype=np.float32)) - self.p = pcl.PointCloud_PointXYZI() - self.p.from_array(self.a) - - def testLoad(self): - npts = self.a.shape[0] - self.assertEqual(npts, self.p.size) - self.assertEqual(npts, self.p.width) - self.assertEqual(1, self.p.height) - - def testSegmentPlaneObject(self): - seg = self.p.make_segmenter() - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_PLANE) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_distance_threshold(0.01) - - indices, model = seg.segment() - self.assertListEqual(indices, SEGINLIERSIDX) - self.assertListEqual(model, SEGCOEFF) - - -def test_pcd_read(): - TMPL = """# .PCD v.7 - Point Cloud Data file format -VERSION .7 -FIELDS x y z -SIZE 4 4 4 -TYPE F F F -COUNT 1 1 1 -WIDTH %(npts)d -HEIGHT 1 -VIEWPOINT 0.1 0 0.5 0 1 0 0 -POINTS %(npts)d -DATA ascii -%(data)s""" - - a = np.array(np.mat(SEGDATA, dtype=np.float32)) - npts = a.shape[0] - tmp_file = tempfile.mkstemp(suffix='.pcd')[1] - with open(tmp_file, "w") as f: - f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) - - p = pcl.load_XYZI(tmp_file) - - assert p.width == npts - assert p.height == 1 - - for i, row in enumerate(a): - pt = np.array(p[i]) - ssd = sum((row - pt) ** 2) - assert ssd < 1e-6 - - assert_array_equal(p.sensor_orientation, - np.array([0, 1, 0, 0], dtype=np.float32)) - assert_array_equal(p.sensor_origin, - np.array([.1, 0, .5, 0], dtype=np.float32)) - - -def test_copy(): - a = np.random.randn(100, 3).astype(np.float32) - p1 = pcl.PointCloud_PointXYZI(a) - p2 = pcl.PointCloud_PointXYZI(p1) - assert_array_equal(p2.to_array(), a) - - -SEGCYLMOD = [0.0552167, 0.0547035, 0.757707, - -0.0270852, -4.41026, -2.88995, 0.0387603] -# 1.6 -# SEGCYLIN = 11461 -# 1.7.2 -# SEGCYLIN = 11462 - -class TestSegmentCylinder(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZI("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testSegment(self): - seg = self.p.make_segmenter_normals(50) - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_CYLINDER) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_normal_distance_weight(0.1) - seg.set_max_iterations(10000) - seg.set_distance_threshold(0.05) - seg.set_radius_limits(0, 0.1) - - indices, model = seg.segment() - - # self.assertEqual(len(indices), SEGCYLIN) - - # npexp = np.array(SEGCYLMOD) - # npmod = np.array(model) - # ssd = sum((npexp - npmod) ** 2) - # self.assertLess(ssd, 1e-6) - - -class TestSave(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZI("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.tmpdir = tempfile.mkdtemp(suffix='pcl-test') - - def tearDown(self): - shutil.rmtree(self.tmpdir) - - def testSave(self): - for ext in ["pcd", "ply"]: - d = os.path.join(self.tmpdir, "foo." + ext) - pcl.save(self.p, d) - p = pcl.load_XYZI(d) - self.assertEqual(self.p.size, p.size) - - -class TestFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZI("tests" + os.path.sep + "flydracyl.pcd") - - def testFilter(self): - mls = self.p.make_moving_least_squares() - mls.set_search_radius(0.5) - mls.set_polynomial_order(2) - mls.set_polynomial_fit(True) - f = mls.process() - # new instance is returned - self.assertNotEqual(self.p, f) - # mls filter retains the same number of points - self.assertEqual(self.p.size, f.size) - - -class TestExtract(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZI("tests" + os.path.sep + "flydracyl.pcd") - - def testExtractPos(self): - p2 = self.p.extract([1, 2, 3], False) - # new instance is returned - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, 3) - - def testExtractNeg(self): - p2 = self.p.extract([1, 2, 3], True) - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, self.p.size - 3) - - -class TestExceptions(unittest.TestCase): - - def setUp(self): - self.p = pcl.PointCloud_PointXYZI(np.arange(12, dtype=np.float32).reshape(3, 4)) - - def testIndex(self): - self.assertRaises(IndexError, self.p.__getitem__, self.p.size) - self.assertRaises(Exception, self.p.get_point, self.p.size, 1) - - def testResize(self): - # XXX MemoryError isn't actually the prettiest exception for a - # negative argument. Don't hesitate to change this test to reflect - # better exceptions. - self.assertRaises(MemoryError, self.p.resize, -1) - - -class TestSegmenterNormal(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZI("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def _tpos(self, c): - self.assertEqual(c.size, 22745) - self.assertEqual(c.width, 22745) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def _tneg(self, c): - self.assertEqual(c.size, 1015) - self.assertEqual(c.width, 1015) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def testFilterPos(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - self.assertEqual(fil.mean_k, 50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.stddev_mul_thresh, 1.0) - c = fil.filter() - self._tpos(c) - - def testFilterNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.negative, False) - fil.set_negative(True) - self.assertEqual(fil.negative, True) - c = fil.filter() - self._tneg(c) - - def testFilterPosNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - c = fil.filter() - self._tpos(c) - fil.set_negative(True) - c = fil.filter() - self._tneg(c) - - -class TestVoxelGridFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZI("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_voxel_grid_filter() - fil.set_leaf_size(0.01, 0.01, 0.01) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 719) - - -class TestPassthroughFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 7751) - - def testFilterBoth(self): - total = self.p.size - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - front = fil.filter().size - fil.set_filter_limits(0.75, 100) - back = fil.filter().size - self.assertEqual(total, front + back) - - -class TestKdTree(unittest.TestCase): - - def setUp(self): - rng = np.random.RandomState(42) - # Define two dense sets of points of sizes 30 and 170, resp. - a = rng.randn(100, 4).astype(np.float32) - a[:30] -= 42 - - self.pc = pcl.PointCloud_PointXYZI(a) - self.kd = pcl.KdTreeFLANN_PointXYZI(self.pc) - - def testException(self): - self.assertRaises(TypeError, pcl.KdTreeFLANN_PointXYZI) - self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) - - def testKNN(self): - # Small cluster - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, 0, k=2) - for i in ind: - self.assertGreaterEqual(i, 0) - self.assertLess(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - # Big cluster - for ref, k in ((80, 1), (59, 3), (60, 10)): - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) - for i in ind: - self.assertGreaterEqual(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - -# class TestOctreePointCloud(unittest.TestCase): -# -# def setUp(self): -# self.t = pcl.OctreePointCloud_PointXYZI(0.1) -# -# def testLoad(self): -# pc = pcl.load_XYZI("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.t.set_input_cloud(pc) -# self.t.define_bounding_box() -# self.t.add_points_from_input_cloud() -# good_point = (0.035296999, -0.074322999, 1.2074, 0.0) -# rs = self.t.is_voxel_occupied_at_point(good_point) -# self.assertTrue(rs) -# bad_point = (0.5, 0.5, 0.5, 0.0) -# rs = self.t.is_voxel_occupied_at_point(bad_point) -# self.assertFalse(rs) -# voxels_len = 44 -# self.assertEqual(len(self.t.get_occupied_voxel_centers()), voxels_len) -# self.t.delete_voxel_at_point(good_point) -# self.assertEqual( -# len(self.t.get_occupied_voxel_centers()), voxels_len - 1) - - -class TestOctreePointCloudSearch(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloudSearch_PointXYZI(0.1) - pc = pcl.load_XYZI("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - - def testConstructor(self): - self.assertRaises(ValueError, pcl.OctreePointCloudSearch_PointXYZI, 0.) - - def testRadiusSearch(self): - good_point = (0.035296999, -0.074322999, 1.2074, 0.1) - rs = self.t.radius_search(good_point, 0.5, 1) - self.assertEqual(len(rs[0]), 1) - self.assertEqual(len(rs[1]), 1) - rs = self.t.radius_search(good_point, 0.5) - self.assertEqual(len(rs[0]), 19730) - self.assertEqual(len(rs[1]), 19730) - -# Add -# class TestCropHull(unittest.TestCase): -# -# def setUp(self): -# # TestData -# self.pc = pcl.PointCloud_PointXYZI(a) -# self.kd = pcl.CropHull(self.pc) -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# self.assertRaises(TypeError, self.) -# -# def testCrop(self): -# # Big cluster -# for ref, k in ((80, 1), (59, 3), (60, 10)): -# ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) -# for i in ind: -# self.assertGreaterEqual(i, 30) -# for d in sqdist: -# self.assertGreaterEqual(d, 0) -# - -# class TestCropBox(unittest.TestCase): -# -# def setUp(self): -# # TestData -# self.pc = pcl.PointCloud_PointXYZI(a) -# self.kd = pcl.CropBox(self.pc) -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) -# -# def testCrop(self): -# # Big cluster -# for ref, k in ((80, 1), (59, 3), (60, 10)): -# ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) -# for i in ind: -# self.assertGreaterEqual(i, 30) -# for d in sqdist: -# self.assertGreaterEqual(d, 0) -# - - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/test_XYZRGB.py b/tests/test_XYZRGB.py deleted file mode 100644 index 3f496739d..000000000 --- a/tests/test_XYZRGB.py +++ /dev/null @@ -1,425 +0,0 @@ -import os.path -import pickle -import shutil -import tempfile -import unittest - -import pcl -import numpy as np - -from numpy.testing import assert_array_almost_equal, assert_array_equal - - -_data = [(i, 2 * i, 3 * i + 0.2, 16777215) for i in range(5)] -_DATA = """0.0, 0.0, 0.2, 16777215; - 1.0, 2.0, 3.2, 16777215; - 2.0, 4.0, 6.2, 16777215; - 3.0, 6.0, 9.2, 16777215; - 4.0, 8.0, 12.2, 16777215""" - - -class TestListIO(unittest.TestCase): - def setUp(self): - self.p = pcl.PointCloud_PointXYZRGB(_data) - - def testFromList(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToList(self): - l = self.p.to_list() - assert np.allclose(l, _data) - - -class TestNumpyIO(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(_DATA, dtype=np.float32)) - self.p = pcl.PointCloud_PointXYZRGB(self.a) - - def testFromNumpy(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToNumpy(self): - a = self.p.to_array() - self.assertTrue(np.alltrue(a == self.a)) - - def test_asarray(self): - p = pcl.PointCloud_PointXYZRGB(self.p) # copy - # old0 = p[0] - a = np.asarray(p) # view - a[:] += 0 - assert_array_almost_equal(p[0], a[0]) - - def test_pickle(self): - """Test pickle support.""" - # In this testcase because picking reduces to pickling NumPy arrays. - s = pickle.dumps(self.p) - p = pickle.loads(s) - self.assertTrue(np.all(self.a == p.to_array())) - -# copy the output of seg -SEGDATA = """ 0.352222 -0.151883 2 16777215; - -0.106395 -0.397406 1 16777215; - -0.473106 0.292602 1 16777215; - -0.731898 0.667105 -2 16777215; - 0.441304 -0.734766 1 16777215; - 0.854581 -0.0361733 1 16777215; - -0.4607 -0.277468 4 16777215; - -0.916762 0.183749 1 16777215; - 0.968809 0.512055 1 16777215; - -0.998983 -0.463871 1 16777215; - 0.691785 0.716053 1 16777215; - 0.525135 -0.523004 1 16777215; - 0.439387 0.56706 1 16777215; - 0.905417 -0.579787 1 16777215; - 0.898706 -0.504929 1 16777215""" - -SEGINLIERS = """-0.106395 -0.397406 1 16777215; - -0.473106 0.292602 1 16777215; - 0.441304 -0.734766 1 16777215; - 0.854581 -0.0361733 1 16777215; - -0.916762 0.183749 1 16777215; - 0.968809 0.512055 1 16777215; - -0.998983 -0.463871 1 16777215; - 0.691785 0.716053 1 16777215; - 0.525135 -0.523004 1 16777215; - 0.439387 0.56706 1 16777215; - 0.905417 -0.579787 1 16777215; - 0.898706 -0.504929 1 16777215""" -SEGINLIERSIDX = [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14] - -SEGCOEFF = [0.0, 0.0, 1.0, -1.0] - - -class TestSegmentPlane(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(SEGDATA, dtype=np.float32)) - self.p = pcl.PointCloud_PointXYZRGB() - self.p.from_array(self.a) - - def testLoad(self): - npts = self.a.shape[0] - self.assertEqual(npts, self.p.size) - self.assertEqual(npts, self.p.width) - self.assertEqual(1, self.p.height) - - def testSegmentPlaneObject(self): - seg = self.p.make_segmenter() - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_PLANE) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_distance_threshold(0.01) - - indices, model = seg.segment() - self.assertListEqual(indices, SEGINLIERSIDX) - self.assertListEqual(model, SEGCOEFF) - - -def test_pcd_read(): - TMPL = """# .PCD v.7 - Point Cloud Data file format -VERSION .7 -FIELDS x y z -SIZE 4 4 4 -TYPE F F F -COUNT 1 1 1 -WIDTH %(npts)d -HEIGHT 1 -VIEWPOINT 0.1 0 0.5 0 1 0 0 -POINTS %(npts)d -DATA ascii -%(data)s""" - - a = np.array(np.mat(SEGDATA, dtype=np.float32)) - npts = a.shape[0] - tmp_file = tempfile.mkstemp(suffix='.pcd')[1] - with open(tmp_file, "w") as f: - f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) - - p = pcl.load_XYZRGB(tmp_file) - - assert p.width == npts - assert p.height == 1 - - for i, row in enumerate(a): - pt = np.array(p[i]) - ssd = sum((row - pt) ** 2) - assert ssd < 1e-6 - - assert_array_equal(p.sensor_orientation, - np.array([0, 1, 0, 0], dtype=np.float32)) - assert_array_equal(p.sensor_origin, - np.array([.1, 0, .5, 0], dtype=np.float32)) - - -def test_copy(): - a = np.random.randn(100, 4).astype(np.float32) - p1 = pcl.PointCloud_PointXYZRGB(a) - p2 = pcl.PointCloud_PointXYZRGB(p1) - assert_array_equal(p2.to_array(), a) - - -SEGCYLMOD = [0.0552167, 0.0547035, 0.757707, - -0.0270852, -4.41026, -2.88995, 0.0387603] -# 1.6 -# SEGCYLIN = 11461 -# 1.7.2 -# SEGCYLIN = 11462 - -class TestSegmentCylinder(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGB("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testSegment(self): - seg = self.p.make_segmenter_normals(50) - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_CYLINDER) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_normal_distance_weight(0.1) - seg.set_max_iterations(10000) - seg.set_distance_threshold(0.05) - seg.set_radius_limits(0, 0.1) - - indices, model = seg.segment() - - # self.assertEqual(len(indices), SEGCYLIN) - - # npexp = np.array(SEGCYLMOD) - # npmod = np.array(model) - # ssd = sum((npexp - npmod) ** 2) - # self.assertLess(ssd, 1e-6) - - -class TestSave(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGB("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.tmpdir = tempfile.mkdtemp(suffix='pcl-test') - - def tearDown(self): - shutil.rmtree(self.tmpdir) - - def testSave(self): - for ext in ["pcd", "ply"]: - d = os.path.join(self.tmpdir, "foo." + ext) - pcl.save(self.p, d) - p = pcl.load_XYZRGB(d) - self.assertEqual(self.p.size, p.size) - - -class TestFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGB("tests" + os.path.sep + "flydracyl.pcd") - - def testFilter(self): - mls = self.p.make_moving_least_squares() - mls.set_search_radius(0.5) - mls.set_polynomial_order(2) - mls.set_polynomial_fit(True) - f = mls.process() - # new instance is returned - self.assertNotEqual(self.p, f) - # mls filter retains the same number of points - self.assertEqual(self.p.size, f.size) - - -class TestExtract(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGB("tests" + os.path.sep + "flydracyl.pcd") - - def testExtractPos(self): - p2 = self.p.extract([1, 2, 3], False) - # new instance is returned - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, 3) - - def testExtractNeg(self): - p2 = self.p.extract([1, 2, 3], True) - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, self.p.size - 3) - - -class TestExceptions(unittest.TestCase): - - def setUp(self): - self.p = pcl.PointCloud_PointXYZRGB(np.arange(12, dtype=np.float32).reshape(3, 4)) - - def testIndex(self): - self.assertRaises(IndexError, self.p.__getitem__, self.p.size) - self.assertRaises(Exception, self.p.get_point, self.p.size, 1) - - def testResize(self): - # XXX MemoryError isn't actually the prettiest exception for a - # negative argument. Don't hesitate to change this test to reflect - # better exceptions. - self.assertRaises(MemoryError, self.p.resize, -1) - - -class TestSegmenterNormal(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGB("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def _tpos(self, c): - self.assertEqual(c.size, 22745) - self.assertEqual(c.width, 22745) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def _tneg(self, c): - self.assertEqual(c.size, 1015) - self.assertEqual(c.width, 1015) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def testFilterPos(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - self.assertEqual(fil.mean_k, 50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.stddev_mul_thresh, 1.0) - c = fil.filter() - self._tpos(c) - - def testFilterNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.negative, False) - fil.set_negative(True) - self.assertEqual(fil.negative, True) - c = fil.filter() - self._tneg(c) - - def testFilterPosNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - c = fil.filter() - self._tpos(c) - fil.set_negative(True) - c = fil.filter() - self._tneg(c) - - -class TestVoxelGridFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGB("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_voxel_grid_filter() - fil.set_leaf_size(0.01, 0.01, 0.01) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 719) - - -class TestPassthroughFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGB("tests/table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 7751) - - def testFilterBoth(self): - total = self.p.size - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - front = fil.filter().size - fil.set_filter_limits(0.75, 100) - back = fil.filter().size - self.assertEqual(total, front + back) - - -class TestKdTree(unittest.TestCase): - - def setUp(self): - rng = np.random.RandomState(42) - # Define two dense sets of points of sizes 30 and 170, resp. - a = rng.randn(100, 4).astype(np.float32) - a[:30] -= 42 - - self.pc = pcl.PointCloud_PointXYZRGB(a) - self.kd = pcl.KdTreeFLANN_PointXYZRGB(self.pc) - - def testException(self): - self.assertRaises(TypeError, pcl.KdTreeFLANN_PointXYZRGB) - self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) - - def testKNN(self): - # Small cluster - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, 0, k=2) - for i in ind: - self.assertGreaterEqual(i, 0) - self.assertLess(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - # Big cluster - for ref, k in ((80, 1), (59, 3), (60, 10)): - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) - for i in ind: - self.assertGreaterEqual(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - -# class TestOctreePointCloud(unittest.TestCase): -# -# def setUp(self): -# self.t = pcl.OctreePointCloud_PointXYZRGB(0.1) -# -# def testLoad(self): -# pc = pcl.load_XYZRGB("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.t.set_input_cloud(pc) -# self.t.define_bounding_box() -# self.t.add_points_from_input_cloud() -# good_point = (0.035296999, -0.074322999, 1.2074) -# rs = self.t.is_voxel_occupied_at_point(good_point) -# self.assertTrue(rs) -# bad_point = (0.5, 0.5, 0.5) -# rs = self.t.is_voxel_occupied_at_point(bad_point) -# self.assertFalse(rs) -# voxels_len = 44 -# self.assertEqual(len(self.t.get_occupied_voxel_centers()), voxels_len) -# self.t.delete_voxel_at_point(good_point) -# self.assertEqual( -# len(self.t.get_occupied_voxel_centers()), voxels_len - 1) - - -class TestOctreePointCloudSearch(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloudSearch_XYZRGB(0.1) - pc = pcl.load_XYZRGB("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - - def testConstructor(self): - self.assertRaises(ValueError, pcl.OctreePointCloudSearch_XYZRGB, 0.) - - def testRadiusSearch(self): - good_point = (0.035296999, -0.074322999, 1.2074) - rs = self.t.radius_search(good_point, 0.5, 1) - self.assertEqual(len(rs[0]), 1) - self.assertEqual(len(rs[1]), 1) - rs = self.t.radius_search(good_point, 0.5) - self.assertEqual(len(rs[0]), 19730) - self.assertEqual(len(rs[1]), 19730) - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/test_XYZRGBA.py b/tests/test_XYZRGBA.py deleted file mode 100644 index 39e41f867..000000000 --- a/tests/test_XYZRGBA.py +++ /dev/null @@ -1,425 +0,0 @@ -import os.path -import pickle -import shutil -import tempfile -import unittest - -import pcl -import numpy as np - -from numpy.testing import assert_array_almost_equal, assert_array_equal - - -_data = [(i, 2 * i, 3 * i + 0.2, 16777215) for i in range(5)] -_DATA = """0.0, 0.0, 0.2, 16777215; - 1.0, 2.0, 3.2, 16777215; - 2.0, 4.0, 6.2, 16777215; - 3.0, 6.0, 9.2, 16777215; - 4.0, 8.0, 12.2, 16777215""" - - -class TestListIO(unittest.TestCase): - def setUp(self): - self.p = pcl.PointCloud_PointXYZRGBA(_data) - - def testFromList(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToList(self): - l = self.p.to_list() - assert np.allclose(l, _data) - - -class TestNumpyIO(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(_DATA, dtype=np.float32)) - self.p = pcl.PointCloud_PointXYZRGBA(self.a) - - def testFromNumpy(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToNumpy(self): - a = self.p.to_array() - self.assertTrue(np.alltrue(a == self.a)) - - def test_asarray(self): - p = pcl.PointCloud_PointXYZRGBA(self.p) # copy - # old0 = p[0] - a = np.asarray(p) # view - a[:] += 6 - assert_array_almost_equal(p[0], a[0]) - - def test_pickle(self): - """Test pickle support.""" - # In this testcase because picking reduces to pickling NumPy arrays. - s = pickle.dumps(self.p) - p = pickle.loads(s) - self.assertTrue(np.all(self.a == p.to_array())) - -# copy the output of seg -SEGDATA = """ 0.352222 -0.151883 2 16777215; - -0.106395 -0.397406 1 16777215; - -0.473106 0.292602 1 16777215; - -0.731898 0.667105 -2 16777215; - 0.441304 -0.734766 1 16777215; - 0.854581 -0.0361733 1 16777215; - -0.4607 -0.277468 4 16777215; - -0.916762 0.183749 1 16777215; - 0.968809 0.512055 1 16777215; - -0.998983 -0.463871 1 16777215; - 0.691785 0.716053 1 16777215; - 0.525135 -0.523004 1 16777215; - 0.439387 0.56706 1 16777215; - 0.905417 -0.579787 1 16777215; - 0.898706 -0.504929 1 16777215""" - -SEGINLIERS = """-0.106395 -0.397406 1 16777215; - -0.473106 0.292602 1 16777215; - 0.441304 -0.734766 1 16777215; - 0.854581 -0.0361733 1 16777215; - -0.916762 0.183749 1 16777215; - 0.968809 0.512055 1 16777215; - -0.998983 -0.463871 1 16777215; - 0.691785 0.716053 1 16777215; - 0.525135 -0.523004 1 16777215; - 0.439387 0.56706 1 16777215; - 0.905417 -0.579787 1 16777215; - 0.898706 -0.504929 1 16777215""" -SEGINLIERSIDX = [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14] - -SEGCOEFF = [0.0, 0.0, 1.0, -1.0] - - -class TestSegmentPlane(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(SEGDATA, dtype=np.float32)) - self.p = pcl.PointCloud_PointXYZRGBA() - self.p.from_array(self.a) - - def testLoad(self): - npts = self.a.shape[0] - self.assertEqual(npts, self.p.size) - self.assertEqual(npts, self.p.width) - self.assertEqual(1, self.p.height) - - def testSegmentPlaneObject(self): - seg = self.p.make_segmenter() - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_PLANE) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_distance_threshold(0.01) - - indices, model = seg.segment() - self.assertListEqual(indices, SEGINLIERSIDX) - self.assertListEqual(model, SEGCOEFF) - - -def test_pcd_read(): - TMPL = """# .PCD v.7 - Point Cloud Data file format -VERSION .7 -FIELDS x y z -SIZE 4 4 4 -TYPE F F F -COUNT 1 1 1 -WIDTH %(npts)d -HEIGHT 1 -VIEWPOINT 0.1 0 0.5 0 1 0 0 -POINTS %(npts)d -DATA ascii -%(data)s""" - - a = np.array(np.mat(SEGDATA, dtype=np.float32)) - npts = a.shape[0] - tmp_file = tempfile.mkstemp(suffix='.pcd')[1] - with open(tmp_file, "w") as f: - f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) - - p = pcl.load_XYZRGBA(tmp_file) - - assert p.width == npts - assert p.height == 1 - - for i, row in enumerate(a): - pt = np.array(p[i]) - ssd = sum((row - pt) ** 2) - assert ssd < 1e-6 - - assert_array_equal(p.sensor_orientation, - np.array([0, 1, 0, 0], dtype=np.float32)) - assert_array_equal(p.sensor_origin, - np.array([.1, 0, .5, 0], dtype=np.float32)) - - -def test_copy(): - a = np.random.randn(100, 4).astype(np.float32) - p1 = pcl.PointCloud_PointXYZRGBA(a) - p2 = pcl.PointCloud_PointXYZRGBA(p1) - assert_array_equal(p2.to_array(), a) - - -SEGCYLMOD = [0.0552167, 0.0547035, 0.757707, - -0.0270852, -4.41026, -2.88995, 0.0387603] -# 1.6 -# SEGCYLIN = 11461 -# 1.7.2 -# SEGCYLIN = 11462 - -class TestSegmentCylinder(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGBA("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testSegment(self): - seg = self.p.make_segmenter_normals(50) - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_CYLINDER) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_normal_distance_weight(0.1) - seg.set_max_iterations(10000) - seg.set_distance_threshold(0.05) - seg.set_radius_limits(0, 0.1) - - indices, model = seg.segment() - - # self.assertEqual(len(indices), SEGCYLIN) - - # npexp = np.array(SEGCYLMOD) - # npmod = np.array(model) - # ssd = sum((npexp - npmod) ** 2) - # self.assertLess(ssd, 1e-6) - - -class TestSave(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGBA("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.tmpdir = tempfile.mkdtemp(suffix='pcl-test') - - def tearDown(self): - shutil.rmtree(self.tmpdir) - - def testSave(self): - for ext in ["pcd", "ply"]: - d = os.path.join(self.tmpdir, "foo." + ext) - pcl.save(self.p, d) - p = pcl.load_XYZRGBA(d) - self.assertEqual(self.p.size, p.size) - - -class TestFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGBA("tests" + os.path.sep + "flydracyl.pcd") - - def testFilter(self): - mls = self.p.make_moving_least_squares() - mls.set_search_radius(0.5) - mls.set_polynomial_order(2) - mls.set_polynomial_fit(True) - f = mls.process() - # new instance is returned - self.assertNotEqual(self.p, f) - # mls filter retains the same number of points - self.assertEqual(self.p.size, f.size) - - -class TestExtract(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGBA("tests" + os.path.sep + "flydracyl.pcd") - - def testExtractPos(self): - p2 = self.p.extract([1, 2, 3], False) - # new instance is returned - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, 3) - - def testExtractNeg(self): - p2 = self.p.extract([1, 2, 3], True) - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, self.p.size - 3) - - -class TestExceptions(unittest.TestCase): - - def setUp(self): - self.p = pcl.PointCloud_PointXYZRGBA(np.arange(12, dtype=np.float32).reshape(3, 4)) - - def testIndex(self): - self.assertRaises(IndexError, self.p.__getitem__, self.p.size) - self.assertRaises(Exception, self.p.get_point, self.p.size, 1) - - def testResize(self): - # XXX MemoryError isn't actually the prettiest exception for a - # negative argument. Don't hesitate to change this test to reflect - # better exceptions. - self.assertRaises(MemoryError, self.p.resize, -1) - - -class TestSegmenterNormal(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGBA("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def _tpos(self, c): - self.assertEqual(c.size, 22745) - self.assertEqual(c.width, 22745) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def _tneg(self, c): - self.assertEqual(c.size, 1015) - self.assertEqual(c.width, 1015) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def testFilterPos(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - self.assertEqual(fil.mean_k, 50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.stddev_mul_thresh, 1.0) - c = fil.filter() - self._tpos(c) - - def testFilterNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.negative, False) - fil.set_negative(True) - self.assertEqual(fil.negative, True) - c = fil.filter() - self._tneg(c) - - def testFilterPosNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - c = fil.filter() - self._tpos(c) - fil.set_negative(True) - c = fil.filter() - self._tneg(c) - - -class TestVoxelGridFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGBA("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_voxel_grid_filter() - fil.set_leaf_size(0.01, 0.01, 0.01) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 719) - - -class TestPassthroughFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load_XYZRGBA("tests/table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 7751) - - def testFilterBoth(self): - total = self.p.size - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - front = fil.filter().size - fil.set_filter_limits(0.75, 100) - back = fil.filter().size - self.assertEqual(total, front + back) - - -class TestKdTree(unittest.TestCase): - - def setUp(self): - rng = np.random.RandomState(42) - # Define two dense sets of points of sizes 30 and 170, resp. - a = rng.randn(100, 4).astype(np.float32) - a[:30] -= 42 - - self.pc = pcl.PointCloud_PointXYZRGBA(a) - self.kd = pcl.KdTreeFLANN_PointXYZRGBA(self.pc) - - def testException(self): - self.assertRaises(TypeError, pcl.KdTreeFLANN_PointXYZRGBA) - self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) - - def testKNN(self): - # Small cluster - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, 0, k=2) - for i in ind: - self.assertGreaterEqual(i, 0) - self.assertLess(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - # Big cluster - for ref, k in ((80, 1), (59, 3), (60, 10)): - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) - for i in ind: - self.assertGreaterEqual(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - -# class TestOctreePointCloud(unittest.TestCase): -# -# def setUp(self): -# self.t = pcl.OctreePointCloud_PointXYZRGBA(0.1) -# -# def testLoad(self): -# pc = pcl.load_XYZRGBA("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.t.set_input_cloud(pc) -# self.t.define_bounding_box() -# self.t.add_points_from_input_cloud() -# good_point = (0.035296999, -0.074322999, 1.2074) -# rs = self.t.is_voxel_occupied_at_point(good_point) -# self.assertTrue(rs) -# bad_point = (0.5, 0.5, 0.5) -# rs = self.t.is_voxel_occupied_at_point(bad_point) -# self.assertFalse(rs) -# voxels_len = 44 -# self.assertEqual(len(self.t.get_occupied_voxel_centers()), voxels_len) -# self.t.delete_voxel_at_point(good_point) -# self.assertEqual( -# len(self.t.get_occupied_voxel_centers()), voxels_len - 1) - - -class TestOctreePointCloudSearch(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloudSearch_PointXYZRGBA(0.1) - pc = pcl.load_XYZRGBA("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - - def testConstructor(self): - self.assertRaises(ValueError, pcl.OctreePointCloudSearch_PointXYZRGBA, 0.) - - def testRadiusSearch(self): - good_point = (0.035296999, -0.074322999, 1.2074) - rs = self.t.radius_search(good_point, 0.5, 1) - self.assertEqual(len(rs[0]), 1) - self.assertEqual(len(rs[1]), 1) - rs = self.t.radius_search(good_point, 0.5) - self.assertEqual(len(rs[0]), 19730) - self.assertEqual(len(rs[1]), 19730) - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/test_features.py b/tests/test_features.py new file mode 100644 index 000000000..01f2b00d6 --- /dev/null +++ b/tests/test_features.py @@ -0,0 +1,61 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + + +# features +### DifferenceOfNormalsEstimation ### +class TestDifferenceOfNormalsEstimation(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### IntegralImageNormalEstimation ### +class TestIntegralImageNormalEstimation(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### MomentOfInertiaEstimation ### +class TestMomentOfInertiaEstimation(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### NormalEstimation ### +class TestNormalEstimation(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### RangeImageBorderExtractor ### +class TestRangeImageBorderExtractor(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### VFHEstimation ### +class TestVFHEstimation(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +def suite(): + suite = unittest.TestSuite() + # features + suite.addTests(unittest.makeSuite(DifferenceOfNormalsEstimation)) + suite.addTests(unittest.makeSuite(IntegralImageNormalEstimation)) + suite.addTests(unittest.makeSuite(MomentOfInertiaEstimation)) + suite.addTests(unittest.makeSuite(NormalEstimation)) + suite.addTests(unittest.makeSuite(RangeImageBorderExtractor)) + suite.addTests(unittest.makeSuite(VFHEstimation)) + return suite + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/test_pcl.py b/tests/test_filters.py similarity index 61% rename from tests/test_pcl.py rename to tests/test_filters.py index c6e6d5447..733bf4361 100644 --- a/tests/test_pcl.py +++ b/tests/test_filters.py @@ -7,28 +7,6 @@ import pcl import numpy as np -from numpy.testing import assert_array_almost_equal, assert_array_equal - -# common -### - -# features -### - -# filters -### - -# geometry -# grabber_sequences -# kdtree -# keypoints -# octree -# outofcore -# registration -# sample_consensus -# search -# surface - _data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] _DATA = """0.0, 0.0, 0.2; 1.0, 2.0, 3.2; @@ -36,508 +14,14 @@ 3.0, 6.0, 9.2; 4.0, 8.0, 12.2""" -# io -class TestListIO(unittest.TestCase): - def setUp(self): - self.p = pcl.PointCloud(_data) - - def testFromList(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToList(self): - l = self.p.to_list() - assert np.allclose(l, _data) - - -class TestNumpyIO(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(_DATA, dtype=np.float32)) - self.p = pcl.PointCloud(self.a) - - def testFromNumpy(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToNumpy(self): - a = self.p.to_array() - self.assertTrue(np.alltrue(a == self.a)) - - def test_asarray(self): - p = pcl.PointCloud(self.p) # copy - # old0 = p[0] - a = np.asarray(p) # view - a[:] += 6 - assert_array_almost_equal(p[0], a[0]) - - # Regression test: deleting a second view would previously - # reset the view count to zero. - b = np.asarray(p) - del b - - self.assertRaises(ValueError, p.resize, 2 * p.size) - - def test_pickle(self): - """Test pickle support.""" - # In this testcase because picking reduces to pickling NumPy arrays. - s = pickle.dumps(self.p) - p = pickle.loads(s) - self.assertTrue(np.all(self.a == p.to_array())) - -# copy the output of seg -SEGDATA = """ 0.352222 -0.151883 2; - -0.106395 -0.397406 1; - -0.473106 0.292602 1; - -0.731898 0.667105 -2; - 0.441304 -0.734766 1; - 0.854581 -0.0361733 1; - -0.4607 -0.277468 4; - -0.916762 0.183749 1; - 0.968809 0.512055 1; - -0.998983 -0.463871 1; - 0.691785 0.716053 1; - 0.525135 -0.523004 1; - 0.439387 0.56706 1; - 0.905417 -0.579787 1; - 0.898706 -0.504929 1""" - -SEGINLIERS = """-0.106395 -0.397406 1; - -0.473106 0.292602 1; - 0.441304 -0.734766 1; - 0.854581 -0.0361733 1; - -0.916762 0.183749 1; - 0.968809 0.512055 1; - -0.998983 -0.463871 1; - 0.691785 0.716053 1; - 0.525135 -0.523004 1; - 0.439387 0.56706 1; - 0.905417 -0.579787 1; - 0.898706 -0.504929 1""" -SEGINLIERSIDX = [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14] - -SEGCOEFF = [0.0, 0.0, 1.0, -1.0] - - -class TestSegmentPlane(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(SEGDATA, dtype=np.float32)) - self.p = pcl.PointCloud() - self.p.from_array(self.a) - - def testLoad(self): - npts = self.a.shape[0] - self.assertEqual(npts, self.p.size) - self.assertEqual(npts, self.p.width) - self.assertEqual(1, self.p.height) - - def testSegmentPlaneObject(self): - seg = self.p.make_segmenter() - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_PLANE) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_distance_threshold(0.01) - - indices, model = seg.segment() - self.assertListEqual(indices, SEGINLIERSIDX) - self.assertListEqual(model, SEGCOEFF) - - -def test_pcd_read(): - TMPL = """# .PCD v.7 - Point Cloud Data file format -VERSION .7 -FIELDS x y z -SIZE 4 4 4 -TYPE F F F -COUNT 1 1 1 -WIDTH %(npts)d -HEIGHT 1 -VIEWPOINT 0.1 0 0.5 0 1 0 0 -POINTS %(npts)d -DATA ascii -%(data)s""" - - a = np.array(np.mat(SEGDATA, dtype=np.float32)) - npts = a.shape[0] - tmp_file = tempfile.mkstemp(suffix='.pcd')[1] - with open(tmp_file, "w") as f: - f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) - - p = pcl.load(tmp_file) - - assert p.width == npts - assert p.height == 1 - - for i, row in enumerate(a): - pt = np.array(p[i]) - ssd = sum((row - pt) ** 2) - assert ssd < 1e-6 - - assert_array_equal(p.sensor_orientation, - np.array([0, 1, 0, 0], dtype=np.float32)) - assert_array_equal(p.sensor_origin, - np.array([.1, 0, .5, 0], dtype=np.float32)) - - -def test_copy(): - a = np.random.randn(100, 3).astype(np.float32) - p1 = pcl.PointCloud(a) - p2 = pcl.PointCloud(p1) - assert_array_equal(p2.to_array(), a) - - -SEGCYLMOD = [0.0552167, 0.0547035, 0.757707, - -0.0270852, -4.41026, -2.88995, 0.0387603] -# 1.6 - (Only Mac), other -SEGCYLIN = 11461 -# 1.7.2 - (Only Mac) -# SEGCYLIN = 11462 -# 1.8 - (Only Mac) -# SEGCYLIN = 11450 - -class TestSegmentCylinder(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testSegment(self): - seg = self.p.make_segmenter_normals(50) - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_CYLINDER) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_normal_distance_weight(0.1) - seg.set_max_iterations(10000) - seg.set_distance_threshold(0.05) - seg.set_radius_limits(0, 0.1) - - indices, model = seg.segment() - - # MAC NG - # self.assertEqual(len(indices), SEGCYLIN) - - # npexp = np.array(SEGCYLMOD) - # npmod = np.array(model) - # ssd = sum((npexp - npmod) ** 2) - # self.assertLess(ssd, 1e-6) - - -class TestSave(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.tmpdir = tempfile.mkdtemp(suffix='pcl-test') - - def tearDown(self): - shutil.rmtree(self.tmpdir) - - def testSave(self): - for ext in ["pcd", "ply"]: - d = os.path.join(self.tmpdir, "foo." + ext) - pcl.save(self.p, d) - p = pcl.load(d) - self.assertEqual(self.p.size, p.size) - - -class TestFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") - - def testFilter(self): - mls = self.p.make_moving_least_squares() - mls.set_search_radius(0.5) - mls.set_polynomial_order(2) - mls.set_polynomial_fit(True) - f = mls.process() - # new instance is returned - self.assertNotEqual(self.p, f) - # mls filter retains the same number of points - self.assertEqual(self.p.size, f.size) - - -class TestExtract(unittest.TestCase): - +# Filter +### ApproximateVoxelGrid ### +class TestApproximateVoxelGrid(unittest.TestCase): def setUp(self): self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") - def testExtractPos(self): - p2 = self.p.extract([1, 2, 3], False) - # new instance is returned - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, 3) - - def testExtractNeg(self): - p2 = self.p.extract([1, 2, 3], True) - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, self.p.size - 3) - - -class TestExceptions(unittest.TestCase): - - def setUp(self): - self.p = pcl.PointCloud(np.arange(9, dtype=np.float32).reshape(3, 3)) - - def testIndex(self): - self.assertRaises(IndexError, self.p.__getitem__, self.p.size) - self.assertRaises(Exception, self.p.get_point, self.p.size, 1) - - def testResize(self): - # XXX MemoryError isn't actually the prettiest exception for a - # negative argument. Don't hesitate to change this test to reflect - # better exceptions. - self.assertRaises(MemoryError, self.p.resize, -1) - - -class TestSegmenterNormal(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def _tpos(self, c): - self.assertEqual(c.size, 22745) - self.assertEqual(c.width, 22745) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def _tneg(self, c): - self.assertEqual(c.size, 1015) - self.assertEqual(c.width, 1015) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def testFilterPos(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - self.assertEqual(fil.mean_k, 50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.stddev_mul_thresh, 1.0) - c = fil.filter() - self._tpos(c) - - def testFilterNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.negative, False) - fil.set_negative(True) - self.assertEqual(fil.negative, True) - c = fil.filter() - self._tneg(c) - - def testFilterPosNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - c = fil.filter() - self._tpos(c) - fil.set_negative(True) - c = fil.filter() - self._tneg(c) - - -class TestVoxelGridFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_voxel_grid_filter() - fil.set_leaf_size(0.01, 0.01, 0.01) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 719) - - -class TestPassthroughFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 7751) - - def testFilterBoth(self): - total = self.p.size - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - front = fil.filter().size - fil.set_filter_limits(0.75, 100) - back = fil.filter().size - self.assertEqual(total, front + back) - - -class TestKdTree(unittest.TestCase): - def setUp(self): - rng = np.random.RandomState(42) - # Define two dense sets of points of sizes 30 and 170, resp. - a = rng.randn(100, 3).astype(np.float32) - a[:30] -= 42 - - self.pc = pcl.PointCloud(a) - self.kd = pcl.KdTreeFLANN(self.pc) - - def testException(self): - self.assertRaises(TypeError, pcl.KdTreeFLANN) - self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) - - def testKNN(self): - # Small cluster - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, 0, k=2) - for i in ind: - self.assertGreaterEqual(i, 0) - self.assertLess(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - # Big cluster - for ref, k in ((80, 1), (59, 3), (60, 10)): - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) - for i in ind: - self.assertGreaterEqual(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - -# class TestOctreePointCloud(unittest.TestCase): -# -# def setUp(self): -# self.t = pcl.OctreePointCloud(0.1) -# -# def testLoad(self): -# pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.t.set_input_cloud(pc) -# self.t.define_bounding_box() -# self.t.add_points_from_input_cloud() -# good_point = (0.035296999, -0.074322999, 1.2074) -# rs = self.t.is_voxel_occupied_at_point(good_point) -# self.assertTrue(rs) -# bad_point = (0.5, 0.5, 0.5) -# rs = self.t.is_voxel_occupied_at_point(bad_point) -# self.assertFalse(rs) -# voxels_len = 44 -# self.assertEqual(len(self.t.get_occupied_voxel_centers()), voxels_len) -# self.t.delete_voxel_at_point(good_point) -# self.assertEqual( -# len(self.t.get_occupied_voxel_centers()), voxels_len - 1) - - -class TestOctreePointCloudSearch(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloudSearch(0.1) - pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - - def testConstructor(self): - self.assertRaises(ValueError, pcl.OctreePointCloudSearch, 0.) - - def testRadiusSearch(self): - good_point = (0.035296999, -0.074322999, 1.2074) - rs = self.t.radius_search(good_point, 0.5, 1) - self.assertEqual(len(rs[0]), 1) - self.assertEqual(len(rs[1]), 1) - rs = self.t.radius_search(good_point, 0.5) - self.assertEqual(len(rs[0]), 19730) - self.assertEqual(len(rs[1]), 19730) - -# class TestOctreePointCloudChangeDetector(unittest.TestCase): -# -# def setUp(self): -# self.t = pcl.OctreePointCloudSearch(0.1) -# pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.t.set_input_cloud(pc) -# self.t.define_bounding_box() -# self.t.add_points_from_input_cloud() -# -# def testConstructor(self): -# self.assertRaises(ValueError, pcl.OctreePointCloudChangeDetector, 0.) -# -# def testRadiusSearch(self): -# good_point = (0.035296999, -0.074322999, 1.2074) -# rs = self.t.radius_search(good_point, 0.5, 1) -# self.assertEqual(len(rs[0]), 1) -# self.assertEqual(len(rs[1]), 1) -# rs = self.t.radius_search(good_point, 0.5) -# self.assertEqual(len(rs[0]), 19730) -# self.assertEqual(len(rs[1]), 19730) - -# class TestCropHull(unittest.TestCase): -# -# def setUp(self): -# self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# -# def testCropHull(self): -# filterCloud = pcl.PointCloud() -# vt = pcl.Vertices() -# # // inside point -# # cloud->push_back(pcl::PointXYZ(M_PI * 0.3, M_PI * 0.3, 0)) -# # // hull points -# # cloud->push_back(pcl::PointXYZ(0,0,0)) -# # cloud->push_back(pcl::PointXYZ(M_PI,0,0)) -# # cloud->push_back(pcl::PointXYZ(M_PI,M_PI*0.5,0)) -# # cloud->push_back(pcl::PointXYZ(0,M_PI*0.5,0)) -# # cloud->push_back(pcl::PointXYZ(0,0,0)) -# # // outside point -# # cloud->push_back(pcl::PointXYZ(-M_PI * 0.3, -M_PI * 0.3, 0)) -# points_2 = np.array([ -# [1 * 0.3, 1 * 0.3, 0], -# [0, 0, 0], -# [1, 0, 0], -# [1, 1 * 0.5, 0], -# [0, 1 * 0.5, 0], -# [0, 0, 0], -# # [-1 * 0.3 , -1 * 0.3, 0] -# ], dtype=np.float32) -# filterCloud.from_array(points_2) -# # print(filterCloud) -# -# vertices_point_1 = np.array([1, 2, 3, 4, 5], dtype=np.int) -# vt.from_array(vertices_point_1) -# # print(vt) -# # vt.vertices.push_back(1) -# # vt.vertices.push_back(2) -# # vt.vertices.push_back(3) -# # vt.vertices.push_back(4) -# # vt.vertices.push_back(5) -# # vertices = vector[pcl.Vertices] -# # vertices.push_back(vt) -# -# outputCloud = pcl.PointCloud() -# # crophull = pcl.CropHull() -# # crophull.setInputCloud(self.pc) -# crophull = self.pc.make_crophull() -# # crophull.setHullIndices(vertices) -# # crophull.setHullIndices(vt) -# # crophull.setHullCloud(filterCloud) -# # crophull.setDim(2) -# # crophull.setCropOutside(false) -# crophull.SetParameter(filterCloud, vt) -# # indices = vector[int] -# # cropHull.filter(indices) -# # outputCloud = cropHull.filter() -# # print("before: " + outputCloud) -# crophull.filter(outputCloud) -# # print(outputCloud) - - -# Write Point -# pcl::PCDWriter writer; -# std::stringstream ss; -# ss << "min_cut_seg" << ".pcd"; -# // writer.write (ss.str (), *cloud, false) -# pcl::io::savePCDFile(ss.str(), *outputCloud, false) +### ConditionalRemoval ### +### ConditionAnd ### # base : pcl/tests cpp source code[TEST (CropBox, Filters)] class TestCropBox(unittest.TestCase): @@ -864,12 +348,188 @@ def testCrop(self): # cropBoxFilter2.filter (cloud_out2) -### +# class TestCropHull(unittest.TestCase): +# +# def setUp(self): +# self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") +# +# def testException(self): +# self.assertRaises(TypeError, pcl.CropHull) +# +# def testCropHull(self): +# filterCloud = pcl.PointCloud() +# vt = pcl.Vertices() +# # // inside point +# # cloud->push_back(pcl::PointXYZ(M_PI * 0.3, M_PI * 0.3, 0)) +# # // hull points +# # cloud->push_back(pcl::PointXYZ(0,0,0)) +# # cloud->push_back(pcl::PointXYZ(M_PI,0,0)) +# # cloud->push_back(pcl::PointXYZ(M_PI,M_PI*0.5,0)) +# # cloud->push_back(pcl::PointXYZ(0,M_PI*0.5,0)) +# # cloud->push_back(pcl::PointXYZ(0,0,0)) +# # // outside point +# # cloud->push_back(pcl::PointXYZ(-M_PI * 0.3, -M_PI * 0.3, 0)) +# points_2 = np.array([ +# [1 * 0.3, 1 * 0.3, 0], +# [0, 0, 0], +# [1, 0, 0], +# [1, 1 * 0.5, 0], +# [0, 1 * 0.5, 0], +# [0, 0, 0], +# # [-1 * 0.3 , -1 * 0.3, 0] +# ], dtype=np.float32) +# filterCloud.from_array(points_2) +# # print(filterCloud) +# +# vertices_point_1 = np.array([1, 2, 3, 4, 5], dtype=np.int) +# vt.from_array(vertices_point_1) +# # print(vt) +# # vt.vertices.push_back(1) +# # vt.vertices.push_back(2) +# # vt.vertices.push_back(3) +# # vt.vertices.push_back(4) +# # vt.vertices.push_back(5) +# # vertices = vector[pcl.Vertices] +# # vertices.push_back(vt) +# +# outputCloud = pcl.PointCloud() +# # crophull = pcl.CropHull() +# # crophull.setInputCloud(self.pc) +# crophull = self.pc.make_crophull() +# # crophull.setHullIndices(vertices) +# # crophull.setHullIndices(vt) +# # crophull.setHullCloud(filterCloud) +# # crophull.setDim(2) +# # crophull.setCropOutside(false) +# crophull.SetParameter(filterCloud, vt) +# # indices = vector[int] +# # cropHull.filter(indices) +# # outputCloud = cropHull.filter() +# # print("before: " + outputCloud) +# crophull.filter(outputCloud) +# # print(outputCloud) +### FieldComparison ### +class TestFieldComparison(unittest.TestCase): + + def setUp(self): + self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") + +### PassThroughFilter ### +class TestPassthroughFilter(unittest.TestCase): + + def setUp(self): + self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") + + def testFilter(self): + fil = self.p.make_passthrough_filter() + fil.set_filter_field_name("z") + fil.set_filter_limits(0, 0.75) + c = fil.filter() + self.assertTrue(c.size < self.p.size) + self.assertEqual(c.size, 7751) + + def testFilterBoth(self): + total = self.p.size + fil = self.p.make_passthrough_filter() + fil.set_filter_field_name("z") + fil.set_filter_limits(0, 0.75) + front = fil.filter().size + fil.set_filter_limits(0.75, 100) + back = fil.filter().size + self.assertEqual(total, front + back) + + +### ProjectInliers ### +### RadiusOutlierRemoval ### +### StatisticalOutlierRemovalFilter ### +class TestSegmenterNormal(unittest.TestCase): + + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + + def _tpos(self, c): + self.assertEqual(c.size, 22745) + self.assertEqual(c.width, 22745) + self.assertEqual(c.height, 1) + self.assertTrue(c.is_dense) + + def _tneg(self, c): + self.assertEqual(c.size, 1015) + self.assertEqual(c.width, 1015) + self.assertEqual(c.height, 1) + self.assertTrue(c.is_dense) + + def testFilterPos(self): + fil = self.p.make_statistical_outlier_filter() + fil.set_mean_k(50) + self.assertEqual(fil.mean_k, 50) + fil.set_std_dev_mul_thresh(1.0) + self.assertEqual(fil.stddev_mul_thresh, 1.0) + c = fil.filter() + self._tpos(c) + + def testFilterNeg(self): + fil = self.p.make_statistical_outlier_filter() + fil.set_mean_k(50) + fil.set_std_dev_mul_thresh(1.0) + self.assertEqual(fil.negative, False) + fil.set_negative(True) + self.assertEqual(fil.negative, True) + c = fil.filter() + self._tneg(c) + + def testFilterPosNeg(self): + fil = self.p.make_statistical_outlier_filter() + fil.set_mean_k(50) + fil.set_std_dev_mul_thresh(1.0) + c = fil.filter() + self._tpos(c) + fil.set_negative(True) + c = fil.filter() + self._tneg(c) + +# Surface? +# class TestFilter(unittest.TestCase): +# +# def setUp(self): +# self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") +# +# def testFilter(self): +# mls = self.p.make_moving_least_squares() +# mls.set_search_radius(0.5) +# mls.set_polynomial_order(2) +# mls.set_polynomial_fit(True) +# f = mls.process() +# # new instance is returned +# self.assertNotEqual(self.p, f) +# # mls filter retains the same number of points +# self.assertEqual(self.p.size, f.size) + +### VoxelGridFilter ### +class TestVoxelGridFilter(unittest.TestCase): + + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + + def testFilter(self): + fil = self.p.make_voxel_grid_filter() + fil.set_leaf_size(0.01, 0.01, 0.01) + c = fil.filter() + self.assertTrue(c.size < self.p.size) + self.assertEqual(c.size, 719) + + +# Write Point +# pcl::PCDWriter writer; +# std::stringstream ss; +# ss << "min_cut_seg" << ".pcd"; +# // writer.write (ss.str (), *cloud, false) +# pcl::io::savePCDFile(ss.str(), *outputCloud, false) + # Add ProjectInlier # class TestProjectInlier(unittest.TestCase): -# # def setUp(self): # # TestData # self.pc = pcl.PointCloud(a) @@ -890,29 +550,96 @@ def testCrop(self): # ## -# Add RadiusOutlierRemoval -### +### Official Test Base ### +p_65558 = (-0.058448f, -0.189095f, 0.723415f), +p_84737 = (-0.088929f, -0.152957f, 0.746095f), +p_57966 = (0.123646f, -0.397528f, 1.393187f), +p_39543 = (0.560287f, -0.545020f, 1.602833f), +p_17766 = (0.557854f, -0.711976f, 1.762013f), +p_70202 = (0.150500f, -0.160329f, 0.646596f), +p_102219 = (0.175637f, -0.101353f, 0.661631f), +p_81765 = (0.223189f, -0.151714f, 0.708332f); + +# class TESTFastBilateralFilter(unittest.TestCase): +# def setUp(self): +# self.p = pcl.load("tests" + os.path.sep + "milk_cartoon_all_small_clorox.pcd") +# +# def testFastBilateralFilter(self): +# fbf = pcl.FastBilateralFilter() +# fbf.setInputCloud(cloud) +# fbf.setSigmaS (5) +# fbf.setSigmaR (0.03f) +# cloud_filtered = fbf.filter() +# # for (size_t dim = 0; dim < 3; ++dim): +# for dim range(0:3): +# EXPECT_NEAR (p_84737[dim], cloud_filtered[84737][dim], 1e-3) +# EXPECT_NEAR (p_57966[dim], cloud_filtered[57966][dim], 1e-3) +# EXPECT_NEAR (p_39543[dim], cloud_filtered[39543][dim], 1e-3) +# EXPECT_NEAR (p_17766[dim], cloud_filtered[17766][dim], 1e-3) +# EXPECT_NEAR (p_70202[dim], cloud_filtered[70202][dim], 1e-3) +# EXPECT_NEAR (p_102219[dim], cloud_filtered[102219][dim], 1e-3) +# EXPECT_NEAR (p_81765[dim], cloud_filtered[81765][dim], 1e-3) +# pass + + +# class TESTFastBilateralFilterOMP(unittest.TestCase): +# +# def setUp(self): +# self.p = pcl.load("tests" + os.path.sep + "milk_cartoon_all_small_clorox.pcd") +# +# sigma_s = [2.341f, 5.2342f, 10.29380f] +# sigma_r = [0.0123f, 0.023f, 0.0345f] +# for (size_t i = 0; i < 3; i++) +# FastBilateralFilter fbf; +# fbf.setInputCloud (cloud); +# fbf.setSigmaS (sigma_s[i]); +# fbf.setSigmaR (sigma_r[i]); +# PointCloud::Ptr cloud_filtered (new PointCloud ()); +# fbf.filter (*cloud_filtered); +# +# FastBilateralFilterOMP fbf_omp (0); +# fbf_omp.setInputCloud (cloud); +# fbf_omp.setSigmaS (sigma_s[i]); +# fbf_omp.setSigmaR (sigma_r[i]); +# PointCloud::Ptr cloud_filtered_omp (new PointCloud ()); +# fbf_omp.filter (*cloud_filtered_omp); +# PCL_INFO ("[FastBilateralFilterOMP] filtering took %f ms\n", tt.toc ()); +# +# +# EXPECT_EQ (cloud_filtered_omp->points.size (), cloud_filtered->points.size ()); +# for (size_t j = 0; j < cloud_filtered_omp->size (); ++j) +# { +# if (pcl_isnan (cloud_filtered_omp->at (j).x)) +# EXPECT_TRUE (pcl_isnan (cloud_filtered->at (j).x)); +# else +# { +# EXPECT_NEAR (cloud_filtered_omp->at (j).x, cloud_filtered->at (j).x, 1e-3); +# EXPECT_NEAR (cloud_filtered_omp->at (j).y, cloud_filtered->at (j).y, 1e-3); +# EXPECT_NEAR (cloud_filtered_omp->at (j).z, cloud_filtered->at (j).z, 1e-3); +# } +# } -# Add ConditionAnd -### def suite(): suite = unittest.TestSuite() - # io - suite.addTests(unittest.makeSuite(TestListIO)) - suite.addTests(unittest.makeSuite(TestNumpyIO)) - suite.addTests(unittest.makeSuite(TestSave)) - # - suite.addTests(unittest.makeSuite(TestSegmentPlane)) - suite.addTests(unittest.makeSuite(TestSegmentCylinder)) - suite.addTests(unittest.makeSuite(TestFilter)) - suite.addTests(unittest.makeSuite(TestExtract)) - suite.addTests(unittest.makeSuite(TestExceptions)) + + # Filter + suite.addTests(unittest.makeSuite(TestApproximateVoxelGrid)) + suite.addTests(unittest.makeSuite(TestConditionalRemoval)) + suite.addTests(unittest.makeSuite(TestConditionAnd)) + suite.addTests(unittest.makeSuite(TestCropBox)) + suite.addTests(unittest.makeSuite(TestCropHull)) + suite.addTests(unittest.makeSuite(TestFieldComparison)) + suite.addTests(unittest.makeSuite(TestPassthroughFilter)) + suite.addTests(unittest.makeSuite(TestProjectInliers)) + suite.addTests(unittest.makeSuite(TestRadiusOutlierRemoval)) suite.addTests(unittest.makeSuite(TestSegmenterNormal)) + # suite.addTests(unittest.makeSuite(TestStatisticalOutlierRemovalFilter)) suite.addTests(unittest.makeSuite(TestVoxelGridFilter)) - suite.addTests(unittest.makeSuite(TestPassthroughFilter)) - suite.addTests(unittest.makeSuite(TestKdTree)) - suite.addTests(unittest.makeSuite(TestOctreePointCloudSearch)) + + # PointCloudLibrary Official Base Test? + # suite.addTests(unittest.makeSuite(TestFastBilateralFilter)) + return suite if __name__ == '__main__': diff --git a/tests/test_io.py b/tests/test_io.py new file mode 100644 index 000000000..5bd6553f6 --- /dev/null +++ b/tests/test_io.py @@ -0,0 +1,232 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + +from numpy.testing import assert_array_almost_equal, assert_array_equal + +_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] +_DATA = """0.0, 0.0, 0.2; + 1.0, 2.0, 3.2; + 2.0, 4.0, 6.2; + 3.0, 6.0, 9.2; + 4.0, 8.0, 12.2""" + +# io +class TestListIO(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + def testFromList(self): + for i, d in enumerate(_data): + pt = self.p[i] + assert np.allclose(pt, _data[i]) + + def testToList(self): + l = self.p.to_list() + assert np.allclose(l, _data) + + +class TestNumpyIO(unittest.TestCase): + def setUp(self): + self.a = np.array(np.mat(_DATA, dtype=np.float32)) + self.p = pcl.PointCloud(self.a) + + def testFromNumpy(self): + for i, d in enumerate(_data): + pt = self.p[i] + assert np.allclose(pt, _data[i]) + + def testToNumpy(self): + a = self.p.to_array() + self.assertTrue(np.alltrue(a == self.a)) + + def test_asarray(self): + p = pcl.PointCloud(self.p) # copy + # old0 = p[0] + a = np.asarray(p) # view + a[:] += 6 + assert_array_almost_equal(p[0], a[0]) + + # Regression test: deleting a second view would previously + # reset the view count to zero. + b = np.asarray(p) + del b + + self.assertRaises(ValueError, p.resize, 2 * p.size) + + def test_pickle(self): + """Test pickle support.""" + # In this testcase because picking reduces to pickling NumPy arrays. + s = pickle.dumps(self.p) + p = pickle.loads(s) + self.assertTrue(np.all(self.a == p.to_array())) + +# copy the output of seg +SEGDATA = """ 0.352222 -0.151883 2; + -0.106395 -0.397406 1; + -0.473106 0.292602 1; + -0.731898 0.667105 -2; + 0.441304 -0.734766 1; + 0.854581 -0.0361733 1; + -0.4607 -0.277468 4; + -0.916762 0.183749 1; + 0.968809 0.512055 1; + -0.998983 -0.463871 1; + 0.691785 0.716053 1; + 0.525135 -0.523004 1; + 0.439387 0.56706 1; + 0.905417 -0.579787 1; + 0.898706 -0.504929 1""" + +SEGINLIERS = """-0.106395 -0.397406 1; + -0.473106 0.292602 1; + 0.441304 -0.734766 1; + 0.854581 -0.0361733 1; + -0.916762 0.183749 1; + 0.968809 0.512055 1; + -0.998983 -0.463871 1; + 0.691785 0.716053 1; + 0.525135 -0.523004 1; + 0.439387 0.56706 1; + 0.905417 -0.579787 1; + 0.898706 -0.504929 1""" +SEGINLIERSIDX = [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14] + +SEGCOEFF = [0.0, 0.0, 1.0, -1.0] + + +class TestSegmentPlane(unittest.TestCase): + def setUp(self): + self.a = np.array(np.mat(SEGDATA, dtype=np.float32)) + self.p = pcl.PointCloud() + self.p.from_array(self.a) + + def testLoad(self): + npts = self.a.shape[0] + self.assertEqual(npts, self.p.size) + self.assertEqual(npts, self.p.width) + self.assertEqual(1, self.p.height) + + def testSegmentPlaneObject(self): + seg = self.p.make_segmenter() + seg.set_optimize_coefficients(True) + seg.set_model_type(pcl.SACMODEL_PLANE) + seg.set_method_type(pcl.SAC_RANSAC) + seg.set_distance_threshold(0.01) + + indices, model = seg.segment() + self.assertListEqual(indices, SEGINLIERSIDX) + self.assertListEqual(model, SEGCOEFF) + + +def test_pcd_read(): + TMPL = """# .PCD v.7 - Point Cloud Data file format +VERSION .7 +FIELDS x y z +SIZE 4 4 4 +TYPE F F F +COUNT 1 1 1 +WIDTH %(npts)d +HEIGHT 1 +VIEWPOINT 0.1 0 0.5 0 1 0 0 +POINTS %(npts)d +DATA ascii +%(data)s""" + + a = np.array(np.mat(SEGDATA, dtype=np.float32)) + npts = a.shape[0] + tmp_file = tempfile.mkstemp(suffix='.pcd')[1] + with open(tmp_file, "w") as f: + f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) + + p = pcl.load(tmp_file) + + assert p.width == npts + assert p.height == 1 + + for i, row in enumerate(a): + pt = np.array(p[i]) + ssd = sum((row - pt) ** 2) + assert ssd < 1e-6 + + assert_array_equal(p.sensor_orientation, + np.array([0, 1, 0, 0], dtype=np.float32)) + assert_array_equal(p.sensor_origin, + np.array([.1, 0, .5, 0], dtype=np.float32)) + + +def test_copy(): + a = np.random.randn(100, 3).astype(np.float32) + p1 = pcl.PointCloud(a) + p2 = pcl.PointCloud(p1) + assert_array_equal(p2.to_array(), a) + + +class TestSave(unittest.TestCase): + + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.tmpdir = tempfile.mkdtemp(suffix='pcl-test') + + def tearDown(self): + shutil.rmtree(self.tmpdir) + + def testSave(self): + for ext in ["pcd", "ply"]: + d = os.path.join(self.tmpdir, "foo." + ext) + pcl.save(self.p, d) + p = pcl.load(d) + self.assertEqual(self.p.size, p.size) + + +class TestExtract(unittest.TestCase): + + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + + def testExtractPos(self): + p2 = self.p.extract([1, 2, 3], False) + # new instance is returned + self.assertNotEqual(self.p, p2) + self.assertEqual(p2.size, 3) + + def testExtractNeg(self): + p2 = self.p.extract([1, 2, 3], True) + self.assertNotEqual(self.p, p2) + self.assertEqual(p2.size, self.p.size - 3) + + +class TestExceptions(unittest.TestCase): + + def setUp(self): + self.p = pcl.PointCloud(np.arange(9, dtype=np.float32).reshape(3, 3)) + + def testIndex(self): + self.assertRaises(IndexError, self.p.__getitem__, self.p.size) + self.assertRaises(Exception, self.p.get_point, self.p.size, 1) + + def testResize(self): + # XXX MemoryError isn't actually the prettiest exception for a + # negative argument. Don't hesitate to change this test to reflect + # better exceptions. + self.assertRaises(MemoryError, self.p.resize, -1) + + +def suite(): + suite = unittest.TestSuite() + # io + suite.addTests(unittest.makeSuite(TestListIO)) + suite.addTests(unittest.makeSuite(TestNumpyIO)) + suite.addTests(unittest.makeSuite(TestSave)) + suite.addTests(unittest.makeSuite(TestExtract)) + suite.addTests(unittest.makeSuite(TestExceptions)) + return suite + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/test_kdtree.py b/tests/test_kdtree.py new file mode 100644 index 000000000..7b538e7af --- /dev/null +++ b/tests/test_kdtree.py @@ -0,0 +1,83 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + +class TestKdTree(unittest.TestCase): + def setUp(self): + rng = np.random.RandomState(42) + # Define two dense sets of points of sizes 30 and 170, resp. + a = rng.randn(100, 3).astype(np.float32) + a[:30] -= 42 + + self.pc = pcl.PointCloud(a) + self.kd = pcl.KdTreeFLANN(self.pc) + + def testException(self): + self.assertRaises(TypeError, pcl.KdTreeFLANN) + self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) + + def testKNN(self): + # Small cluster + ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, 0, k=2) + for i in ind: + self.assertGreaterEqual(i, 0) + self.assertLess(i, 30) + for d in sqdist: + self.assertGreaterEqual(d, 0) + + # Big cluster + for ref, k in ((80, 1), (59, 3), (60, 10)): + ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) + for i in ind: + self.assertGreaterEqual(i, 30) + for d in sqdist: + self.assertGreaterEqual(d, 0) + + +class TestKdTreeFLANN(unittest.TestCase): + def setUp(self): + rng = np.random.RandomState(42) + # Define two dense sets of points of sizes 30 and 170, resp. + a = rng.randn(100, 3).astype(np.float32) + a[:30] -= 42 + + self.pc = pcl.PointCloud(a) + self.kd = pcl.KdTreeFLANN(self.pc) + + def testException(self): + self.assertRaises(TypeError, pcl.KdTreeFLANN) + self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) + + def testKNN(self): + # Small cluster + ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, 0, k=2) + for i in ind: + self.assertGreaterEqual(i, 0) + self.assertLess(i, 30) + for d in sqdist: + self.assertGreaterEqual(d, 0) + + # Big cluster + for ref, k in ((80, 1), (59, 3), (60, 10)): + ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) + for i in ind: + self.assertGreaterEqual(i, 30) + for d in sqdist: + self.assertGreaterEqual(d, 0) + + +def suite(): + suite = unittest.TestSuite() + # ketree + suite.addTests(unittest.makeSuite(TestKdTree)) + # suite.addTests(unittest.makeSuite(TestKdTreeFLANN)) + return suite + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/test_keypoints.py b/tests/test_keypoints.py new file mode 100644 index 000000000..8fe438c94 --- /dev/null +++ b/tests/test_keypoints.py @@ -0,0 +1,49 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + +_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] +_DATA = """0.0, 0.0, 0.2; + 1.0, 2.0, 3.2; + 2.0, 4.0, 6.2; + 3.0, 6.0, 9.2; + 4.0, 8.0, 12.2""" + + +# keyPoints +### HarrisKeypoint3D ### +class TestHarrisKeypoint3D(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### NarfKeypoint ### +class TestNarfKeypoint(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### UniformSampling ### +class TestUniformSampling(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +def suite(): + suite = unittest.TestSuite() + # keypoints + suite.addTests(unittest.makeSuite(TestHarrisKeypoint3D)) + suite.addTests(unittest.makeSuite(TestNarfKeypoint)) + suite.addTests(unittest.makeSuite(TestUniformSampling)) + return suite + + +if __name__ == '__main__': + unittest.main() + + diff --git a/tests/test_octree.py b/tests/test_octree.py new file mode 100644 index 000000000..d40f5cf5e --- /dev/null +++ b/tests/test_octree.py @@ -0,0 +1,93 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + +_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] +_DATA = """0.0, 0.0, 0.2; + 1.0, 2.0, 3.2; + 2.0, 4.0, 6.2; + 3.0, 6.0, 9.2; + 4.0, 8.0, 12.2""" + +# class TestOctreePointCloud(unittest.TestCase): +# +# def setUp(self): +# self.t = pcl.OctreePointCloud(0.1) +# +# def testLoad(self): +# pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") +# self.t.set_input_cloud(pc) +# self.t.define_bounding_box() +# self.t.add_points_from_input_cloud() +# good_point = (0.035296999, -0.074322999, 1.2074) +# rs = self.t.is_voxel_occupied_at_point(good_point) +# self.assertTrue(rs) +# bad_point = (0.5, 0.5, 0.5) +# rs = self.t.is_voxel_occupied_at_point(bad_point) +# self.assertFalse(rs) +# voxels_len = 44 +# self.assertEqual(len(self.t.get_occupied_voxel_centers()), voxels_len) +# self.t.delete_voxel_at_point(good_point) +# self.assertEqual( +# len(self.t.get_occupied_voxel_centers()), voxels_len - 1) + + +class TestOctreePointCloudSearch(unittest.TestCase): + + def setUp(self): + self.t = pcl.OctreePointCloudSearch(0.1) + pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.t.set_input_cloud(pc) + self.t.define_bounding_box() + self.t.add_points_from_input_cloud() + + def testConstructor(self): + self.assertRaises(ValueError, pcl.OctreePointCloudSearch, 0.) + + def testRadiusSearch(self): + good_point = (0.035296999, -0.074322999, 1.2074) + rs = self.t.radius_search(good_point, 0.5, 1) + self.assertEqual(len(rs[0]), 1) + self.assertEqual(len(rs[1]), 1) + rs = self.t.radius_search(good_point, 0.5) + self.assertEqual(len(rs[0]), 19730) + self.assertEqual(len(rs[1]), 19730) + +# class TestOctreePointCloudChangeDetector(unittest.TestCase): +# +# def setUp(self): +# self.t = pcl.OctreePointCloudSearch(0.1) +# pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") +# self.t.set_input_cloud(pc) +# self.t.define_bounding_box() +# self.t.add_points_from_input_cloud() +# +# def testConstructor(self): +# self.assertRaises(ValueError, pcl.OctreePointCloudChangeDetector, 0.) +# +# def testRadiusSearch(self): +# good_point = (0.035296999, -0.074322999, 1.2074) +# rs = self.t.radius_search(good_point, 0.5, 1) +# self.assertEqual(len(rs[0]), 1) +# self.assertEqual(len(rs[1]), 1) +# rs = self.t.radius_search(good_point, 0.5) +# self.assertEqual(len(rs[0]), 19730) +# self.assertEqual(len(rs[1]), 19730) + + +def suite(): + suite = unittest.TestSuite() + # octree + suite.addTests(unittest.makeSuite(TestOctreePointCloud)) + suite.addTests(unittest.makeSuite(TestOctreePointCloudSearch)) + suite.addTests(unittest.makeSuite(TestOctreePointCloudChangeDetector)) + return suite + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/test_pcl_172.py b/tests/test_pcl_172.py deleted file mode 100644 index 2ed0718a5..000000000 --- a/tests/test_pcl_172.py +++ /dev/null @@ -1,566 +0,0 @@ -import os.path -import pickle -import shutil -import tempfile -import unittest - -import pcl -import numpy as np - -from numpy.testing import assert_array_almost_equal, assert_array_equal - - -_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] -_DATA = """0.0, 0.0, 0.2; - 1.0, 2.0, 3.2; - 2.0, 4.0, 6.2; - 3.0, 6.0, 9.2; - 4.0, 8.0, 12.2""" - -# io -class TestListIO(unittest.TestCase): - def setUp(self): - self.p = pcl.PointCloud(_data) - - def testFromList(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToList(self): - l = self.p.to_list() - assert np.allclose(l, _data) - - -class TestNumpyIO(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(_DATA, dtype=np.float32)) - self.p = pcl.PointCloud(self.a) - - def testFromNumpy(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToNumpy(self): - a = self.p.to_array() - self.assertTrue(np.alltrue(a == self.a)) - - def test_asarray(self): - p = pcl.PointCloud(self.p) # copy - # old0 = p[0] - a = np.asarray(p) # view - a[:] += 6 - assert_array_almost_equal(p[0], a[0]) - - def test_pickle(self): - """Test pickle support.""" - # In this testcase because picking reduces to pickling NumPy arrays. - s = pickle.dumps(self.p) - p = pickle.loads(s) - self.assertTrue(np.all(self.a == p.to_array())) - -# copy the output of seg -SEGDATA = """ 0.352222 -0.151883 2; - -0.106395 -0.397406 1; - -0.473106 0.292602 1; - -0.731898 0.667105 -2; - 0.441304 -0.734766 1; - 0.854581 -0.0361733 1; - -0.4607 -0.277468 4; - -0.916762 0.183749 1; - 0.968809 0.512055 1; - -0.998983 -0.463871 1; - 0.691785 0.716053 1; - 0.525135 -0.523004 1; - 0.439387 0.56706 1; - 0.905417 -0.579787 1; - 0.898706 -0.504929 1""" - -SEGINLIERS = """-0.106395 -0.397406 1; - -0.473106 0.292602 1; - 0.441304 -0.734766 1; - 0.854581 -0.0361733 1; - -0.916762 0.183749 1; - 0.968809 0.512055 1; - -0.998983 -0.463871 1; - 0.691785 0.716053 1; - 0.525135 -0.523004 1; - 0.439387 0.56706 1; - 0.905417 -0.579787 1; - 0.898706 -0.504929 1""" -SEGINLIERSIDX = [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14] - -SEGCOEFF = [0.0, 0.0, 1.0, -1.0] - - -class TestSegmentPlane(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(SEGDATA, dtype=np.float32)) - self.p = pcl.PointCloud() - self.p.from_array(self.a) - - def testLoad(self): - npts = self.a.shape[0] - self.assertEqual(npts, self.p.size) - self.assertEqual(npts, self.p.width) - self.assertEqual(1, self.p.height) - - def testSegmentPlaneObject(self): - seg = self.p.make_segmenter() - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_PLANE) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_distance_threshold(0.01) - - indices, model = seg.segment() - self.assertListEqual(indices, SEGINLIERSIDX) - self.assertListEqual(model, SEGCOEFF) - - -def test_pcd_read(): - TMPL = """# .PCD v.7 - Point Cloud Data file format -VERSION .7 -FIELDS x y z -SIZE 4 4 4 -TYPE F F F -COUNT 1 1 1 -WIDTH %(npts)d -HEIGHT 1 -VIEWPOINT 0.1 0 0.5 0 1 0 0 -POINTS %(npts)d -DATA ascii -%(data)s""" - - a = np.array(np.mat(SEGDATA, dtype=np.float32)) - npts = a.shape[0] - tmp_file = tempfile.mkstemp(suffix='.pcd')[1] - with open(tmp_file, "w") as f: - f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) - - p = pcl.load(tmp_file) - - assert p.width == npts - assert p.height == 1 - - for i, row in enumerate(a): - pt = np.array(p[i]) - ssd = sum((row - pt) ** 2) - assert ssd < 1e-6 - - assert_array_equal(p.sensor_orientation, - np.array([0, 1, 0, 0], dtype=np.float32)) - assert_array_equal(p.sensor_origin, - np.array([.1, 0, .5, 0], dtype=np.float32)) - - -def test_copy(): - a = np.random.randn(100, 3).astype(np.float32) - p1 = pcl.PointCloud(a) - p2 = pcl.PointCloud(p1) - assert_array_equal(p2.to_array(), a) - - -SEGCYLMOD = [0.0552167, 0.0547035, 0.757707, - -0.0270852, -4.41026, -2.88995, 0.0387603] -# 1.7.2 -SEGCYLIN = 11462 - -class TestSegmentCylinder(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testSegment(self): - seg = self.p.make_segmenter_normals(50) - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_CYLINDER) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_normal_distance_weight(0.1) - seg.set_max_iterations(10000) - seg.set_distance_threshold(0.05) - seg.set_radius_limits(0, 0.1) - - indices, model = seg.segment() - - self.assertEqual(len(indices), SEGCYLIN) - - # npexp = np.array(SEGCYLMOD) - # npmod = np.array(model) - # ssd = sum((npexp - npmod) ** 2) - # self.assertLess(ssd, 1e-6) - - -class TestSave(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.tmpdir = tempfile.mkdtemp(suffix='pcl-test') - - def tearDown(self): - shutil.rmtree(self.tmpdir) - - def testSave(self): - for ext in ["pcd", "ply"]: - d = os.path.join(self.tmpdir, "foo." + ext) - pcl.save(self.p, d) - p = pcl.load(d) - self.assertEqual(self.p.size, p.size) - - -class TestFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") - - def testFilter(self): - mls = self.p.make_moving_least_squares() - mls.set_search_radius(0.5) - mls.set_polynomial_order(2) - mls.set_polynomial_fit(True) - f = mls.process() - # new instance is returned - self.assertNotEqual(self.p, f) - # mls filter retains the same number of points - self.assertEqual(self.p.size, f.size) - - -class TestExtract(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") - - def testExtractPos(self): - p2 = self.p.extract([1, 2, 3], False) - # new instance is returned - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, 3) - - def testExtractNeg(self): - p2 = self.p.extract([1, 2, 3], True) - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, self.p.size - 3) - - -class TestExceptions(unittest.TestCase): - - def setUp(self): - self.p = pcl.PointCloud(np.arange(9, dtype=np.float32).reshape(3, 3)) - - def testIndex(self): - self.assertRaises(IndexError, self.p.__getitem__, self.p.size) - self.assertRaises(Exception, self.p.get_point, self.p.size, 1) - - def testResize(self): - # XXX MemoryError isn't actually the prettiest exception for a - # negative argument. Don't hesitate to change this test to reflect - # better exceptions. - self.assertRaises(MemoryError, self.p.resize, -1) - - -class TestSegmenterNormal(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def _tpos(self, c): - self.assertEqual(c.size, 22745) - self.assertEqual(c.width, 22745) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def _tneg(self, c): - self.assertEqual(c.size, 1015) - self.assertEqual(c.width, 1015) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def testFilterPos(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - self.assertEqual(fil.mean_k, 50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.stddev_mul_thresh, 1.0) - c = fil.filter() - self._tpos(c) - - def testFilterNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.negative, False) - fil.set_negative(True) - self.assertEqual(fil.negative, True) - c = fil.filter() - self._tneg(c) - - def testFilterPosNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - c = fil.filter() - self._tpos(c) - fil.set_negative(True) - c = fil.filter() - self._tneg(c) - - -class TestVoxelGridFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_voxel_grid_filter() - fil.set_leaf_size(0.01, 0.01, 0.01) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 719) - - -class TestPassthroughFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 7751) - - def testFilterBoth(self): - total = self.p.size - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - front = fil.filter().size - fil.set_filter_limits(0.75, 100) - back = fil.filter().size - self.assertEqual(total, front + back) - - -class TestKdTree(unittest.TestCase): - - def setUp(self): - rng = np.random.RandomState(42) - # Define two dense sets of points of sizes 30 and 170, resp. - a = rng.randn(100, 3).astype(np.float32) - a[:30] -= 42 - - self.pc = pcl.PointCloud(a) - self.kd = pcl.KdTreeFLANN(self.pc) - - def testException(self): - self.assertRaises(TypeError, pcl.KdTreeFLANN) - self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) - - def testKNN(self): - # Small cluster - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, 0, k=2) - for i in ind: - self.assertGreaterEqual(i, 0) - self.assertLess(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - # Big cluster - for ref, k in ((80, 1), (59, 3), (60, 10)): - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) - for i in ind: - self.assertGreaterEqual(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - -class TestOctreePointCloud(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloud(0.1) - - def testLoad(self): - pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - good_point = (0.035296999, -0.074322999, 1.2074) - rs = self.t.is_voxel_occupied_at_point(good_point) - self.assertTrue(rs) - bad_point = (0.5, 0.5, 0.5) - rs = self.t.is_voxel_occupied_at_point(bad_point) - self.assertFalse(rs) - voxels_len = 44 - self.assertEqual(len(self.t.get_occupied_voxel_centers()), voxels_len) - self.t.delete_voxel_at_point(good_point) - self.assertEqual( - len(self.t.get_occupied_voxel_centers()), voxels_len - 1) - - -class TestOctreePointCloudSearch(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloudSearch(0.1) - pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - - def testConstructor(self): - self.assertRaises(ValueError, pcl.OctreePointCloudSearch, 0.) - - def testRadiusSearch(self): - good_point = (0.035296999, -0.074322999, 1.2074) - rs = self.t.radius_search(good_point, 0.5, 1) - self.assertEqual(len(rs[0]), 1) - self.assertEqual(len(rs[1]), 1) - rs = self.t.radius_search(good_point, 0.5) - self.assertEqual(len(rs[0]), 19730) - self.assertEqual(len(rs[1]), 19730) - -# class TestCropHull(unittest.TestCase): -# -# def setUp(self): -# self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# -# def testCropHull(self): -# filterCloud = pcl.PointCloud() -# vt = pcl.Vertices() -# # // inside point -# # cloud->push_back(pcl::PointXYZ(M_PI * 0.3, M_PI * 0.3, 0)); -# # // hull points -# # cloud->push_back(pcl::PointXYZ(0,0,0)); -# # cloud->push_back(pcl::PointXYZ(M_PI,0,0)); -# # cloud->push_back(pcl::PointXYZ(M_PI,M_PI*0.5,0)); -# # cloud->push_back(pcl::PointXYZ(0,M_PI*0.5,0)); -# # cloud->push_back(pcl::PointXYZ(0,0,0)); -# # // outside point -# # cloud->push_back(pcl::PointXYZ(-M_PI * 0.3, -M_PI * 0.3, 0)); -# points_2 = np.array([ -# [1 * 0.3, 1 * 0.3, 0], -# [0, 0, 0], -# [1, 0, 0], -# [1, 1 * 0.5, 0], -# [0, 1 * 0.5, 0], -# [0, 0, 0], -# # [-1 * 0.3 , -1 * 0.3, 0] -# ], dtype=np.float32) -# filterCloud.from_array(points_2) -# # print(filterCloud) -# -# vertices_point_1 = np.array([1, 2, 3, 4, 5], dtype=np.int) -# vt.from_array(vertices_point_1) -# # print(vt) -# # vt.vertices.push_back(1) -# # vt.vertices.push_back(2) -# # vt.vertices.push_back(3) -# # vt.vertices.push_back(4) -# # vt.vertices.push_back(5) -# # vertices = vector[pcl.Vertices] -# # vertices.push_back(vt) -# -# outputCloud = pcl.PointCloud() -# # crophull = pcl.CropHull() -# # crophull.setInputCloud(self.pc) -# crophull = self.pc.make_crophull() -# # crophull.setHullIndices(vertices) -# # crophull.setHullIndices(vt) -# # crophull.setHullCloud(filterCloud) -# # crophull.setDim(2) -# # crophull.setCropOutside(false) -# crophull.SetParameter(filterCloud, vt) -# # indices = vector[int] -# # cropHull.filter(indices); -# # outputCloud = cropHull.filter(); -# # print("before: " + outputCloud) -# crophull.Filtering(outputCloud) -# # print(outputCloud) - - -# Viewer -# // pcl::visualization::CloudViewer viewer ("Cluster viewer"); -# // viewer.showCloud(colored_cloud); - -# Write Point -# pcl::PCDWriter writer; -# std::stringstream ss; -# ss << "min_cut_seg" << ".pcd"; -# // writer.write (ss.str (), *cloud, false); -# pcl::io::savePCDFile(ss.str(), *outputCloud, false); - - -class TestCropBox(unittest.TestCase): - - def setUp(self): - # self.pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") - - def testException(self): - self.assertRaises(TypeError, pcl.CropHull) - - def testCrop(self): - # pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") - clipper = self.pc.make_cropbox() - outcloud = pcl.PointCloud() - self.assertEqual(outcloud.size, 0) - - # clipper.setTranslation(Eigen::Vector3f(pose->tx, pose->ty, pose->tz)); - # clipper.setRotation(Eigen::Vector3f(pose->rx, pose->ry, pose->rz)); - # clipper.setMin(-Eigen::Vector4f(tracklet->l/2, tracklet->w/2, 0, 0)); - # clipper.setMax(Eigen::Vector4f(tracklet->l/2, tracklet->w/2, tracklet->h, 0)); - # clipper.filter(*outcloud); - tx = 0 - ty = 0 - tz = 0 - clipper.set_Translation(tx, ty, tz) - rx = 0 - ry = 0 - rz = 0 - clipper.set_Rotation(rx, ry, rz) - minx = -1.5 - miny = -1.5 - minz = 2 - mins = 0 - maxx = 3.5 - maxy = 3.5 - maxz = 3 - maxs = 0 - clipper.set_MinMax(minx, miny, minz, mins, maxx, maxy, maxz, maxs) - clipper.Filtering(outcloud) - self.assertNotEqual(outcloud.size, 0) - self.assertNotEqual(outcloud.size, self.pc.size) - -# Add ProjectInlier -# class TestProjectInlier(unittest.TestCase): -# -# def setUp(self): -# # TestData -# self.pc = pcl.PointCloud(a) -# self.kd = pcl.CropBox(self.pc) -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) -# -# def testCrop(self): -# # Big cluster -# for ref, k in ((80, 1), (59, 3), (60, 10)): -# ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) -# for i in ind: -# self.assertGreaterEqual(i, 30) -# for d in sqdist: -# self.assertGreaterEqual(d, 0) -# - -# Add RadiusOutlierRemoval - -# Add ConditionAnd - -# - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/test_pcl_180.py b/tests/test_pcl_180.py deleted file mode 100644 index 3f4c552a0..000000000 --- a/tests/test_pcl_180.py +++ /dev/null @@ -1,568 +0,0 @@ -import os.path -import pickle -import shutil -import tempfile -import unittest - -import pcl -import numpy as np - -from numpy.testing import assert_array_almost_equal, assert_array_equal - - -_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] -_DATA = """0.0, 0.0, 0.2; - 1.0, 2.0, 3.2; - 2.0, 4.0, 6.2; - 3.0, 6.0, 9.2; - 4.0, 8.0, 12.2""" - -# io -class TestListIO(unittest.TestCase): - def setUp(self): - self.p = pcl.PointCloud(_data) - - def testFromList(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToList(self): - l = self.p.to_list() - assert np.allclose(l, _data) - - -class TestNumpyIO(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(_DATA, dtype=np.float32)) - self.p = pcl.PointCloud(self.a) - - def testFromNumpy(self): - for i, d in enumerate(_data): - pt = self.p[i] - assert np.allclose(pt, _data[i]) - - def testToNumpy(self): - a = self.p.to_array() - self.assertTrue(np.alltrue(a == self.a)) - - def test_asarray(self): - p = pcl.PointCloud(self.p) # copy - # old0 = p[0] - a = np.asarray(p) # view - a[:] += 6 - assert_array_almost_equal(p[0], a[0]) - - def test_pickle(self): - """Test pickle support.""" - # In this testcase because picking reduces to pickling NumPy arrays. - s = pickle.dumps(self.p) - p = pickle.loads(s) - self.assertTrue(np.all(self.a == p.to_array())) - -# copy the output of seg -SEGDATA = """ 0.352222 -0.151883 2; - -0.106395 -0.397406 1; - -0.473106 0.292602 1; - -0.731898 0.667105 -2; - 0.441304 -0.734766 1; - 0.854581 -0.0361733 1; - -0.4607 -0.277468 4; - -0.916762 0.183749 1; - 0.968809 0.512055 1; - -0.998983 -0.463871 1; - 0.691785 0.716053 1; - 0.525135 -0.523004 1; - 0.439387 0.56706 1; - 0.905417 -0.579787 1; - 0.898706 -0.504929 1""" - -SEGINLIERS = """-0.106395 -0.397406 1; - -0.473106 0.292602 1; - 0.441304 -0.734766 1; - 0.854581 -0.0361733 1; - -0.916762 0.183749 1; - 0.968809 0.512055 1; - -0.998983 -0.463871 1; - 0.691785 0.716053 1; - 0.525135 -0.523004 1; - 0.439387 0.56706 1; - 0.905417 -0.579787 1; - 0.898706 -0.504929 1""" -SEGINLIERSIDX = [1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14] - -SEGCOEFF = [0.0, 0.0, 1.0, -1.0] - - -class TestSegmentPlane(unittest.TestCase): - def setUp(self): - self.a = np.array(np.mat(SEGDATA, dtype=np.float32)) - self.p = pcl.PointCloud() - self.p.from_array(self.a) - - def testLoad(self): - npts = self.a.shape[0] - self.assertEqual(npts, self.p.size) - self.assertEqual(npts, self.p.width) - self.assertEqual(1, self.p.height) - - def testSegmentPlaneObject(self): - seg = self.p.make_segmenter() - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_PLANE) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_distance_threshold(0.01) - - indices, model = seg.segment() - self.assertListEqual(indices, SEGINLIERSIDX) - self.assertListEqual(model, SEGCOEFF) - - -def test_pcd_read(): - TMPL = """# .PCD v.7 - Point Cloud Data file format -VERSION .7 -FIELDS x y z -SIZE 4 4 4 -TYPE F F F -COUNT 1 1 1 -WIDTH %(npts)d -HEIGHT 1 -VIEWPOINT 0.1 0 0.5 0 1 0 0 -POINTS %(npts)d -DATA ascii -%(data)s""" - - a = np.array(np.mat(SEGDATA, dtype=np.float32)) - npts = a.shape[0] - tmp_file = tempfile.mkstemp(suffix='.pcd')[1] - with open(tmp_file, "w") as f: - f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) - - p = pcl.load(tmp_file) - - assert p.width == npts - assert p.height == 1 - - for i, row in enumerate(a): - pt = np.array(p[i]) - ssd = sum((row - pt) ** 2) - assert ssd < 1e-6 - - assert_array_equal(p.sensor_orientation, - np.array([0, 1, 0, 0], dtype=np.float32)) - assert_array_equal(p.sensor_origin, - np.array([.1, 0, .5, 0], dtype=np.float32)) - - -def test_copy(): - a = np.random.randn(100, 3).astype(np.float32) - p1 = pcl.PointCloud(a) - p2 = pcl.PointCloud(p1) - assert_array_equal(p2.to_array(), a) - - -SEGCYLMOD = [0.0552167, 0.0547035, 0.757707, - -0.0270852, -4.41026, -2.88995, 0.0387603] -# 1.7.2 -# SEGCYLIN = 11462 -# 1.8 -SEGCYLIN = 11450 - -class TestSegmentCylinder(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testSegment(self): - seg = self.p.make_segmenter_normals(50) - seg.set_optimize_coefficients(True) - seg.set_model_type(pcl.SACMODEL_CYLINDER) - seg.set_method_type(pcl.SAC_RANSAC) - seg.set_normal_distance_weight(0.1) - seg.set_max_iterations(10000) - seg.set_distance_threshold(0.05) - seg.set_radius_limits(0, 0.1) - - indices, model = seg.segment() - - self.assertEqual(len(indices), SEGCYLIN) - - # npexp = np.array(SEGCYLMOD) - # npmod = np.array(model) - # ssd = sum((npexp - npmod) ** 2) - # self.assertLess(ssd, 1e-6) - - -class TestSave(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.tmpdir = tempfile.mkdtemp(suffix='pcl-test') - - def tearDown(self): - shutil.rmtree(self.tmpdir) - - def testSave(self): - for ext in ["pcd", "ply"]: - d = os.path.join(self.tmpdir, "foo." + ext) - pcl.save(self.p, d) - p = pcl.load(d) - self.assertEqual(self.p.size, p.size) - - -class TestFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") - - def testFilter(self): - mls = self.p.make_moving_least_squares() - mls.set_search_radius(0.5) - mls.set_polynomial_order(2) - mls.set_polynomial_fit(True) - f = mls.process() - # new instance is returned - self.assertNotEqual(self.p, f) - # mls filter retains the same number of points - self.assertEqual(self.p.size, f.size) - - -class TestExtract(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") - - def testExtractPos(self): - p2 = self.p.extract([1, 2, 3], False) - # new instance is returned - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, 3) - - def testExtractNeg(self): - p2 = self.p.extract([1, 2, 3], True) - self.assertNotEqual(self.p, p2) - self.assertEqual(p2.size, self.p.size - 3) - - -class TestExceptions(unittest.TestCase): - - def setUp(self): - self.p = pcl.PointCloud(np.arange(9, dtype=np.float32).reshape(3, 3)) - - def testIndex(self): - self.assertRaises(IndexError, self.p.__getitem__, self.p.size) - self.assertRaises(Exception, self.p.get_point, self.p.size, 1) - - def testResize(self): - # XXX MemoryError isn't actually the prettiest exception for a - # negative argument. Don't hesitate to change this test to reflect - # better exceptions. - self.assertRaises(MemoryError, self.p.resize, -1) - - -class TestSegmenterNormal(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def _tpos(self, c): - self.assertEqual(c.size, 22745) - self.assertEqual(c.width, 22745) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def _tneg(self, c): - self.assertEqual(c.size, 1015) - self.assertEqual(c.width, 1015) - self.assertEqual(c.height, 1) - self.assertTrue(c.is_dense) - - def testFilterPos(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - self.assertEqual(fil.mean_k, 50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.stddev_mul_thresh, 1.0) - c = fil.filter() - self._tpos(c) - - def testFilterNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - self.assertEqual(fil.negative, False) - fil.set_negative(True) - self.assertEqual(fil.negative, True) - c = fil.filter() - self._tneg(c) - - def testFilterPosNeg(self): - fil = self.p.make_statistical_outlier_filter() - fil.set_mean_k(50) - fil.set_std_dev_mul_thresh(1.0) - c = fil.filter() - self._tpos(c) - fil.set_negative(True) - c = fil.filter() - self._tneg(c) - - -class TestVoxelGridFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_voxel_grid_filter() - fil.set_leaf_size(0.01, 0.01, 0.01) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 719) - - -class TestPassthroughFilter(unittest.TestCase): - - def setUp(self): - self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") - - def testFilter(self): - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - c = fil.filter() - self.assertTrue(c.size < self.p.size) - self.assertEqual(c.size, 7751) - - def testFilterBoth(self): - total = self.p.size - fil = self.p.make_passthrough_filter() - fil.set_filter_field_name("z") - fil.set_filter_limits(0, 0.75) - front = fil.filter().size - fil.set_filter_limits(0.75, 100) - back = fil.filter().size - self.assertEqual(total, front + back) - - -class TestKdTree(unittest.TestCase): - - def setUp(self): - rng = np.random.RandomState(42) - # Define two dense sets of points of sizes 30 and 170, resp. - a = rng.randn(100, 3).astype(np.float32) - a[:30] -= 42 - - self.pc = pcl.PointCloud(a) - self.kd = pcl.KdTreeFLANN(self.pc) - - def testException(self): - self.assertRaises(TypeError, pcl.KdTreeFLANN) - self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) - - def testKNN(self): - # Small cluster - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, 0, k=2) - for i in ind: - self.assertGreaterEqual(i, 0) - self.assertLess(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - # Big cluster - for ref, k in ((80, 1), (59, 3), (60, 10)): - ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) - for i in ind: - self.assertGreaterEqual(i, 30) - for d in sqdist: - self.assertGreaterEqual(d, 0) - - -class TestOctreePointCloud(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloud(0.1) - - def testLoad(self): - pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - good_point = (0.035296999, -0.074322999, 1.2074) - rs = self.t.is_voxel_occupied_at_point(good_point) - self.assertTrue(rs) - bad_point = (0.5, 0.5, 0.5) - rs = self.t.is_voxel_occupied_at_point(bad_point) - self.assertFalse(rs) - voxels_len = 44 - self.assertEqual(len(self.t.get_occupied_voxel_centers()), voxels_len) - self.t.delete_voxel_at_point(good_point) - self.assertEqual( - len(self.t.get_occupied_voxel_centers()), voxels_len - 1) - - -class TestOctreePointCloudSearch(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloudSearch(0.1) - pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - - def testConstructor(self): - self.assertRaises(ValueError, pcl.OctreePointCloudSearch, 0.) - - def testRadiusSearch(self): - good_point = (0.035296999, -0.074322999, 1.2074) - rs = self.t.radius_search(good_point, 0.5, 1) - self.assertEqual(len(rs[0]), 1) - self.assertEqual(len(rs[1]), 1) - rs = self.t.radius_search(good_point, 0.5) - self.assertEqual(len(rs[0]), 19730) - self.assertEqual(len(rs[1]), 19730) - -# class TestCropHull(unittest.TestCase): -# -# def setUp(self): -# self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# -# def testCropHull(self): -# filterCloud = pcl.PointCloud() -# vt = pcl.Vertices() -# # // inside point -# # cloud->push_back(pcl::PointXYZ(M_PI * 0.3, M_PI * 0.3, 0)); -# # // hull points -# # cloud->push_back(pcl::PointXYZ(0,0,0)); -# # cloud->push_back(pcl::PointXYZ(M_PI,0,0)); -# # cloud->push_back(pcl::PointXYZ(M_PI,M_PI*0.5,0)); -# # cloud->push_back(pcl::PointXYZ(0,M_PI*0.5,0)); -# # cloud->push_back(pcl::PointXYZ(0,0,0)); -# # // outside point -# # cloud->push_back(pcl::PointXYZ(-M_PI * 0.3, -M_PI * 0.3, 0)); -# points_2 = np.array([ -# [1 * 0.3, 1 * 0.3, 0], -# [0, 0, 0], -# [1, 0, 0], -# [1, 1 * 0.5, 0], -# [0, 1 * 0.5, 0], -# [0, 0, 0], -# # [-1 * 0.3 , -1 * 0.3, 0] -# ], dtype=np.float32) -# filterCloud.from_array(points_2) -# # print(filterCloud) -# -# vertices_point_1 = np.array([1, 2, 3, 4, 5], dtype=np.int) -# vt.from_array(vertices_point_1) -# # print(vt) -# # vt.vertices.push_back(1) -# # vt.vertices.push_back(2) -# # vt.vertices.push_back(3) -# # vt.vertices.push_back(4) -# # vt.vertices.push_back(5) -# # vertices = vector[pcl.Vertices] -# # vertices.push_back(vt) -# -# outputCloud = pcl.PointCloud() -# # crophull = pcl.CropHull() -# # crophull.setInputCloud(self.pc) -# crophull = self.pc.make_crophull() -# # crophull.setHullIndices(vertices) -# # crophull.setHullIndices(vt) -# # crophull.setHullCloud(filterCloud) -# # crophull.setDim(2) -# # crophull.setCropOutside(false) -# crophull.SetParameter(filterCloud, vt) -# # indices = vector[int] -# # cropHull.filter(indices); -# # outputCloud = cropHull.filter(); -# # print("before: " + outputCloud) -# crophull.Filtering(outputCloud) -# # print(outputCloud) - - -# Viewer -# // pcl::visualization::CloudViewer viewer ("Cluster viewer"); -# // viewer.showCloud(colored_cloud); - -# Write Point -# pcl::PCDWriter writer; -# std::stringstream ss; -# ss << "min_cut_seg" << ".pcd"; -# // writer.write (ss.str (), *cloud, false); -# pcl::io::savePCDFile(ss.str(), *outputCloud, false); - - -class TestCropBox(unittest.TestCase): - - def setUp(self): - # self.pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") - - def testException(self): - self.assertRaises(TypeError, pcl.CropHull) - - def testCrop(self): - # pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") - clipper = self.pc.make_cropbox() - outcloud = pcl.PointCloud() - self.assertEqual(outcloud.size, 0) - - # clipper.setTranslation(Eigen::Vector3f(pose->tx, pose->ty, pose->tz)); - # clipper.setRotation(Eigen::Vector3f(pose->rx, pose->ry, pose->rz)); - # clipper.setMin(-Eigen::Vector4f(tracklet->l/2, tracklet->w/2, 0, 0)); - # clipper.setMax(Eigen::Vector4f(tracklet->l/2, tracklet->w/2, tracklet->h, 0)); - # clipper.filter(*outcloud); - tx = 0 - ty = 0 - tz = 0 - clipper.set_Translation(tx, ty, tz) - rx = 0 - ry = 0 - rz = 0 - clipper.set_Rotation(rx, ry, rz) - minx = -1.5 - miny = -1.5 - minz = 2 - mins = 0 - maxx = 3.5 - maxy = 3.5 - maxz = 3 - maxs = 0 - clipper.set_MinMax(minx, miny, minz, mins, maxx, maxy, maxz, maxs) - clipper.Filtering(outcloud) - self.assertNotEqual(outcloud.size, 0) - self.assertNotEqual(outcloud.size, self.pc.size) - -# Add ProjectInlier -# class TestProjectInlier(unittest.TestCase): -# -# def setUp(self): -# # TestData -# self.pc = pcl.PointCloud(a) -# self.kd = pcl.CropBox(self.pc) -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) -# -# def testCrop(self): -# # Big cluster -# for ref, k in ((80, 1), (59, 3), (60, 10)): -# ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) -# for i in ind: -# self.assertGreaterEqual(i, 30) -# for d in sqdist: -# self.assertGreaterEqual(d, 0) -# - -# Add RadiusOutlierRemoval - -# Add ConditionAnd - -# - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/test_recognition.py b/tests/test_recognition.py new file mode 100644 index 000000000..d59a234f5 --- /dev/null +++ b/tests/test_recognition.py @@ -0,0 +1,27 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + +_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] +_DATA = """0.0, 0.0, 0.2; + 1.0, 2.0, 3.2; + 2.0, 4.0, 6.2; + 3.0, 6.0, 9.2; + 4.0, 8.0, 12.2""" + +# recognition + +def suite(): + suite = unittest.TestSuite() + # recognition + # suite.addTests(unittest.makeSuite(...)) + return suite + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/test_registration_160.py b/tests/test_registration_160.py deleted file mode 100644 index 196f16353..000000000 --- a/tests/test_registration_160.py +++ /dev/null @@ -1,72 +0,0 @@ -from __future__ import print_function - -import numpy as np -from numpy import cos, sin -from numpy.testing import assert_equal -import unittest - -import pcl -from pcl.pcl_registration import icp, gicp, icp_nl - - -class TestICP(unittest.TestCase): - def setUp(self): - # Check if ICP can find a mild rotation. - theta = [-.031, .4, .59] - rot_x = [[1, 0, 0], - [0, cos(theta[0]), -sin(theta[0])], - [0, sin(theta[0]), cos(theta[0])]] - rot_y = [[cos(theta[1]), 0, sin(theta[1])], - [0, 1, 0], - [-sin(theta[1]), 0, cos(theta[1])]] - rot_z = [[cos(theta[2]), -sin(theta[1]), 0], - [sin(theta[2]), cos(theta[1]), 0], - [0, 0, 1]] - transform = np.dot(rot_x, np.dot(rot_y, rot_z)) - - source = np.random.RandomState(42).randn(900, 3) - self.source = pcl.PointCloud(source.astype(np.float32)) - - target = np.dot(source, transform) - self.target = pcl.PointCloud(target.astype(np.float32)) - - def check_algo(self, algo): - converged, transf, estimate, fitness = algo(self.source, self.target, max_iter=1000) - - self.assertTrue(converged is True) - self.assertLess(fitness, .1) - - self.assertTrue(isinstance(transf, np.ndarray)) - self.assertEqual(transf.shape, (4, 4)) - - self.assertFalse(np.any(transf[:3] == 0)) - assert_equal(transf[3], [0, 0, 0, 1]) - - # XXX I think I misunderstand fitness, it's not equal to the following - # MSS. - # mss = (np.linalg.norm(estimate.to_array() - # - self.source.to_array(), axis=1) ** 2).mean() - # self.assertLess(mss, 1) - - # print("------", algo) - # print("Converged: ", converged, "Estimate: ", estimate, - # "Fitness: ", fitness) - # print("Rotation: ") - # print(transf[0:3,0:3]) - # print("Translation: ", transf[3, 0:3]) - # print("---------") - - def testICP(self): - print("testICP") - self.check_algo(icp) - - def testGICP(self): - print("testGICP") - self.check_algo(gicp) - - def testICP_NL(self): - print("testICP_NL") - self.check_algo(icp_nl) - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/tests/test_sampleconsensus.py b/tests/test_sampleconsensus.py new file mode 100644 index 000000000..58d1ba36e --- /dev/null +++ b/tests/test_sampleconsensus.py @@ -0,0 +1,75 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + +# sample_consensus + +### RandomSampleConsensus ### +class TestRandomSampleConsensus(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### SampleConsensusModel ### +class TestSampleConsensus(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### SampleConsensusModelCylinder ### +class TestSampleConsensusModelCylinder(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### SampleConsensusModelLine ### +class TestSampleConsensusModelLine(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### SampleConsensusModelPlane ### +class TestSampleConsensusModelPlane(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### SampleConsensusModelRegistration ### +class TestSampleConsensusModelRegistration(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### SampleConsensusModelSphere ### +class TestSampleConsensusModelSphere(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### SampleConsensusModelStick ### +class TestSampleConsensusModelStick(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +def suite(): + suite = unittest.TestSuite() + suite.addTests(unittest.makeSuite(TestRandomSampleConsensus)) + suite.addTests(unittest.makeSuite(TestSampleConsensusModel)) + suite.addTests(unittest.makeSuite(TestSampleConsensusModelCylinder)) + suite.addTests(unittest.makeSuite(TestSampleConsensusModelLine)) + suite.addTests(unittest.makeSuite(TestSampleConsensusModelPlane)) + suite.addTests(unittest.makeSuite(TestSampleConsensusModelRegistration)) + suite.addTests(unittest.makeSuite(TestSampleConsensusModelSphere)) + suite.addTests(unittest.makeSuite(TestSampleConsensusModelStick)) + + return suite + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/test_segmentation.py b/tests/test_segmentation.py new file mode 100644 index 000000000..08ef10d27 --- /dev/null +++ b/tests/test_segmentation.py @@ -0,0 +1,61 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + +# segmentation +### ConditionalEuclideanClustering(1.7.2) ### +class TestConditionalEuclideanClustering(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### EuclideanClusterExtraction ### +class TestEuclideanClusterExtraction(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### MinCutSegmentation(1.7.2) ### +class TestMinCutSegmentation(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### ProgressiveMorphologicalFilter ### +class TestProgressiveMorphologicalFilter(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### Segmentation ### +class TestSegmentation(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### SegmentationNormal ### +class TestSegmentationNormal(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +def suite(): + suite = unittest.TestSuite() + # segmentation + suite.addTests(unittest.makeSuite(TestConditionalEuclideanClustering)) + suite.addTests(unittest.makeSuite(TestEuclideanClusterExtraction)) + suite.addTests(unittest.makeSuite(TestMinCutSegmentation)) + suite.addTests(unittest.makeSuite(TestProgressiveMorphologicalFilter)) + suite.addTests(unittest.makeSuite(TestSegmentation)) + suite.addTests(unittest.makeSuite(TestSegmentationNormal)) + return suite + + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/test_surface.py b/tests/test_surface.py new file mode 100644 index 000000000..7b2ccf105 --- /dev/null +++ b/tests/test_surface.py @@ -0,0 +1,33 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + + +# surface +### ConcaveHull ### +class TestConcaveHull(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +### MovingLeastSquares ### +class TestMovingLeastSquares(unittest.TestCase): + def setUp(self): + self.p = pcl.PointCloud(_data) + + +def suite(): + suite = unittest.TestSuite() + # surface + suite.addTests(unittest.makeSuite(TestConcaveHull)) + suite.addTests(unittest.makeSuite(TestMovingLeastSquares)) + return suite + +if __name__ == '__main__': + unittest.main() + From 32f272f3976d8f7b6366146d3415ddc91048eb0a Mon Sep 17 00:00:00 2001 From: sirokujira Date: Tue, 10 Oct 2017 16:06:20 +0900 Subject: [PATCH 11/80] testCI changed(use nose) test code modifed --- .travis.yml | 6 +- appveyor.yml | 5 +- tests/test_features.py | 181 +++++++++++++++++++++++++++++++++++++++ tests/test_filters.py | 186 +++++++++++++++++++++++++++++++---------- tests/test_io.py | 91 ++++++++++---------- tests/test_surface.py | 13 ++- 6 files changed, 391 insertions(+), 91 deletions(-) diff --git a/.travis.yml b/.travis.yml index cd17725e5..3acc573ad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -121,8 +121,10 @@ install: - python setup.py install script: - - coverage run --parallel-mode tests/test_pcl.py - - coverage run --parallel-mode tests/test_registration.py + # - coverage run --parallel-mode tests/test_pcl.py + # - coverage run --parallel-mode tests/test_registration.py + - nosetests --with-coverage --cover-erase --cover-package=python-pcl --verbose + # examples # - python examples/GrabberCallbackTest.py # examples/official diff --git a/appveyor.yml b/appveyor.yml index 15ad44553..306bf068a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -84,8 +84,9 @@ build_script: - if [%PCL_VERSION%]==[1.6] copy "%APPVEYOR_OPENNI_ROOT%" "%PYTHON%\Lib\site-packages" test_script: - - python tests\test_pcl.py - - python tests\test_registration.py + # - python tests\test_pcl.py + # - python tests\test_registration.py + - nosetests # - python examples\official\Filtering\PassThroughFilter.py # - python examples\official\Filtering\project_inliers.py diff --git a/tests/test_features.py b/tests/test_features.py index 01f2b00d6..240c760b4 100644 --- a/tests/test_features.py +++ b/tests/test_features.py @@ -7,42 +7,223 @@ import pcl import numpy as np +_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] +_DATA = """0.0, 0.0, 0.2; + 1.0, 2.0, 3.2; + 2.0, 4.0, 6.2; + 3.0, 6.0, 9.2; + 4.0, 8.0, 12.2""" + # features ### DifferenceOfNormalsEstimation ### class TestDifferenceOfNormalsEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.feat = pcl.DifferenceOfNormalsEstimation() ### IntegralImageNormalEstimation ### class TestIntegralImageNormalEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.feat = pcl.IntegralImageNormalEstimation(self.p) + + + def test_set_NormalEstimation_Method_AVERAGE_3D_GRADIENT (self): + self.feat.set_NormalEstimation_Method_AVERAGE_3D_GRADIENT() + # f = self.feat.compute(self.p) + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + + def test_set_NormalEstimation_Method_COVARIANCE_MATRIX (self): + self.feat.set_NormalEstimation_Method_COVARIANCE_MATRIX() + # f = self.feat.compute(self.p) + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + + + def test_set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE (self): + self.feat.set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE() + # f = self.feat.compute(self.p) + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + + + def test_set_NormalEstimation_Method_SIMPLE_3D_GRADIENT (self): + self.feat.set_NormalEstimation_Method_SIMPLE_3D_GRADIENT() + # f = self.feat.compute(self.p) + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + + + def test_set_MaxDepthChange_Factor(self): + param = 0.0 + self.feat.set_MaxDepthChange_Factor(param) + # f = self.feat.compute(self.p) + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + + def test_set_NormalSmoothingSize(self): + param = 5.0 # default 10.0 + self.feat.set_NormalSmoothingSize(param) + # f = self.feat.compute(self.p) + # result point param? + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + ### MomentOfInertiaEstimation ### class TestMomentOfInertiaEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.feat = pcl.MomentOfInertiaEstimation() + + + def test_get_MomentOfInertia (self): + param = self.feat.get_MomentOfInertia() + + + def test_get_Eccentricity (self): + param = self.feat.get_Eccentricity() + + + def test_get_AABB (self): + param = self.feat.get_AABB() + + + def test_get_EigenValues (self): + param = self.feat.get_EigenValues() ### NormalEstimation ### class TestNormalEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.feat = pcl.NormalEstimation() + + + def test_set_SearchMethod(self): + kdTree = pcl.KdTree() + self.feat.set_SearchMethod(kdTree) + # f = self.feat.compute() + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + pass + + + def test_set_RadiusSearch(self): + param = 0.0 + self.feat.set_RadiusSearch(param) + # f = self.feat.compute() + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + pass + + + def test_set_KSearch (self): + param = 0 + self.feat.set_KSearch (param) + # self.feat.compute() + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + pass + + + def test_compute (self): + # f = self.feat.compute() + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + pass ### RangeImageBorderExtractor ### class TestRangeImageBorderExtractor(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + # self.feat = pcl.RangeImageBorderExtractor() + + + def test_set_RangeImage(self): + # rangeImage = pcl.RangeImage() + # self.feat.set_RangeImage(rangeImage) + pass + + + def test_ClearData (self): + # self.feat.clearData () + pass ### VFHEstimation ### class TestVFHEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + # self.feat = pcl.VFHEstimation() + + def test_set_SearchMethod(self): + # kdTree = pcl.KdTree() + # self.feat.set_SearchMethod(kdTree) + # f = self.feat.compute() + + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + pass + + def test_set_KSearch (self): + param = 0.0 + # self.me.set_KSearch (param) + # self.feat.compute() + + # check + # new instance is returned + # self.assertNotEqual(self.p, f) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + pass def suite(): diff --git a/tests/test_filters.py b/tests/test_filters.py index 733bf4361..a45c6c4ee 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -19,10 +19,56 @@ class TestApproximateVoxelGrid(unittest.TestCase): def setUp(self): self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + self.fil = pcl.ApproximateVoxelGrid() + self.fil.set_InputCloud(self.p) + + # def set_InputCloud(self, PointCloud pc not None): + # (self.me).setInputCloud (pc.thisptr_shared) + + def test_VoxelGrid (self): + x = 1.0 + y = 1.0 + z = 1.0 + self.fil.set_leaf_size (x, y, z) + result = self.fil.filter() + + # check + # new instance is returned + # self.assertNotEqual(self.p, result) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + + ### ConditionalRemoval ### +class TestConditionalRemoval(unittest.TestCase): + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + + +# def set_KeepOrganized(self, flag): +# self.me.setKeepOrganized(flag) +# +# def filter(self): +# """ +# Apply the filter according to the previously set parameters and return +# a new pointcloud +# """ +# cdef PointCloud pc = PointCloud() +# self.me.filter(pc.thisptr()[0]) +# return pc + + ### ConditionAnd ### +class TestConditionAnd(unittest.TestCase): + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + +# def add_Comparison2(self, field_name, CompareOp2 compOp, double thresh): + + +### CropBox ### # base : pcl/tests cpp source code[TEST (CropBox, Filters)] class TestCropBox(unittest.TestCase): @@ -107,7 +153,7 @@ def testCrop(self): cloud_out = cropBoxFilter.filter() # Rotate crop box up by 45 - # cropBoxFilter.setRotation (Eigen::Vector3f (0.0f, 45.0f * float (M_PI) / 180.0f, 0.0f)) + # cropBoxFilter.setRotation (Eigen::Vector3f (0.0, 45.0f * float (M_PI) / 180.0, 0.0f)) # cropBoxFilter.filter(indices) # cropBoxFilter.filter(cloud_out) rx = 0.0 @@ -138,7 +184,7 @@ def testCrop(self): cloud_out = cropBoxFilter.filter() # // Rotate point cloud by -45 - # cropBoxFilter.set_Transform (getTransformation (0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -45.0f * float (M_PI) / 180.0f)) + # cropBoxFilter.set_Transform (getTransformation (0.0, 0.0, 0.0, 0.0, 0.0, -45.0f * float (M_PI) / 180.0f)) # indices = cropBoxFilter.filter() # cloud_out = cropBoxFilter.filter() # @@ -274,7 +320,7 @@ def testCrop(self): # cropBoxFilter2.filter (cloud_out2) # # // Rotate crop box up by 45 - # cropBoxFilter2.setRotation (Eigen::Vector3f (0.0f, 45.0f * float (M_PI) / 180.0f, 0.0f)) + # cropBoxFilter2.setRotation (Eigen::Vector3f (0.0, 45.0f * float (M_PI) / 180.0, 0.0f)) # cropBoxFilter2.filter (indices2) # cropBoxFilter2.filter (cloud_out2) # @@ -282,7 +328,7 @@ def testCrop(self): # self.assertEqual(indices2.size, int (cloud_out2.width * cloud_out2.height)) # # // Rotate point cloud by -45 - # cropBoxFilter2.setTransform (getTransformation (0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -45.0f * float (M_PI) / 180.0f)) + # cropBoxFilter2.setTransform (getTransformation (0.0, 0.0, 0.0, 0.0, 0.0, -45.0f * float (M_PI) / 180.0f)) # cropBoxFilter2.filter (indices2) # cropBoxFilter2.filter (cloud_out2) # @@ -304,7 +350,7 @@ def testCrop(self): # cropBoxFilter2.filter (cloud_out2) # # // Translate point cloud down by -1 - # cropBoxFilter2.setTransform (getTransformation (0.0f, -1.0f, 0.0f, 0.0f, 0.0f, -45.0f * float (M_PI) / 180.0f)) + # cropBoxFilter2.setTransform (getTransformation (0.0, -1.0, 0.0, 0.0, 0.0, -45.0f * float (M_PI) / 180.0f)) # cropBoxFilter2.filter (indices2) # cropBoxFilter2.filter (cloud_out2) # @@ -348,17 +394,18 @@ def testCrop(self): # cropBoxFilter2.filter (cloud_out2) -# class TestCropHull(unittest.TestCase): -# -# def setUp(self): -# self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# -# def testCropHull(self): -# filterCloud = pcl.PointCloud() -# vt = pcl.Vertices() +### CropHull ### +class TestCropHull(unittest.TestCase): + + def setUp(self): + self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") + + def testException(self): + self.assertRaises(TypeError, pcl.CropHull) + + def testCropHull(self): + filterCloud = pcl.PointCloud() + vt = pcl.Vertices() # # // inside point # # cloud->push_back(pcl::PointXYZ(M_PI * 0.3, M_PI * 0.3, 0)) # # // hull points @@ -415,6 +462,10 @@ class TestFieldComparison(unittest.TestCase): def setUp(self): self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") + compare = CompareOp2 + thresh = 1.0 + self.fil = pcl.FieldComparison(compare, thresh) + ### PassThroughFilter ### class TestPassthroughFilter(unittest.TestCase): @@ -442,12 +493,77 @@ def testFilterBoth(self): ### ProjectInliers ### +class TestProjectInliers(unittest.TestCase): + + def setUp(self): + self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") + self.fil = pcl.ProjectInliers() + + def test_model_type(self): + # param1 + m = pclseg.SacModel + self.fil.set_model_type(m) + # result1 + result_param = self.fil.getModelType() + + # param2 + # result2 + # : + pass + + + def test_copy_all_data(self): + self.fil.set_copy_all_data(True) + datas = self.fil.get_copy_all_data(self) + # result + + self.fil.set_copy_all_data(True) + datas = self.fil.get_copy_all_data(self) + # result2 + + ### RadiusOutlierRemoval ### +class TestRadiusOutlierRemoval(unittest.TestCase): + + def setUp(self): + self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") + self.fil = self.p.make_statistical_outlier_filter() + # self.fil = pcl.RadiusOutlierRemoval() + + + def test_filter(self): + result_point = self.fil.filter() + + + def test_radius_seach(self): + radius = 1.0 + self.fil.set_radius_search(radius) + result = self.fil.get_radius_search() + + # check + # new instance is returned + # self.assertNotEqual(self.p, result) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + + def test_MinNeighborsInRadius(self): + min_pts = 10 + self.fil.set_MinNeighborsInRadius(min_pts) + result = self.fil.get_MinNeighborsInRadius(self) + + # check + # new instance is returned + # self.assertNotEqual(self.p, result) + # filter retains the same number of points + # self.assertEqual(self.p.size, f.size) + + ### StatisticalOutlierRemovalFilter ### -class TestSegmenterNormal(unittest.TestCase): +class TestStatisticalOutlierRemovalFilter(unittest.TestCase): def setUp(self): self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.fil def _tpos(self, c): self.assertEqual(c.size, 22745) @@ -490,22 +606,6 @@ def testFilterPosNeg(self): c = fil.filter() self._tneg(c) -# Surface? -# class TestFilter(unittest.TestCase): -# -# def setUp(self): -# self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") -# -# def testFilter(self): -# mls = self.p.make_moving_least_squares() -# mls.set_search_radius(0.5) -# mls.set_polynomial_order(2) -# mls.set_polynomial_fit(True) -# f = mls.process() -# # new instance is returned -# self.assertNotEqual(self.p, f) -# # mls filter retains the same number of points -# self.assertEqual(self.p.size, f.size) ### VoxelGridFilter ### class TestVoxelGridFilter(unittest.TestCase): @@ -551,14 +651,14 @@ def testFilter(self): ## ### Official Test Base ### -p_65558 = (-0.058448f, -0.189095f, 0.723415f), -p_84737 = (-0.088929f, -0.152957f, 0.746095f), -p_57966 = (0.123646f, -0.397528f, 1.393187f), -p_39543 = (0.560287f, -0.545020f, 1.602833f), -p_17766 = (0.557854f, -0.711976f, 1.762013f), -p_70202 = (0.150500f, -0.160329f, 0.646596f), -p_102219 = (0.175637f, -0.101353f, 0.661631f), -p_81765 = (0.223189f, -0.151714f, 0.708332f); +p_65558 = [-0.058448, -0.189095, 0.723415] +p_84737 = [-0.088929, -0.152957, 0.746095] +p_57966 = [0.123646, -0.397528, 1.393187] +p_39543 = [0.560287, -0.545020, 1.602833] +p_17766 = [0.557854, -0.711976, 1.762013] +p_70202 = [0.150500, -0.160329, 0.646596] +p_102219 = [0.175637, -0.101353, 0.661631] +p_81765 = [0.223189, -0.151714, 0.708332] # class TESTFastBilateralFilter(unittest.TestCase): # def setUp(self): @@ -587,8 +687,8 @@ def testFilter(self): # def setUp(self): # self.p = pcl.load("tests" + os.path.sep + "milk_cartoon_all_small_clorox.pcd") # -# sigma_s = [2.341f, 5.2342f, 10.29380f] -# sigma_r = [0.0123f, 0.023f, 0.0345f] +# sigma_s = [2.341, 5.2342, 10.29380] +# sigma_r = [0.0123, 0.023, 0.0345] # for (size_t i = 0; i < 3; i++) # FastBilateralFilter fbf; # fbf.setInputCloud (cloud); diff --git a/tests/test_io.py b/tests/test_io.py index 5bd6553f6..cff202415 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -16,6 +16,54 @@ 3.0, 6.0, 9.2; 4.0, 8.0, 12.2""" + +### local function ### +def test_pcd_read(): + TMPL = """# .PCD v.7 - Point Cloud Data file format +VERSION .7 +FIELDS x y z +SIZE 4 4 4 +TYPE F F F +COUNT 1 1 1 +WIDTH %(npts)d +HEIGHT 1 +VIEWPOINT 0.1 0 0.5 0 1 0 0 +POINTS %(npts)d +DATA ascii +%(data)s""" + + a = np.array(np.mat(SEGDATA, dtype=np.float32)) + npts = a.shape[0] + tmp_file = tempfile.mkstemp(suffix='.pcd')[1] + with open(tmp_file, "w") as f: + f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) + + p = pcl.load(tmp_file) + + assert p.width == npts + assert p.height == 1 + + for i, row in enumerate(a): + pt = np.array(p[i]) + ssd = sum((row - pt) ** 2) + assert ssd < 1e-6 + + assert_array_equal(p.sensor_orientation, + np.array([0, 1, 0, 0], dtype=np.float32)) + assert_array_equal(p.sensor_origin, + np.array([.1, 0, .5, 0], dtype=np.float32)) + + +def test_copy(): + a = np.random.randn(100, 3).astype(np.float32) + p1 = pcl.PointCloud(a) + p2 = pcl.PointCloud(p1) + assert_array_equal(p2.to_array(), a) + + +### + + # io class TestListIO(unittest.TestCase): def setUp(self): @@ -124,49 +172,6 @@ def testSegmentPlaneObject(self): self.assertListEqual(model, SEGCOEFF) -def test_pcd_read(): - TMPL = """# .PCD v.7 - Point Cloud Data file format -VERSION .7 -FIELDS x y z -SIZE 4 4 4 -TYPE F F F -COUNT 1 1 1 -WIDTH %(npts)d -HEIGHT 1 -VIEWPOINT 0.1 0 0.5 0 1 0 0 -POINTS %(npts)d -DATA ascii -%(data)s""" - - a = np.array(np.mat(SEGDATA, dtype=np.float32)) - npts = a.shape[0] - tmp_file = tempfile.mkstemp(suffix='.pcd')[1] - with open(tmp_file, "w") as f: - f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) - - p = pcl.load(tmp_file) - - assert p.width == npts - assert p.height == 1 - - for i, row in enumerate(a): - pt = np.array(p[i]) - ssd = sum((row - pt) ** 2) - assert ssd < 1e-6 - - assert_array_equal(p.sensor_orientation, - np.array([0, 1, 0, 0], dtype=np.float32)) - assert_array_equal(p.sensor_origin, - np.array([.1, 0, .5, 0], dtype=np.float32)) - - -def test_copy(): - a = np.random.randn(100, 3).astype(np.float32) - p1 = pcl.PointCloud(a) - p2 = pcl.PointCloud(p1) - assert_array_equal(p2.to_array(), a) - - class TestSave(unittest.TestCase): def setUp(self): diff --git a/tests/test_surface.py b/tests/test_surface.py index 7b2ccf105..5734e9875 100644 --- a/tests/test_surface.py +++ b/tests/test_surface.py @@ -18,7 +18,18 @@ def setUp(self): ### MovingLeastSquares ### class TestMovingLeastSquares(unittest.TestCase): def setUp(self): - self.p = pcl.PointCloud(_data) + self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + + def testFilter(self): + mls = self.p.make_moving_least_squares() + mls.set_search_radius(0.5) + mls.set_polynomial_order(2) + mls.set_polynomial_fit(True) + f = mls.process() + # new instance is returned + self.assertNotEqual(self.p, f) + # mls filter retains the same number of points + self.assertEqual(self.p.size, f.size) def suite(): From aa3ca220c8056966feb2fa8b8db194ce2a4c4787 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Tue, 10 Oct 2017 17:50:38 +0900 Subject: [PATCH 12/80] test modified(filters) --- tests/test_filters.py | 166 +++++++++++++++++++++++++++++++----------- 1 file changed, 122 insertions(+), 44 deletions(-) diff --git a/tests/test_filters.py b/tests/test_filters.py index a45c6c4ee..069f50a16 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -497,28 +497,122 @@ class TestProjectInliers(unittest.TestCase): def setUp(self): self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") - self.fil = pcl.ProjectInliers() + self.fil = self.p.make_ProjectInliers() + # self.fil = pcl.ProjectInliers() + # self.fil.set_InputCloud(self.p) def test_model_type(self): # param1 - m = pclseg.SacModel + m = pcl.SACMODEL_PLANE self.fil.set_model_type(m) - # result1 - result_param = self.fil.getModelType() + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_PLANE) # param2 - # result2 - # : + m = pcl.SACMODEL_LINE + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_LINE) + + # param3 + m = pcl.SACMODEL_CIRCLE2D + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_CIRCLE2D) + + # param4 + m = pcl.SACMODEL_CIRCLE3D + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_CIRCLE3D) + + # param5 + m = pcl.SACMODEL_SPHERE + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_SPHERE) + + # param6 + m = pcl.SACMODEL_CYLINDER + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_CYLINDER) + + # param7 + m = pcl.SACMODEL_CONE + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_CONE) + + # param8 + m = pcl.SACMODEL_TORUS + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_TORUS) + + # param9 + m = pcl.SACMODEL_PARALLEL_LINE + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_PARALLEL_LINE) + + # param10 + m = pcl.SACMODEL_PERPENDICULAR_PLANE + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_PERPENDICULAR_PLANE) + + # param11 + m = pcl.SACMODEL_PARALLEL_LINES + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_PARALLEL_LINES) + + # param12 + m = pcl.SACMODEL_NORMAL_PLANE + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_NORMAL_PLANE) + + # param13 + m = pcl.SACMODEL_NORMAL_SPHERE + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_NORMAL_SPHERE) + + # param14 + m = pcl.SACMODEL_REGISTRATION + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_REGISTRATION) + + # param15 + m = pcl.SACMODEL_PARALLEL_PLANE + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_PARALLEL_PLANE) + + # param16 + m = pcl.SACMODEL_NORMAL_PARALLEL_PLANE + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_NORMAL_PARALLEL_PLANE) + + # param17 + m = pcl.SACMODEL_STICK + self.fil.set_model_type(m) + result_param = self.fil.get_model_type() + self.assertEqual(result_param, pcl.SACMODEL_STICK) pass def test_copy_all_data(self): self.fil.set_copy_all_data(True) - datas = self.fil.get_copy_all_data(self) + datas = self.fil.get_copy_all_data() # result - self.fil.set_copy_all_data(True) - datas = self.fil.get_copy_all_data(self) + self.fil.set_copy_all_data(False) + datas = self.fil.get_copy_all_data() # result2 @@ -527,8 +621,9 @@ class TestRadiusOutlierRemoval(unittest.TestCase): def setUp(self): self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") - self.fil = self.p.make_statistical_outlier_filter() + self.fil = self.p.make_RadiusOutlierRemoval() # self.fil = pcl.RadiusOutlierRemoval() + # self.fil.set_InputCloud(self.p) def test_filter(self): @@ -546,10 +641,12 @@ def test_radius_seach(self): # filter retains the same number of points # self.assertEqual(self.p.size, f.size) + def test_MinNeighborsInRadius(self): min_pts = 10 self.fil.set_MinNeighborsInRadius(min_pts) - result = self.fil.get_MinNeighborsInRadius(self) + result = self.fil.get_MinNeighborsInRadius() + self.assertEqual(result, min_pts) # check # new instance is returned @@ -563,7 +660,10 @@ class TestStatisticalOutlierRemovalFilter(unittest.TestCase): def setUp(self): self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") - self.fil + self.fil = self.p.make_statistical_outlier_filter() + # self.fil = pcl.StatisticalOutlierRemovalFilter() + # self.fil.set_InputCloud(self.p) + def _tpos(self, c): self.assertEqual(c.size, 22745) @@ -571,12 +671,14 @@ def _tpos(self, c): self.assertEqual(c.height, 1) self.assertTrue(c.is_dense) + def _tneg(self, c): self.assertEqual(c.size, 1015) self.assertEqual(c.width, 1015) self.assertEqual(c.height, 1) self.assertTrue(c.is_dense) + def testFilterPos(self): fil = self.p.make_statistical_outlier_filter() fil.set_mean_k(50) @@ -586,6 +688,7 @@ def testFilterPos(self): c = fil.filter() self._tpos(c) + def testFilterNeg(self): fil = self.p.make_statistical_outlier_filter() fil.set_mean_k(50) @@ -596,6 +699,7 @@ def testFilterNeg(self): c = fil.filter() self._tneg(c) + def testFilterPosNeg(self): fil = self.p.make_statistical_outlier_filter() fil.set_mean_k(50) @@ -612,44 +716,18 @@ class TestVoxelGridFilter(unittest.TestCase): def setUp(self): self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.fil = self.p.make_voxel_grid_filter() + # self.fil = pcl.VoxelGridFilter() + # self.fil.set_InputCloud(self.p) + def testFilter(self): - fil = self.p.make_voxel_grid_filter() - fil.set_leaf_size(0.01, 0.01, 0.01) - c = fil.filter() + self.fil.set_leaf_size(0.01, 0.01, 0.01) + c = self.fil.filter() self.assertTrue(c.size < self.p.size) self.assertEqual(c.size, 719) -# Write Point -# pcl::PCDWriter writer; -# std::stringstream ss; -# ss << "min_cut_seg" << ".pcd"; -# // writer.write (ss.str (), *cloud, false) -# pcl::io::savePCDFile(ss.str(), *outputCloud, false) - -# Add ProjectInlier -# class TestProjectInlier(unittest.TestCase): -# def setUp(self): -# # TestData -# self.pc = pcl.PointCloud(a) -# self.kd = pcl.CropBox(self.pc) -# -# def testException(self): -# self.assertRaises(TypeError, pcl.CropHull) -# self.assertRaises(TypeError, self.kd.nearest_k_search_for_cloud, None) -# -# def testCrop(self): -# # Big cluster -# for ref, k in ((80, 1), (59, 3), (60, 10)): -# ind, sqdist = self.kd.nearest_k_search_for_point(self.pc, ref, k=k) -# for i in ind: -# self.assertGreaterEqual(i, 30) -# for d in sqdist: -# self.assertGreaterEqual(d, 0) -# -## - ### Official Test Base ### p_65558 = [-0.058448, -0.189095, 0.723415] p_84737 = [-0.088929, -0.152957, 0.746095] From 6f1f26d4791b62c5e4ff8ca6fa8153efc7133689 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Tue, 10 Oct 2017 18:11:23 +0900 Subject: [PATCH 13/80] check code(rules pep8) --- tests/test_features.py | 71 +++---- tests/test_filters.py | 348 +++++++++++++++++----------------- tests/test_io.py | 12 +- tests/test_kdtree.py | 3 +- tests/test_keypoints.py | 2 - tests/test_octree.py | 17 +- tests/test_recognition.py | 3 +- tests/test_registration.py | 109 ++++++----- tests/test_sampleconsensus.py | 4 +- tests/test_segmentation.py | 3 +- tests/test_surface.py | 2 +- 11 files changed, 289 insertions(+), 285 deletions(-) diff --git a/tests/test_features.py b/tests/test_features.py index 240c760b4..0fff0eec6 100644 --- a/tests/test_features.py +++ b/tests/test_features.py @@ -29,29 +29,27 @@ def setUp(self): self.p = pcl.PointCloud(_data) self.feat = pcl.IntegralImageNormalEstimation(self.p) - - def test_set_NormalEstimation_Method_AVERAGE_3D_GRADIENT (self): + def test_set_NormalEstimation_Method_AVERAGE_3D_GRADIENT(self): self.feat.set_NormalEstimation_Method_AVERAGE_3D_GRADIENT() # f = self.feat.compute(self.p) - + # check # new instance is returned # self.assertNotEqual(self.p, f) # filter retains the same number of points # self.assertEqual(self.p.size, f.size) - def test_set_NormalEstimation_Method_COVARIANCE_MATRIX (self): + def test_set_NormalEstimation_Method_COVARIANCE_MATRIX(self): self.feat.set_NormalEstimation_Method_COVARIANCE_MATRIX() # f = self.feat.compute(self.p) - + # check # new instance is returned # self.assertNotEqual(self.p, f) # filter retains the same number of points # self.assertEqual(self.p.size, f.size) - - def test_set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE (self): + def test_set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE(self): self.feat.set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE() # f = self.feat.compute(self.p) @@ -61,23 +59,21 @@ def test_set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE (self): # filter retains the same number of points # self.assertEqual(self.p.size, f.size) - - def test_set_NormalEstimation_Method_SIMPLE_3D_GRADIENT (self): + def test_set_NormalEstimation_Method_SIMPLE_3D_GRADIENT(self): self.feat.set_NormalEstimation_Method_SIMPLE_3D_GRADIENT() # f = self.feat.compute(self.p) - + # check # new instance is returned # self.assertNotEqual(self.p, f) # filter retains the same number of points # self.assertEqual(self.p.size, f.size) - def test_set_MaxDepthChange_Factor(self): param = 0.0 self.feat.set_MaxDepthChange_Factor(param) # f = self.feat.compute(self.p) - + # check # new instance is returned # self.assertNotEqual(self.p, f) @@ -85,11 +81,11 @@ def test_set_MaxDepthChange_Factor(self): # self.assertEqual(self.p.size, f.size) def test_set_NormalSmoothingSize(self): - param = 5.0 # default 10.0 + param = 5.0 # default 10.0 self.feat.set_NormalSmoothingSize(param) # f = self.feat.compute(self.p) # result point param? - + # check # new instance is returned # self.assertNotEqual(self.p, f) @@ -97,27 +93,22 @@ def test_set_NormalSmoothingSize(self): # self.assertEqual(self.p.size, f.size) - ### MomentOfInertiaEstimation ### class TestMomentOfInertiaEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) self.feat = pcl.MomentOfInertiaEstimation() - - def test_get_MomentOfInertia (self): + def test_get_MomentOfInertia(self): param = self.feat.get_MomentOfInertia() - - def test_get_Eccentricity (self): + def test_get_Eccentricity(self): param = self.feat.get_Eccentricity() - - def test_get_AABB (self): + def test_get_AABB(self): param = self.feat.get_AABB() - - def test_get_EigenValues (self): + def test_get_EigenValues(self): param = self.feat.get_EigenValues() @@ -127,12 +118,11 @@ def setUp(self): self.p = pcl.PointCloud(_data) self.feat = pcl.NormalEstimation() - def test_set_SearchMethod(self): kdTree = pcl.KdTree() self.feat.set_SearchMethod(kdTree) # f = self.feat.compute() - + # check # new instance is returned # self.assertNotEqual(self.p, f) @@ -140,12 +130,11 @@ def test_set_SearchMethod(self): # self.assertEqual(self.p.size, f.size) pass - def test_set_RadiusSearch(self): param = 0.0 self.feat.set_RadiusSearch(param) # f = self.feat.compute() - + # check # new instance is returned # self.assertNotEqual(self.p, f) @@ -153,12 +142,11 @@ def test_set_RadiusSearch(self): # self.assertEqual(self.p.size, f.size) pass - - def test_set_KSearch (self): + def test_set_KSearch(self): param = 0 - self.feat.set_KSearch (param) + self.feat.set_KSearch(param) # self.feat.compute() - + # check # new instance is returned # self.assertNotEqual(self.p, f) @@ -166,10 +154,9 @@ def test_set_KSearch (self): # self.assertEqual(self.p.size, f.size) pass - - def test_compute (self): + def test_compute(self): # f = self.feat.compute() - + # check # new instance is returned # self.assertNotEqual(self.p, f) @@ -184,14 +171,12 @@ def setUp(self): self.p = pcl.PointCloud(_data) # self.feat = pcl.RangeImageBorderExtractor() - def test_set_RangeImage(self): # rangeImage = pcl.RangeImage() # self.feat.set_RangeImage(rangeImage) pass - - def test_ClearData (self): + def test_ClearData(self): # self.feat.clearData () pass @@ -201,23 +186,23 @@ class TestVFHEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) # self.feat = pcl.VFHEstimation() - + def test_set_SearchMethod(self): # kdTree = pcl.KdTree() # self.feat.set_SearchMethod(kdTree) # f = self.feat.compute() - + # new instance is returned # self.assertNotEqual(self.p, f) # filter retains the same number of points # self.assertEqual(self.p.size, f.size) pass - - def test_set_KSearch (self): + + def test_set_KSearch(self): param = 0.0 # self.me.set_KSearch (param) # self.feat.compute() - + # check # new instance is returned # self.assertNotEqual(self.p, f) @@ -237,6 +222,6 @@ def suite(): suite.addTests(unittest.makeSuite(VFHEstimation)) return suite + if __name__ == '__main__': unittest.main() - diff --git a/tests/test_filters.py b/tests/test_filters.py index 069f50a16..60cfd92a9 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -16,6 +16,8 @@ # Filter ### ApproximateVoxelGrid ### + + class TestApproximateVoxelGrid(unittest.TestCase): def setUp(self): self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") @@ -25,13 +27,13 @@ def setUp(self): # def set_InputCloud(self, PointCloud pc not None): # (self.me).setInputCloud (pc.thisptr_shared) - def test_VoxelGrid (self): + def test_VoxelGrid(self): x = 1.0 y = 1.0 z = 1.0 - self.fil.set_leaf_size (x, y, z) + self.fil.set_leaf_size(x, y, z) result = self.fil.filter() - + # check # new instance is returned # self.assertNotEqual(self.p, result) @@ -39,7 +41,6 @@ def test_VoxelGrid (self): # self.assertEqual(self.p.size, f.size) - ### ConditionalRemoval ### class TestConditionalRemoval(unittest.TestCase): def setUp(self): @@ -48,7 +49,7 @@ def setUp(self): # def set_KeepOrganized(self, flag): # self.me.setKeepOrganized(flag) -# +# # def filter(self): # """ # Apply the filter according to the previously set parameters and return @@ -93,39 +94,39 @@ def testException(self): def testCrop(self): cropBoxFilter = self.p.make_cropbox() # Cropbox slighlty bigger then bounding box of points - cropBoxFilter.set_Min (-1.0, -1.0, -1.0, 1.0) - cropBoxFilter.set_Max ( 1.0, 1.0, 1.0, 1.0) - + cropBoxFilter.set_Min(-1.0, -1.0, -1.0, 1.0) + cropBoxFilter.set_Max(1.0, 1.0, 1.0, 1.0) + # Indices # vector indices; # cropBoxFilter.filter(indices) - + # Cloud cloud_out = cropBoxFilter.filter() - + # Should contain all # self.assertEqual(indices.size, 9) self.assertEqual(cloud_out.size, 9) self.assertEqual(cloud_out.width, 9) self.assertEqual(cloud_out.height, 1) - + # IndicesConstPtr removed_indices; # removed_indices = cropBoxFilter.get_RemovedIndices () - cropBoxFilter.get_RemovedIndices () + cropBoxFilter.get_RemovedIndices() # self.assertEqual(removed_indices.size, 0) # self.assertEqual(lemn(removed_indices), 0) - + # Test setNegative - cropBoxFilter.set_Negative (True) + cropBoxFilter.set_Negative(True) cloud_out_negative = cropBoxFilter.filter() # self.assertEqual(cloud_out_negative.size, 0) - + # cropBoxFilter.filter(indices) # self.assertEqual(indices.size, 0) - - cropBoxFilter.set_Negative (False) + + cropBoxFilter.set_Negative(False) cloud_out = cropBoxFilter.filter() - + # Translate crop box up by 1 tx = 0 ty = 1 @@ -133,25 +134,25 @@ def testCrop(self): cropBoxFilter.set_Translation(tx, ty, tz) # indices = cropBoxFilter.filter() cloud_out = cropBoxFilter.filter() - + # self.assertEqual(indices.size, 5) self.assertEqual(cloud_out.size, 5) - + # removed_indices = cropBoxFilter.get_RemovedIndices () - cropBoxFilter.get_RemovedIndices () + cropBoxFilter.get_RemovedIndices() # self.assertEqual(removed_indices.size, 4) - + # Test setNegative - cropBoxFilter.set_Negative (True) + cropBoxFilter.set_Negative(True) cloud_out_negative = cropBoxFilter.filter() # self.assertEqual(cloud_out_negative.size, 4) - + # indices = cropBoxFilter.filter() # self.assertEqual(indices.size, 4) - - cropBoxFilter.set_Negative (False) + + cropBoxFilter.set_Negative(False) cloud_out = cropBoxFilter.filter() - + # Rotate crop box up by 45 # cropBoxFilter.setRotation (Eigen::Vector3f (0.0, 45.0f * float (M_PI) / 180.0, 0.0f)) # cropBoxFilter.filter(indices) @@ -162,234 +163,234 @@ def testCrop(self): cropBoxFilter.set_Rotation(rx, ry, rz) # indices = cropBoxFilter.filter() cloud_out = cropBoxFilter.filter() - + # self.assertEqual(indices.size, 1) self.assertEqual(cloud_out.size, 1) self.assertEqual(cloud_out.width, 1) self.assertEqual(cloud_out.height, 1) - + # removed_indices = cropBoxFilter.get_RemovedIndices () # self.assertEqual(removed_indices.size, 8) - cropBoxFilter.get_RemovedIndices () - + cropBoxFilter.get_RemovedIndices() + # Test setNegative - cropBoxFilter.set_Negative (True) + cropBoxFilter.set_Negative(True) cloud_out_negative = cropBoxFilter.filter() # self.assertEqual(cloud_out_negative.size, 8) - + # indices = cropBoxFilter.filter() # self.assertEqual(indices.size, 8) - - cropBoxFilter.set_Negative (False) + + cropBoxFilter.set_Negative(False) cloud_out = cropBoxFilter.filter() - + # // Rotate point cloud by -45 # cropBoxFilter.set_Transform (getTransformation (0.0, 0.0, 0.0, 0.0, 0.0, -45.0f * float (M_PI) / 180.0f)) # indices = cropBoxFilter.filter() # cloud_out = cropBoxFilter.filter() - # + # # # self.assertEqual(indices.size, 3) # self.assertEqual(cloud_out.size, 3) # self.assertEqual(cloud_out.width, 3) # self.assertEqual(cloud_out.height, 1) ## - + # removed_indices = cropBoxFilter.get_RemovedIndices () # self.assertEqual(removed_indices.size, 6) - cropBoxFilter.get_RemovedIndices () - + cropBoxFilter.get_RemovedIndices() + # // Test setNegative - cropBoxFilter.set_Negative (True) + cropBoxFilter.set_Negative(True) cloud_out_negative = cropBoxFilter.filter() # self.assertEqual(cloud_out_negative.size, 6) - + # indices = cropBoxFilter.filter() # self.assertEqual(indices.size, 6) - - cropBoxFilter.set_Negative (False) + + cropBoxFilter.set_Negative(False) cloud_out = cropBoxFilter.filter() - + # Translate point cloud down by -1 # # cropBoxFilter.setTransform (getTransformation(0, -1, 0, 0, 0, -45.0 * float (M_PI) / 180.0)) # # cropBoxFilter.filter(indices) # cropBoxFilter.filter(cloud_out) - # + # # # self.assertEqual(indices.size, 2) # self.assertEqual(cloud_out.size, 2) # self.assertEqual(cloud_out.width, 2) # self.assertEqual(cloud_out.height, 1) ## - + # removed_indices = cropBoxFilter.get_RemovedIndices () # self.assertEqual(removed_indices.size, 7) - + # Test setNegative - cropBoxFilter.set_Negative (True) + cropBoxFilter.set_Negative(True) cloud_out_negative = cropBoxFilter.filter() # self.assertEqual(cloud_out_negative.size, 7) - + # indices = cropBoxFilter.filter() # self.assertEqual(indices.size, 7) - - cropBoxFilter.set_Negative (False) + + cropBoxFilter.set_Negative(False) cloud_out = cropBoxFilter.filter() - + # // Remove point cloud rotation # cropBoxFilter.set_Transform (getTransformation(0, -1, 0, 0, 0, 0)) # indices = cropBoxFilter.filter() # cloud_out = cropBoxFilter.filter() - + # self.assertEqual(indices.size, 0) # self.assertEqual(cloud_out.size, 0) # self.assertEqual(cloud_out.width, 0) # self.assertEqual(cloud_out.height, 1) - + # removed_indices = cropBoxFilter.get_RemovedIndices () # self.assertEqual(removed_indices.size, 9) - + # Test setNegative - cropBoxFilter.set_Negative (True) + cropBoxFilter.set_Negative(True) cloud_out_negative = cropBoxFilter.filter() # self.assertEqual(cloud_out_negative.size, 9) - + # indices = cropBoxFilter.filter() # self.assertEqual(indices.size, 9) - + # PCLPointCloud2 - # // ------------------------------------------------------------------------- + # // ------------------------------------------------------------------ # Create cloud with center point and corner points # PCLPointCloud2::Ptr input2 (new PCLPointCloud2) # pcl::toPCLPointCloud2 (*input, *input2) - # + # # Test the PointCloud method # CropBox cropBoxFilter2(true) # cropBoxFilter2.setInputCloud (input2) - # + # # Cropbox slighlty bigger then bounding box of points # cropBoxFilter2.setMin (min_pt) # cropBoxFilter2.setMax (max_pt) - # + # # Indices # vector indices2; # cropBoxFilter2.filter (indices2) - # + # # Cloud # PCLPointCloud2 cloud_out2; # cropBoxFilter2.filter (cloud_out2) - # + # # // Should contain all # self.assertEqual(indices2.size, 9) # self.assertEqual(indices2.size, int (cloud_out2.width * cloud_out2.height)) - # + # # IndicesConstPtr removed_indices2; # removed_indices2 = cropBoxFilter2.get_RemovedIndices () # self.assertEqual(removed_indices2.size, 0) - # + # # // Test setNegative # PCLPointCloud2 cloud_out2_negative; # cropBoxFilter2.setNegative (true) # cropBoxFilter2.filter (cloud_out2_negative) # self.assertEqual(cloud_out2_negative.width), 0) - # + # # cropBoxFilter2.filter (indices2) # self.assertEqual(indices2.size, 0) - # + # # cropBoxFilter2.setNegative (false) # cropBoxFilter2.filter (cloud_out2) - # + # # // Translate crop box up by 1 # cropBoxFilter2.setTranslation (Eigen::Vector3f(0, 1, 0)) # cropBoxFilter2.filter (indices2) # cropBoxFilter2.filter (cloud_out2) - # + # # self.assertEqual(indices2.size, 5) # self.assertEqual(indices2.size, int (cloud_out2.width * cloud_out2.height)) - # + # # removed_indices2 = cropBoxFilter2.get_RemovedIndices () # self.assertEqual(removed_indices2.size, 4) - # + # # // Test setNegative # cropBoxFilter2.setNegative (true) # cropBoxFilter2.filter (cloud_out2_negative) # self.assertEqual(cloud_out2_negative.width), 4) - # + # # cropBoxFilter2.filter (indices2) # self.assertEqual(indices2.size, 4) - # + # # cropBoxFilter2.setNegative (false) # cropBoxFilter2.filter (cloud_out2) - # + # # // Rotate crop box up by 45 # cropBoxFilter2.setRotation (Eigen::Vector3f (0.0, 45.0f * float (M_PI) / 180.0, 0.0f)) # cropBoxFilter2.filter (indices2) # cropBoxFilter2.filter (cloud_out2) - # + # # self.assertEqual(indices2.size, 1) # self.assertEqual(indices2.size, int (cloud_out2.width * cloud_out2.height)) - # + # # // Rotate point cloud by -45 # cropBoxFilter2.setTransform (getTransformation (0.0, 0.0, 0.0, 0.0, 0.0, -45.0f * float (M_PI) / 180.0f)) # cropBoxFilter2.filter (indices2) # cropBoxFilter2.filter (cloud_out2) - # + # # self.assertEqual(indices2.size, 3) # self.assertEqual(cloud_out2.width * cloud_out2.height), 3) - # + # # removed_indices2 = cropBoxFilter2.get_RemovedIndices () # self.assertEqual(removed_indices2.size, 6) - # + # # // Test setNegative # cropBoxFilter2.setNegative (true) # cropBoxFilter2.filter (cloud_out2_negative) # self.assertEqual(cloud_out2_negative.width), 6) - # + # # cropBoxFilter2.filter (indices2) # self.assertEqual(indices2.size, 6) - # + # # cropBoxFilter2.setNegative (false) # cropBoxFilter2.filter (cloud_out2) - # + # # // Translate point cloud down by -1 # cropBoxFilter2.setTransform (getTransformation (0.0, -1.0, 0.0, 0.0, 0.0, -45.0f * float (M_PI) / 180.0f)) # cropBoxFilter2.filter (indices2) # cropBoxFilter2.filter (cloud_out2) - # + # # self.assertEqual(indices2.size, 2) # self.assertEqual(cloud_out2.width * cloud_out2.height), 2) - # + # # removed_indices2 = cropBoxFilter2.get_RemovedIndices () # self.assertEqual(removed_indices2.size, 7) - # + # # // Test setNegative # cropBoxFilter2.setNegative (true) # cropBoxFilter2.filter (cloud_out2_negative) # self.assertEqual(cloud_out2_negative.width), 7) - # + # # cropBoxFilter2.filter (indices2) # self.assertEqual(indices2.size, 7) - # + # # cropBoxFilter2.setNegative (false) # cropBoxFilter2.filter (cloud_out2) - # + # # // Remove point cloud rotation # cropBoxFilter2.setTransform (getTransformation(0, -1, 0, 0, 0, 0)) # cropBoxFilter2.filter (indices2) # cropBoxFilter2.filter (cloud_out2) - # + # # self.assertEqual(indices2.size, 0) # self.assertEqual(cloud_out2.width * cloud_out2.height), 0) - # + # # removed_indices2 = cropBoxFilter2.get_RemovedIndices () # self.assertEqual(removed_indices2.size, 9) - # + # # // Test setNegative # cropBoxFilter2.setNegative (true) # cropBoxFilter2.filter (cloud_out2_negative) # self.assertEqual(cloud_out2_negative.width), 9) - # + # # cropBoxFilter2.filter (indices2) # self.assertEqual(indices2.size, 9) - # + # # cropBoxFilter2.setNegative (false) # cropBoxFilter2.filter (cloud_out2) @@ -398,7 +399,12 @@ def testCrop(self): class TestCropHull(unittest.TestCase): def setUp(self): - self.pc = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") + self.pc = pcl.load( + "tests" + + os.path.sep + + "tutorials" + + os.path.sep + + "table_scene_mug_stereo_textured.pcd") def testException(self): self.assertRaises(TypeError, pcl.CropHull) @@ -427,7 +433,7 @@ def testCropHull(self): # ], dtype=np.float32) # filterCloud.from_array(points_2) # # print(filterCloud) -# +# # vertices_point_1 = np.array([1, 2, 3, 4, 5], dtype=np.int) # vt.from_array(vertices_point_1) # # print(vt) @@ -438,7 +444,7 @@ def testCropHull(self): # # vt.vertices.push_back(5) # # vertices = vector[pcl.Vertices] # # vertices.push_back(vt) -# +# # outputCloud = pcl.PointCloud() # # crophull = pcl.CropHull() # # crophull.setInputCloud(self.pc) @@ -507,97 +513,97 @@ def test_model_type(self): self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_PLANE) - + # param2 m = pcl.SACMODEL_LINE self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_LINE) - + # param3 m = pcl.SACMODEL_CIRCLE2D self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_CIRCLE2D) - + # param4 m = pcl.SACMODEL_CIRCLE3D self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_CIRCLE3D) - + # param5 m = pcl.SACMODEL_SPHERE self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_SPHERE) - + # param6 m = pcl.SACMODEL_CYLINDER self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_CYLINDER) - + # param7 m = pcl.SACMODEL_CONE self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_CONE) - + # param8 m = pcl.SACMODEL_TORUS self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_TORUS) - + # param9 m = pcl.SACMODEL_PARALLEL_LINE self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_PARALLEL_LINE) - + # param10 m = pcl.SACMODEL_PERPENDICULAR_PLANE self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_PERPENDICULAR_PLANE) - + # param11 m = pcl.SACMODEL_PARALLEL_LINES self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_PARALLEL_LINES) - + # param12 m = pcl.SACMODEL_NORMAL_PLANE self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_NORMAL_PLANE) - + # param13 m = pcl.SACMODEL_NORMAL_SPHERE self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_NORMAL_SPHERE) - + # param14 m = pcl.SACMODEL_REGISTRATION self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_REGISTRATION) - + # param15 m = pcl.SACMODEL_PARALLEL_PLANE self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_PARALLEL_PLANE) - + # param16 m = pcl.SACMODEL_NORMAL_PARALLEL_PLANE self.fil.set_model_type(m) result_param = self.fil.get_model_type() self.assertEqual(result_param, pcl.SACMODEL_NORMAL_PARALLEL_PLANE) - + # param17 m = pcl.SACMODEL_STICK self.fil.set_model_type(m) @@ -605,12 +611,11 @@ def test_model_type(self): self.assertEqual(result_param, pcl.SACMODEL_STICK) pass - def test_copy_all_data(self): self.fil.set_copy_all_data(True) datas = self.fil.get_copy_all_data() # result - + self.fil.set_copy_all_data(False) datas = self.fil.get_copy_all_data() # result2 @@ -625,29 +630,26 @@ def setUp(self): # self.fil = pcl.RadiusOutlierRemoval() # self.fil.set_InputCloud(self.p) - def test_filter(self): result_point = self.fil.filter() - def test_radius_seach(self): radius = 1.0 self.fil.set_radius_search(radius) result = self.fil.get_radius_search() - + # check # new instance is returned # self.assertNotEqual(self.p, result) # filter retains the same number of points # self.assertEqual(self.p.size, f.size) - def test_MinNeighborsInRadius(self): min_pts = 10 self.fil.set_MinNeighborsInRadius(min_pts) result = self.fil.get_MinNeighborsInRadius() self.assertEqual(result, min_pts) - + # check # new instance is returned # self.assertNotEqual(self.p, result) @@ -659,26 +661,26 @@ def test_MinNeighborsInRadius(self): class TestStatisticalOutlierRemovalFilter(unittest.TestCase): def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.p = pcl.load( + "tests" + + os.path.sep + + "table_scene_mug_stereo_textured_noplane.pcd") self.fil = self.p.make_statistical_outlier_filter() # self.fil = pcl.StatisticalOutlierRemovalFilter() # self.fil.set_InputCloud(self.p) - def _tpos(self, c): self.assertEqual(c.size, 22745) self.assertEqual(c.width, 22745) self.assertEqual(c.height, 1) self.assertTrue(c.is_dense) - def _tneg(self, c): self.assertEqual(c.size, 1015) self.assertEqual(c.width, 1015) self.assertEqual(c.height, 1) self.assertTrue(c.is_dense) - def testFilterPos(self): fil = self.p.make_statistical_outlier_filter() fil.set_mean_k(50) @@ -688,7 +690,6 @@ def testFilterPos(self): c = fil.filter() self._tpos(c) - def testFilterNeg(self): fil = self.p.make_statistical_outlier_filter() fil.set_mean_k(50) @@ -699,7 +700,6 @@ def testFilterNeg(self): c = fil.filter() self._tneg(c) - def testFilterPosNeg(self): fil = self.p.make_statistical_outlier_filter() fil.set_mean_k(50) @@ -715,12 +715,14 @@ def testFilterPosNeg(self): class TestVoxelGridFilter(unittest.TestCase): def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.p = pcl.load( + "tests" + + os.path.sep + + "table_scene_mug_stereo_textured_noplane.pcd") self.fil = self.p.make_voxel_grid_filter() # self.fil = pcl.VoxelGridFilter() # self.fil.set_InputCloud(self.p) - def testFilter(self): self.fil.set_leaf_size(0.01, 0.01, 0.01) c = self.fil.filter() @@ -729,19 +731,19 @@ def testFilter(self): ### Official Test Base ### -p_65558 = [-0.058448, -0.189095, 0.723415] -p_84737 = [-0.088929, -0.152957, 0.746095] -p_57966 = [0.123646, -0.397528, 1.393187] -p_39543 = [0.560287, -0.545020, 1.602833] -p_17766 = [0.557854, -0.711976, 1.762013] -p_70202 = [0.150500, -0.160329, 0.646596] +p_65558 = [-0.058448, -0.189095, 0.723415] +p_84737 = [-0.088929, -0.152957, 0.746095] +p_57966 = [0.123646, -0.397528, 1.393187] +p_39543 = [0.560287, -0.545020, 1.602833] +p_17766 = [0.557854, -0.711976, 1.762013] +p_70202 = [0.150500, -0.160329, 0.646596] p_102219 = [0.175637, -0.101353, 0.661631] -p_81765 = [0.223189, -0.151714, 0.708332] +p_81765 = [0.223189, -0.151714, 0.708332] # class TESTFastBilateralFilter(unittest.TestCase): # def setUp(self): # self.p = pcl.load("tests" + os.path.sep + "milk_cartoon_all_small_clorox.pcd") -# +# # def testFastBilateralFilter(self): # fbf = pcl.FastBilateralFilter() # fbf.setInputCloud(cloud) @@ -761,47 +763,47 @@ def testFilter(self): # class TESTFastBilateralFilterOMP(unittest.TestCase): -# +# # def setUp(self): # self.p = pcl.load("tests" + os.path.sep + "milk_cartoon_all_small_clorox.pcd") -# +# # sigma_s = [2.341, 5.2342, 10.29380] # sigma_r = [0.0123, 0.023, 0.0345] -# for (size_t i = 0; i < 3; i++) -# FastBilateralFilter fbf; -# fbf.setInputCloud (cloud); -# fbf.setSigmaS (sigma_s[i]); -# fbf.setSigmaR (sigma_r[i]); -# PointCloud::Ptr cloud_filtered (new PointCloud ()); -# fbf.filter (*cloud_filtered); -# -# FastBilateralFilterOMP fbf_omp (0); -# fbf_omp.setInputCloud (cloud); -# fbf_omp.setSigmaS (sigma_s[i]); -# fbf_omp.setSigmaR (sigma_r[i]); -# PointCloud::Ptr cloud_filtered_omp (new PointCloud ()); -# fbf_omp.filter (*cloud_filtered_omp); -# PCL_INFO ("[FastBilateralFilterOMP] filtering took %f ms\n", tt.toc ()); -# -# -# EXPECT_EQ (cloud_filtered_omp->points.size (), cloud_filtered->points.size ()); -# for (size_t j = 0; j < cloud_filtered_omp->size (); ++j) -# { -# if (pcl_isnan (cloud_filtered_omp->at (j).x)) -# EXPECT_TRUE (pcl_isnan (cloud_filtered->at (j).x)); -# else -# { -# EXPECT_NEAR (cloud_filtered_omp->at (j).x, cloud_filtered->at (j).x, 1e-3); -# EXPECT_NEAR (cloud_filtered_omp->at (j).y, cloud_filtered->at (j).y, 1e-3); -# EXPECT_NEAR (cloud_filtered_omp->at (j).z, cloud_filtered->at (j).z, 1e-3); -# } -# } +# for (size_t i = 0; i < 3; i++) +# FastBilateralFilter fbf; +# fbf.setInputCloud (cloud); +# fbf.setSigmaS (sigma_s[i]); +# fbf.setSigmaR (sigma_r[i]); +# PointCloud::Ptr cloud_filtered (new PointCloud ()); +# fbf.filter (*cloud_filtered); +# +# FastBilateralFilterOMP fbf_omp (0); +# fbf_omp.setInputCloud (cloud); +# fbf_omp.setSigmaS (sigma_s[i]); +# fbf_omp.setSigmaR (sigma_r[i]); +# PointCloud::Ptr cloud_filtered_omp (new PointCloud ()); +# fbf_omp.filter (*cloud_filtered_omp); +# PCL_INFO ("[FastBilateralFilterOMP] filtering took %f ms\n", tt.toc ()); +# +# +# EXPECT_EQ (cloud_filtered_omp->points.size (), cloud_filtered->points.size ()); +# for (size_t j = 0; j < cloud_filtered_omp->size (); ++j) +# { +# if (pcl_isnan (cloud_filtered_omp->at (j).x)) +# EXPECT_TRUE (pcl_isnan (cloud_filtered->at (j).x)); +# else +# { +# EXPECT_NEAR (cloud_filtered_omp->at (j).x, cloud_filtered->at (j).x, 1e-3); +# EXPECT_NEAR (cloud_filtered_omp->at (j).y, cloud_filtered->at (j).y, 1e-3); +# EXPECT_NEAR (cloud_filtered_omp->at (j).z, cloud_filtered->at (j).z, 1e-3); +# } +# } def suite(): suite = unittest.TestSuite() - - # Filter + + # Filter suite.addTests(unittest.makeSuite(TestApproximateVoxelGrid)) suite.addTests(unittest.makeSuite(TestConditionalRemoval)) suite.addTests(unittest.makeSuite(TestConditionAnd)) @@ -814,12 +816,12 @@ def suite(): suite.addTests(unittest.makeSuite(TestSegmenterNormal)) # suite.addTests(unittest.makeSuite(TestStatisticalOutlierRemovalFilter)) suite.addTests(unittest.makeSuite(TestVoxelGridFilter)) - + # PointCloudLibrary Official Base Test? # suite.addTests(unittest.makeSuite(TestFastBilateralFilter)) - + return suite + if __name__ == '__main__': unittest.main() - diff --git a/tests/test_io.py b/tests/test_io.py index cff202415..d9b3e13ed 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -34,7 +34,7 @@ def test_pcd_read(): a = np.array(np.mat(SEGDATA, dtype=np.float32)) npts = a.shape[0] - tmp_file = tempfile.mkstemp(suffix='.pcd')[1] + tmp_file = tempfile.mkstemp(suffix='.pcd')[1] with open(tmp_file, "w") as f: f.write(TMPL % {"npts": npts, "data": SEGDATA.replace(";", "")}) @@ -61,7 +61,7 @@ def test_copy(): assert_array_equal(p2.to_array(), a) -### +### # io @@ -114,6 +114,7 @@ def test_pickle(self): p = pickle.loads(s) self.assertTrue(np.all(self.a == p.to_array())) + # copy the output of seg SEGDATA = """ 0.352222 -0.151883 2; -0.106395 -0.397406 1; @@ -175,7 +176,10 @@ def testSegmentPlaneObject(self): class TestSave(unittest.TestCase): def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.p = pcl.load( + "tests" + + os.path.sep + + "table_scene_mug_stereo_textured_noplane.pcd") self.tmpdir = tempfile.mkdtemp(suffix='pcl-test') def tearDown(self): @@ -232,6 +236,6 @@ def suite(): suite.addTests(unittest.makeSuite(TestExceptions)) return suite + if __name__ == '__main__': unittest.main() - diff --git a/tests/test_kdtree.py b/tests/test_kdtree.py index 7b538e7af..8c449800c 100644 --- a/tests/test_kdtree.py +++ b/tests/test_kdtree.py @@ -7,6 +7,7 @@ import pcl import numpy as np + class TestKdTree(unittest.TestCase): def setUp(self): rng = np.random.RandomState(42) @@ -78,6 +79,6 @@ def suite(): # suite.addTests(unittest.makeSuite(TestKdTreeFLANN)) return suite + if __name__ == '__main__': unittest.main() - diff --git a/tests/test_keypoints.py b/tests/test_keypoints.py index 8fe438c94..112be5524 100644 --- a/tests/test_keypoints.py +++ b/tests/test_keypoints.py @@ -45,5 +45,3 @@ def suite(): if __name__ == '__main__': unittest.main() - - diff --git a/tests/test_octree.py b/tests/test_octree.py index d40f5cf5e..0cc08a518 100644 --- a/tests/test_octree.py +++ b/tests/test_octree.py @@ -15,10 +15,10 @@ 4.0, 8.0, 12.2""" # class TestOctreePointCloud(unittest.TestCase): -# +# # def setUp(self): # self.t = pcl.OctreePointCloud(0.1) -# +# # def testLoad(self): # pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") # self.t.set_input_cloud(pc) @@ -41,7 +41,10 @@ class TestOctreePointCloudSearch(unittest.TestCase): def setUp(self): self.t = pcl.OctreePointCloudSearch(0.1) - pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + pc = pcl.load( + "tests" + + os.path.sep + + "table_scene_mug_stereo_textured_noplane.pcd") self.t.set_input_cloud(pc) self.t.define_bounding_box() self.t.add_points_from_input_cloud() @@ -59,17 +62,17 @@ def testRadiusSearch(self): self.assertEqual(len(rs[1]), 19730) # class TestOctreePointCloudChangeDetector(unittest.TestCase): -# +# # def setUp(self): # self.t = pcl.OctreePointCloudSearch(0.1) # pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") # self.t.set_input_cloud(pc) # self.t.define_bounding_box() # self.t.add_points_from_input_cloud() -# +# # def testConstructor(self): # self.assertRaises(ValueError, pcl.OctreePointCloudChangeDetector, 0.) -# +# # def testRadiusSearch(self): # good_point = (0.035296999, -0.074322999, 1.2074) # rs = self.t.radius_search(good_point, 0.5, 1) @@ -88,6 +91,6 @@ def suite(): suite.addTests(unittest.makeSuite(TestOctreePointCloudChangeDetector)) return suite + if __name__ == '__main__': unittest.main() - diff --git a/tests/test_recognition.py b/tests/test_recognition.py index d59a234f5..11c15f84d 100644 --- a/tests/test_recognition.py +++ b/tests/test_recognition.py @@ -16,12 +16,13 @@ # recognition + def suite(): suite = unittest.TestSuite() # recognition # suite.addTests(unittest.makeSuite(...)) return suite + if __name__ == '__main__': unittest.main() - diff --git a/tests/test_registration.py b/tests/test_registration.py index c73d96fc5..30afdc399 100644 --- a/tests/test_registration.py +++ b/tests/test_registration.py @@ -9,45 +9,47 @@ # from pcl.pcl_registration import icp, gicp, icp_nl from pcl import IterativeClosestPoint, GeneralizedIterativeClosestPoint, IterativeClosestPointNonLinear + class TestICP(unittest.TestCase): def setUp(self): # Check if ICP can find a mild rotation. theta = [-.031, .4, .59] - rot_x = [[1, 0, 0], - [0, cos(theta[0]), -sin(theta[0])], - [0, sin(theta[0]), cos(theta[0])]] - rot_y = [[cos(theta[1]), 0, sin(theta[1])], - [0, 1, 0], - [-sin(theta[1]), 0, cos(theta[1])]] - rot_z = [[cos(theta[2]), -sin(theta[1]), 0], - [sin(theta[2]), cos(theta[1]), 0], - [0, 0, 1]] + rot_x = [[1, 0, 0], + [0, cos(theta[0]), -sin(theta[0])], + [0, sin(theta[0]), cos(theta[0])]] + rot_y = [[cos(theta[1]), 0, sin(theta[1])], + [0, 1, 0], + [-sin(theta[1]), 0, cos(theta[1])]] + rot_z = [[cos(theta[2]), -sin(theta[1]), 0], + [sin(theta[2]), cos(theta[1]), 0], + [0, 0, 1]] transform = np.dot(rot_x, np.dot(rot_y, rot_z)) - + source = np.random.RandomState(42).randn(900, 3) self.source = pcl.PointCloud(source.astype(np.float32)) - + target = np.dot(source, transform) self.target = pcl.PointCloud(target.astype(np.float32)) def testICP(self): icp = self.source.make_IterativeClosestPoint() - converged, transf, estimate, fitness = icp.icp(self.source, self.target, max_iter=1000) - + converged, transf, estimate, fitness = icp.icp( + self.source, self.target, max_iter=1000) + self.assertTrue(converged is True) self.assertLess(fitness, .1) - + self.assertTrue(isinstance(transf, np.ndarray)) self.assertEqual(transf.shape, (4, 4)) - + self.assertFalse(np.any(transf[:3] == 0)) assert_equal(transf[3], [0, 0, 0, 1]) - + # XXX I think I misunderstand fitness, it's not equal to the following MSS. # mss = (np.linalg.norm(estimate.to_array() # - self.source.to_array(), axis=1) ** 2).mean() # self.assertLess(mss, 1) - + # print("------", algo) # print("Converged: ", converged, "Estimate: ", estimate, # "Fitness: ", fitness) @@ -56,46 +58,48 @@ def testICP(self): # print("Translation: ", transf[3, 0:3]) # print("---------") + class TestGICP(unittest.TestCase): def setUp(self): # Check if ICP can find a mild rotation. theta = [-.031, .4, .59] - rot_x = [[1, 0, 0], - [0, cos(theta[0]), -sin(theta[0])], - [0, sin(theta[0]), cos(theta[0])]] - rot_y = [[cos(theta[1]), 0, sin(theta[1])], - [0, 1, 0], - [-sin(theta[1]), 0, cos(theta[1])]] - rot_z = [[cos(theta[2]), -sin(theta[1]), 0], - [sin(theta[2]), cos(theta[1]), 0], - [0, 0, 1]] + rot_x = [[1, 0, 0], + [0, cos(theta[0]), -sin(theta[0])], + [0, sin(theta[0]), cos(theta[0])]] + rot_y = [[cos(theta[1]), 0, sin(theta[1])], + [0, 1, 0], + [-sin(theta[1]), 0, cos(theta[1])]] + rot_z = [[cos(theta[2]), -sin(theta[1]), 0], + [sin(theta[2]), cos(theta[1]), 0], + [0, 0, 1]] transform = np.dot(rot_x, np.dot(rot_y, rot_z)) - + source = np.random.RandomState(42).randn(900, 3) self.source = pcl.PointCloud(source.astype(np.float32)) - + target = np.dot(source, transform) self.target = pcl.PointCloud(target.astype(np.float32)) def testGICP(self): gicp = self.source.make_GeneralizedIterativeClosestPoint() - converged, transf, estimate, fitness = gicp.gicp(self.source, self.target, max_iter=1000) - + converged, transf, estimate, fitness = gicp.gicp( + self.source, self.target, max_iter=1000) + self.assertTrue(converged is True) self.assertLess(fitness, .1) - + self.assertTrue(isinstance(transf, np.ndarray)) self.assertEqual(transf.shape, (4, 4)) - + self.assertFalse(np.any(transf[:3] == 0)) assert_equal(transf[3], [0, 0, 0, 1]) - + # XXX I think I misunderstand fitness, it's not equal to the following # MSS. # mss = (np.linalg.norm(estimate.to_array() # - self.source.to_array(), axis=1) ** 2).mean() # self.assertLess(mss, 1) - + # print("------", algo) # print("Converged: ", converged, "Estimate: ", estimate, "Fitness: ", fitness) # print("Rotation: ") @@ -103,40 +107,42 @@ def testGICP(self): # print("Translation: ", transf[3, 0:3]) # print("---------") + class TestICP_NL(unittest.TestCase): def setUp(self): # Check if ICP can find a mild rotation. theta = [-.031, .4, .59] - rot_x = [[1, 0, 0], - [0, cos(theta[0]), -sin(theta[0])], - [0, sin(theta[0]), cos(theta[0])]] - rot_y = [[cos(theta[1]), 0, sin(theta[1])], - [0, 1, 0], - [-sin(theta[1]), 0, cos(theta[1])]] - rot_z = [[cos(theta[2]), -sin(theta[1]), 0], - [sin(theta[2]), cos(theta[1]), 0], - [0, 0, 1]] + rot_x = [[1, 0, 0], + [0, cos(theta[0]), -sin(theta[0])], + [0, sin(theta[0]), cos(theta[0])]] + rot_y = [[cos(theta[1]), 0, sin(theta[1])], + [0, 1, 0], + [-sin(theta[1]), 0, cos(theta[1])]] + rot_z = [[cos(theta[2]), -sin(theta[1]), 0], + [sin(theta[2]), cos(theta[1]), 0], + [0, 0, 1]] transform = np.dot(rot_x, np.dot(rot_y, rot_z)) - + source = np.random.RandomState(42).randn(900, 3) self.source = pcl.PointCloud(source.astype(np.float32)) - + target = np.dot(source, transform) self.target = pcl.PointCloud(target.astype(np.float32)) def testICP_NL(self): icp_nl = self.source.make_IterativeClosestPointNonLinear() - converged, transf, estimate, fitness = icp_nl.icp_nl(self.source, self.target, max_iter=1000) - + converged, transf, estimate, fitness = icp_nl.icp_nl( + self.source, self.target, max_iter=1000) + self.assertTrue(converged is True) self.assertLess(fitness, .1) - + self.assertTrue(isinstance(transf, np.ndarray)) self.assertEqual(transf.shape, (4, 4)) - + self.assertFalse(np.any(transf[:3] == 0)) assert_equal(transf[3], [0, 0, 0, 1]) - + # XXX I think I misunderstand fitness, it's not equal to the following # MSS. # mss = (np.linalg.norm(estimate.to_array() @@ -150,6 +156,7 @@ def testICP_NL(self): # print("Translation: ", transf[3, 0:3]) # print("---------") + def suite(): suite = unittest.TestSuite() suite.addTests(unittest.makeSuite(TestICP)) @@ -157,6 +164,6 @@ def suite(): suite.addTests(unittest.makeSuite(TestICP_NL)) return suite + if __name__ == '__main__': unittest.main() - diff --git a/tests/test_sampleconsensus.py b/tests/test_sampleconsensus.py index 58d1ba36e..27b7bcca3 100644 --- a/tests/test_sampleconsensus.py +++ b/tests/test_sampleconsensus.py @@ -10,6 +10,8 @@ # sample_consensus ### RandomSampleConsensus ### + + class TestRandomSampleConsensus(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) @@ -70,6 +72,6 @@ def suite(): return suite + if __name__ == '__main__': unittest.main() - diff --git a/tests/test_segmentation.py b/tests/test_segmentation.py index 08ef10d27..f93cbbbb4 100644 --- a/tests/test_segmentation.py +++ b/tests/test_segmentation.py @@ -9,6 +9,8 @@ # segmentation ### ConditionalEuclideanClustering(1.7.2) ### + + class TestConditionalEuclideanClustering(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) @@ -58,4 +60,3 @@ def suite(): if __name__ == '__main__': unittest.main() - diff --git a/tests/test_surface.py b/tests/test_surface.py index 5734e9875..594cfab16 100644 --- a/tests/test_surface.py +++ b/tests/test_surface.py @@ -39,6 +39,6 @@ def suite(): suite.addTests(unittest.makeSuite(TestMovingLeastSquares)) return suite + if __name__ == '__main__': unittest.main() - From a5de49cdae5be520e64b7b70bab80e68d7389517 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 13 Oct 2017 17:41:49 +0900 Subject: [PATCH 14/80] pxi comment add testcode modified --- .../SampleConsensus/RandomSampleConsensus.pxi | 1 + .../SampleConsensus/SampleConsensusModel.pxi | 1 + .../SampleConsensusModelCylinder.pxi | 1 + .../SampleConsensusModelLine.pxi | 1 + .../SampleConsensusModelPlane.pxi | 1 + .../SampleConsensusModelRegistration.pxi | 1 + .../SampleConsensusModelSphere.pxi | 5 +- .../SampleConsensusModelStick.pxi | 1 + pcl/pxi/pxiInclude_172.pxi | 4 +- setup.py | 6 +- tests/test_octree.py | 96 ------------------- tests/test_registration.py | 62 ++++++++++++ tests/test_sampleconsensus.py | 25 ++++- tests/test_segmentation.py | 11 ++- tests/test_surface.py | 2 + 15 files changed, 109 insertions(+), 109 deletions(-) delete mode 100644 tests/test_octree.py diff --git a/pcl/pxi/SampleConsensus/RandomSampleConsensus.pxi b/pcl/pxi/SampleConsensus/RandomSampleConsensus.pxi index 4697e7278..f05609262 100644 --- a/pcl/pxi/SampleConsensus/RandomSampleConsensus.pxi +++ b/pcl/pxi/SampleConsensus/RandomSampleConsensus.pxi @@ -7,6 +7,7 @@ cimport pcl_sample_consensus as pcl_sac cdef class RandomSampleConsensus: """ + represents an implementation of the RANSAC (RAndom SAmple Consensus) algorithm. """ cdef pcl_sac.RandomSampleConsensus_t *me diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModel.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModel.pxi index 0af202047..7a9ee9599 100644 --- a/pcl/pxi/SampleConsensus/SampleConsensusModel.pxi +++ b/pcl/pxi/SampleConsensus/SampleConsensusModel.pxi @@ -6,6 +6,7 @@ from boost_shared_ptr cimport sp_assign cdef class SampleConsensusModel: """ + represents the base model class. """ # cdef pcl_sac.SampleConsensusModel_t *me diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelCylinder.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelCylinder.pxi index 055b4ae94..ba039e75c 100644 --- a/pcl/pxi/SampleConsensus/SampleConsensusModelCylinder.pxi +++ b/pcl/pxi/SampleConsensus/SampleConsensusModelCylinder.pxi @@ -4,6 +4,7 @@ cimport pcl_sample_consensus as pcl_sac cdef class SampleConsensusModelCylinder: """ + defines a model for 3D cylinder segmentation class. """ def __cinit__(self, PointCloud pc not None): diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelLine.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelLine.pxi index b21e2d979..eca52649f 100644 --- a/pcl/pxi/SampleConsensus/SampleConsensusModelLine.pxi +++ b/pcl/pxi/SampleConsensus/SampleConsensusModelLine.pxi @@ -4,6 +4,7 @@ cimport pcl_sample_consensus as pcl_sac cdef class SampleConsensusModelLine: """ + defines a model for 3D line segmentation class. """ def __cinit__(self, PointCloud pc not None): diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelPlane.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelPlane.pxi index dd98ae94b..c142541d8 100644 --- a/pcl/pxi/SampleConsensus/SampleConsensusModelPlane.pxi +++ b/pcl/pxi/SampleConsensus/SampleConsensusModelPlane.pxi @@ -4,6 +4,7 @@ cimport pcl_sample_consensus as pcl_sac cdef class SampleConsensusModelPlane: """ + defines a model for 3D plane segmentation class. """ # cdef pcl_sac.SampleConsensusModelPlane_t *me diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelRegistration.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelRegistration.pxi index 889040a26..fc87e6008 100644 --- a/pcl/pxi/SampleConsensus/SampleConsensusModelRegistration.pxi +++ b/pcl/pxi/SampleConsensus/SampleConsensusModelRegistration.pxi @@ -4,6 +4,7 @@ cimport pcl_sample_consensus as pcl_sac cdef class SampleConsensusModelRegistration: """ + defines a model for Point-To-Point registration outlier rejection class. """ def __cinit__(self, PointCloud pc not None): diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelSphere.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelSphere.pxi index 9807654cb..a26a73689 100644 --- a/pcl/pxi/SampleConsensus/SampleConsensusModelSphere.pxi +++ b/pcl/pxi/SampleConsensus/SampleConsensusModelSphere.pxi @@ -6,14 +6,11 @@ from boost_shared_ptr cimport sp_assign cdef class SampleConsensusModelSphere: """ + define a model for 3D sphere segmentation class. """ # cdef pcl_sac.SampleConsensusModelSphere_t *me def __cinit__(self, PointCloud pc not None): - # NG - # self.me = new pcl_sac.SampleConsensusModelSphere_t() - # self.me = new pcl_sac.SampleConsensusModelSphere_t(pc.thisptr_shared) - # shared_ptr # NG # sp_assign(self.thisptr_shared, new pcl_sac.SampleConsensusModelSphere_t(pc.thisptr_shared)) sp_assign(self.thisptr_shared, new pcl_sac.SampleConsensusModelSphere[cpp.PointXYZ](pc.thisptr_shared)) diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelStick.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelStick.pxi index 5143cc9c5..574fd1e2b 100644 --- a/pcl/pxi/SampleConsensus/SampleConsensusModelStick.pxi +++ b/pcl/pxi/SampleConsensus/SampleConsensusModelStick.pxi @@ -4,6 +4,7 @@ cimport pcl_sample_consensus as pcl_sac cdef class SampleConsensusModelStick: """ + define a model for 3D stick segmentation class. """ def __cinit__(self, PointCloud pc not None): diff --git a/pcl/pxi/pxiInclude_172.pxi b/pcl/pxi/pxiInclude_172.pxi index 19580dbeb..75c38d401 100644 --- a/pcl/pxi/pxiInclude_172.pxi +++ b/pcl/pxi/pxiInclude_172.pxi @@ -52,8 +52,8 @@ include "SampleConsensus/SampleConsensusModelStick.pxi" include "Features/NormalEstimation_172.pxi" include "Features/VFHEstimation_172.pxi" include "Features/IntegralImageNormalEstimation_172.pxi" -# package ng -# include "Features/MomentOfInertiaEstimation_172.pxi" +# package ng? +include "Features/MomentOfInertiaEstimation_172.pxi" # keyPoint include "KeyPoint/HarrisKeypoint3D_172.pxi" diff --git a/setup.py b/setup.py index 8839140d1..68b203a96 100644 --- a/setup.py +++ b/setup.py @@ -587,21 +587,21 @@ def pkgconfig_win(flag, cut): if pcl_version == '-1.6': module = [Extension("pcl._pcl", ["pcl/_pcl.pyx", "pcl/minipcl.cpp", "pcl/ProjectInliers.cpp"], language="c++", **ext_args), - Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), + # Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), # Extension("pcl.pcl_grabber", ["pcl/pcl_grabber.pyx", "pcl/grabber_callback.cpp"], language="c++", **ext_args), # debug # gdb_debug=True, ] elif pcl_version == '-1.7': module = [Extension("pcl._pcl", ["pcl/_pcl_172.pyx", "pcl/minipcl.cpp", "pcl/ProjectInliers.cpp"], language="c++", **ext_args), - Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), + # Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), # Extension("pcl.pcl_grabber", ["pcl/pcl_grabber.pyx", "pcl/grabber_callback.cpp"], language="c++", **ext_args), # debug # gdb_debug=True, ] elif pcl_version == '-1.8': module = [Extension("pcl._pcl", ["pcl/_pcl_180.pyx", "pcl/minipcl.cpp", "pcl/ProjectInliers.cpp"], language="c++", **ext_args), - Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), + # Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args), # Extension("pcl.pcl_grabber", ["pcl/pcl_grabber.pyx", "pcl/grabber_callback.cpp"], language="c++", **ext_args), # debug # gdb_debug=True, diff --git a/tests/test_octree.py b/tests/test_octree.py deleted file mode 100644 index 0cc08a518..000000000 --- a/tests/test_octree.py +++ /dev/null @@ -1,96 +0,0 @@ -import os.path -import pickle -import shutil -import tempfile -import unittest - -import pcl -import numpy as np - -_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] -_DATA = """0.0, 0.0, 0.2; - 1.0, 2.0, 3.2; - 2.0, 4.0, 6.2; - 3.0, 6.0, 9.2; - 4.0, 8.0, 12.2""" - -# class TestOctreePointCloud(unittest.TestCase): -# -# def setUp(self): -# self.t = pcl.OctreePointCloud(0.1) -# -# def testLoad(self): -# pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.t.set_input_cloud(pc) -# self.t.define_bounding_box() -# self.t.add_points_from_input_cloud() -# good_point = (0.035296999, -0.074322999, 1.2074) -# rs = self.t.is_voxel_occupied_at_point(good_point) -# self.assertTrue(rs) -# bad_point = (0.5, 0.5, 0.5) -# rs = self.t.is_voxel_occupied_at_point(bad_point) -# self.assertFalse(rs) -# voxels_len = 44 -# self.assertEqual(len(self.t.get_occupied_voxel_centers()), voxels_len) -# self.t.delete_voxel_at_point(good_point) -# self.assertEqual( -# len(self.t.get_occupied_voxel_centers()), voxels_len - 1) - - -class TestOctreePointCloudSearch(unittest.TestCase): - - def setUp(self): - self.t = pcl.OctreePointCloudSearch(0.1) - pc = pcl.load( - "tests" + - os.path.sep + - "table_scene_mug_stereo_textured_noplane.pcd") - self.t.set_input_cloud(pc) - self.t.define_bounding_box() - self.t.add_points_from_input_cloud() - - def testConstructor(self): - self.assertRaises(ValueError, pcl.OctreePointCloudSearch, 0.) - - def testRadiusSearch(self): - good_point = (0.035296999, -0.074322999, 1.2074) - rs = self.t.radius_search(good_point, 0.5, 1) - self.assertEqual(len(rs[0]), 1) - self.assertEqual(len(rs[1]), 1) - rs = self.t.radius_search(good_point, 0.5) - self.assertEqual(len(rs[0]), 19730) - self.assertEqual(len(rs[1]), 19730) - -# class TestOctreePointCloudChangeDetector(unittest.TestCase): -# -# def setUp(self): -# self.t = pcl.OctreePointCloudSearch(0.1) -# pc = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") -# self.t.set_input_cloud(pc) -# self.t.define_bounding_box() -# self.t.add_points_from_input_cloud() -# -# def testConstructor(self): -# self.assertRaises(ValueError, pcl.OctreePointCloudChangeDetector, 0.) -# -# def testRadiusSearch(self): -# good_point = (0.035296999, -0.074322999, 1.2074) -# rs = self.t.radius_search(good_point, 0.5, 1) -# self.assertEqual(len(rs[0]), 1) -# self.assertEqual(len(rs[1]), 1) -# rs = self.t.radius_search(good_point, 0.5) -# self.assertEqual(len(rs[0]), 19730) -# self.assertEqual(len(rs[1]), 19730) - - -def suite(): - suite = unittest.TestSuite() - # octree - suite.addTests(unittest.makeSuite(TestOctreePointCloud)) - suite.addTests(unittest.makeSuite(TestOctreePointCloudSearch)) - suite.addTests(unittest.makeSuite(TestOctreePointCloudChangeDetector)) - return suite - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/test_registration.py b/tests/test_registration.py index 30afdc399..aa0d26349 100644 --- a/tests/test_registration.py +++ b/tests/test_registration.py @@ -157,6 +157,68 @@ def testICP_NL(self): # print("---------") + +_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] +_DATA = """0.0, 0.0, 0.2; + 1.0, 2.0, 3.2; + 2.0, 4.0, 6.2; + 3.0, 6.0, 9.2; + 4.0, 8.0, 12.2""" + +# registration +### GeneralizedIterativeClosestPoint ### +class TestGeneralizedIterativeClosestPoint(unittest.TestCase): + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + self.reg = pcl.GeneralizedIterativeClosestPoint() + + +### IterativeClosestPoint ### +class TestIterativeClosestPoint(unittest.TestCase): + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + self.reg = pcl.IterativeClosestPoint() + +# def set_InputTarget(self, _pcl.PointCloud cloud): +# self.me.setInputTarget (cloud.thisptr_shared) +# pass +# +# # def get_Resolution(self): +# # return self.me.getResolution() +# +# # def get_StepSize(self): +# # return self.me.getStepSize() +# +# # def set_StepSize(self, double step_size): +# # self.me.setStepSize(step_size) +# +# # def get_OulierRatio(self): +# # return self.me.getOulierRatio() +# +# # def set_OulierRatio(self, double outlier_ratio): +# # self.me.setOulierRatio(outlier_ratio) +# +# # def get_TransformationProbability(self): +# # return self.me.getTransformationProbability() +# +# # def get_FinalNumIteration(self): +# # return self.me.getFinalNumIteration() + + +### IterativeClosestPointNonLinear ### +class TestIterativeClosestPointNonLinear(unittest.TestCase): + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + self.reg = pcl.IterativeClosestPointNonLinear() + + +### NormalDistributionsTransform ### +class TestNormalDistributionsTransform(unittest.TestCase): + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + self.reg = pcl.IterativeClosestPointNonLinear() + + def suite(): suite = unittest.TestSuite() suite.addTests(unittest.makeSuite(TestICP)) diff --git a/tests/test_sampleconsensus.py b/tests/test_sampleconsensus.py index 27b7bcca3..e8f36a974 100644 --- a/tests/test_sampleconsensus.py +++ b/tests/test_sampleconsensus.py @@ -10,53 +10,74 @@ # sample_consensus ### RandomSampleConsensus ### - - class TestRandomSampleConsensus(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.smp_con = pcl.RandomSampleConsensus() + + +# def test_computeModel +# def computeModel(self): +# self.me.computeModel(0) +# +# # base Class(SampleConsensus) +# def set_DistanceThreshold(self, double param): +# self.me.setDistanceThreshold(param) +# +# # base Class(SampleConsensus) +# def get_Inliers(self): +# cdef vector[int] inliers +# self.me.getInliers(inliers) +# return inliers ### SampleConsensusModel ### class TestSampleConsensus(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.smp_con = pcl.RandomSampleConsensus() ### SampleConsensusModelCylinder ### class TestSampleConsensusModelCylinder(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.smp_con = pcl.RandomSampleConsensus() ### SampleConsensusModelLine ### class TestSampleConsensusModelLine(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.smp_con = pcl.RandomSampleConsensus() ### SampleConsensusModelPlane ### class TestSampleConsensusModelPlane(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.smp_con = pcl.RandomSampleConsensus() ### SampleConsensusModelRegistration ### class TestSampleConsensusModelRegistration(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.smp_con = pcl.RandomSampleConsensus() ### SampleConsensusModelSphere ### class TestSampleConsensusModelSphere(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.smp_con = pcl.RandomSampleConsensus() ### SampleConsensusModelStick ### class TestSampleConsensusModelStick(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.smp_con = pcl.RandomSampleConsensus() def suite(): diff --git a/tests/test_segmentation.py b/tests/test_segmentation.py index f93cbbbb4..2f2801fa5 100644 --- a/tests/test_segmentation.py +++ b/tests/test_segmentation.py @@ -8,46 +8,52 @@ import numpy as np # segmentation -### ConditionalEuclideanClustering(1.7.2) ### - +### ConditionalEuclideanClustering(1.7.2) ### class TestConditionalEuclideanClustering(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.segment = pcl.ConditionalEuclideanClustering() ### EuclideanClusterExtraction ### class TestEuclideanClusterExtraction(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.segment = pcl.EuclideanClusterExtraction() ### MinCutSegmentation(1.7.2) ### class TestMinCutSegmentation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.segment = pcl.MinCutSegmentation() ### ProgressiveMorphologicalFilter ### class TestProgressiveMorphologicalFilter(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.segment = pcl.ProgressiveMorphologicalFilter() ### Segmentation ### class TestSegmentation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.segment = pcl.Segmentation() ### SegmentationNormal ### class TestSegmentationNormal(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.segment = pcl.SegmentationNormal() def suite(): suite = unittest.TestSuite() + # segmentation suite.addTests(unittest.makeSuite(TestConditionalEuclideanClustering)) suite.addTests(unittest.makeSuite(TestEuclideanClusterExtraction)) @@ -55,6 +61,7 @@ def suite(): suite.addTests(unittest.makeSuite(TestProgressiveMorphologicalFilter)) suite.addTests(unittest.makeSuite(TestSegmentation)) suite.addTests(unittest.makeSuite(TestSegmentationNormal)) + return suite diff --git a/tests/test_surface.py b/tests/test_surface.py index 594cfab16..6df920b8a 100644 --- a/tests/test_surface.py +++ b/tests/test_surface.py @@ -34,9 +34,11 @@ def testFilter(self): def suite(): suite = unittest.TestSuite() + # surface suite.addTests(unittest.makeSuite(TestConcaveHull)) suite.addTests(unittest.makeSuite(TestMovingLeastSquares)) + return suite From 396ad338b0eadcfd816bbd408bbb7e3ebbc67519 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Thu, 26 Oct 2017 18:57:31 +0900 Subject: [PATCH 15/80] features test (MomentOfInertiaEstimation modified) --- bld.bat | 3 +- build.sh | 3 + pcl/eigen.pxd | 12 +- .../IntegralImageNormalEstimation.pxi | 15 +- .../MomentOfInertiaEstimation_172.pxi | 106 +++++-- .../MomentOfInertiaEstimation_180.pxi | 106 +++++-- tests/test_features.py | 263 ++++++++++++------ tests/test_surface.py | 26 +- 8 files changed, 396 insertions(+), 138 deletions(-) create mode 100644 build.sh diff --git a/bld.bat b/bld.bat index 2e3fe0714..e6ae9954c 100644 --- a/bld.bat +++ b/bld.bat @@ -1,4 +1,3 @@ python setup.py build_ext -i python setup.py install -python tests\test_pcl.py -python tests\test_registration.py +nosetests diff --git a/build.sh b/build.sh new file mode 100644 index 000000000..a853eb4c9 --- /dev/null +++ b/build.sh @@ -0,0 +1,3 @@ +python setup.py build_ext -i +python setup.py install +nosetests \ No newline at end of file diff --git a/pcl/eigen.pxd b/pcl/eigen.pxd index f33390da9..5ae6684fc 100644 --- a/pcl/eigen.pxd +++ b/pcl/eigen.pxd @@ -50,21 +50,29 @@ cdef extern from "Eigen/Eigen" namespace "Eigen" nogil: cdef cppclass Matrix4f: Matrix4f() except + float *data() + float& element "operator()"(int row, int col) cdef cppclass Matrix3f: Matrix3f() except + float coeff(int row, int col) float *data() - double& element "operator()"(int row,int col) + float& element "operator()"(int row, int col) cdef cppclass Vector4f: + Vector4f() except + float *data() + float& element "operator()"(int row, int col) cdef cppclass Vector3f: + Vector3f() except + float *data() + float& element "operator()"(int row, int col) cdef cppclass Vector3i: + Vector3i() except + int *data() + int& element "operator()"(int row, int col) cdef cppclass Vector3d: Vector3d() except + Vector3d(double c0, double c1, double c2) except + - double coeff(int row, int col) + double coeff(int row, int col) + double& element "operator()"(int row, int col) cdef cppclass Quaternionf: float w() float x() diff --git a/pcl/pxi/Features/IntegralImageNormalEstimation.pxi b/pcl/pxi/Features/IntegralImageNormalEstimation.pxi index bd151fa85..71085827e 100644 --- a/pcl/pxi/Features/IntegralImageNormalEstimation.pxi +++ b/pcl/pxi/Features/IntegralImageNormalEstimation.pxi @@ -21,11 +21,9 @@ cdef class IntegralImageNormalEstimation: # cdef pcl_ftr.IntegralImageNormalEstimation_t *me def __cinit__(self, PointCloud pc not None): - print ('__cinit__ start') sp_assign(self.thisptr_shared, new pcl_ftr.IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal]()) # NG : Reference Count self.thisptr().setInputCloud(pc.thisptr_shared) - print ('__cinit__ end') # self.me = new pcl_ftr.IntegralImageNormalEstimation_t() # self.me.setInputCloud(pc.thisptr_shared) # pass @@ -52,15 +50,12 @@ cdef class IntegralImageNormalEstimation: def set_NormalSmoothingSize(self, double param): self.thisptr().setNormalSmoothingSize(param) - def compute(self, PointCloud pc not None): - # cdef PointCloud_PointNormal normal = PointCloud_PointNormal() - # normal = PointCloud_PointNormal() + def compute(self): normal = PointCloud_Normal() - # NG : No Python object - # normal = PointCloud_Normal(pc) cdef cpp.PointCloud_Normal_t *cPointCloudNormal = normal.thisptr() + print ('3') - # print (str(self.thisptr().size)) + print (cPointCloudNormal) # compute function based Features class # NG @@ -71,7 +66,8 @@ cdef class IntegralImageNormalEstimation: # self.thisptr().compute ( deref(cPointCloudNormal.makeShared().get())) # NG : (Exception) # self.thisptr().compute (deref(cPointCloudNormal.makeShared().get())) - self.thisptr().compute (deref(cPointCloudNormal)) + # self.thisptr().compute (deref(cPointCloudNormal)) + self.thisptr().compute (cPointCloudNormal) print ('4') return normal @@ -95,3 +91,4 @@ cdef class IntegralImageNormalEstimation: print ('4') return normal + diff --git a/pcl/pxi/Features/MomentOfInertiaEstimation_172.pxi b/pcl/pxi/Features/MomentOfInertiaEstimation_172.pxi index f6087b7ee..13f5aa7d9 100644 --- a/pcl/pxi/Features/MomentOfInertiaEstimation_172.pxi +++ b/pcl/pxi/Features/MomentOfInertiaEstimation_172.pxi @@ -29,6 +29,9 @@ cdef class MomentOfInertiaEstimation: def __dealloc__(self): del self.me + def set_InputCloud(self, PointCloud pc not None): + (self.me).setInputCloud(pc.thisptr_shared) + # feature_extractor.getMomentOfInertia (moment_of_inertia); # feature_extractor.getEccentricity (eccentricity); # feature_extractor.getAABB (min_point_AABB, max_point_AABB); @@ -71,13 +74,53 @@ cdef class MomentOfInertiaEstimation: return result1, result2 @cython.boundscheck(False) - # def get_OBB (self): - # cdef cpp.PointXYZ min_point_OBB - # cdef cpp.PointXYZ max_point_OBB - # cdef cpp.PointXYZ position_OBB - # cdef eigen3.Matrix3f rotational_matrix_OBB - # self.me.getOBB (min_point_OBB, max_point_OBB, position_OBB, rotational_matrix_OBB) + def get_OBB (self): + cdef cpp.PointXYZ min_point_OBB + cdef cpp.PointXYZ max_point_OBB + cdef cpp.PointXYZ position_OBB + cdef eigen3.Matrix3f rotational_matrix_OBB + self.me.getOBB (min_point_OBB, max_point_OBB, position_OBB, rotational_matrix_OBB) + # NG : Convert Python object # return min_point_OBB, max_point_OBB, position_OBB, rotational_matrix_OBB + cdef cnp.npy_intp n = 1 + # cdef cnp.ndarray[cnp.float32_t, ndim=4, mode="c"] result + result1 = np.empty((n, 3), dtype=np.float32) + for i in range(n): + result1[i, 0] = min_point_OBB.x + result1[i, 1] = min_point_OBB.y + result1[i, 2] = min_point_OBB.z + pcl_min_point_OBB = PointCloud(result1) + + result2 = np.empty((n, 3), dtype=np.float32) + for i in range(n): + result2[i, 0] = max_point_OBB.x + result2[i, 1] = max_point_OBB.y + result2[i, 2] = max_point_OBB.z + pcl_max_point_OBB = PointCloud(result2) + + result3 = np.empty((n, 3), dtype=np.float32) + for i in range(n): + result3[i, 0] = position_OBB.x + result3[i, 1] = position_OBB.y + result3[i, 2] = position_OBB.z + pcl_position_OBB = PointCloud(result3) + + # cdef np.ndarray[np.double_t, ndim=2] np_rotational_matrix_OBB = np.empty((3,3), dtype=np.float64) + # cdef np.ndarray[np.float32_t, ndim=2] np_rotational_matrix_OBB = np.empty((3,3), dtype=np.float32) + np_rotational_matrix_OBB = np.empty((3,3), dtype=np.float32) + # np_rotational_matrix_OBB[0,0] = rotational_matrix_OBB(0,0); np_rotational_matrix_OBB[0,1] = rotational_matrix_OBB(0,1); np_rotational_matrix_OBB[0,2] = rotational_matrix_OBB(0,2); + # np_rotational_matrix_OBB[1,0] = rotational_matrix_OBB(1,0); np_rotational_matrix_OBB[1,1] = rotational_matrix_OBB(1,1); np_rotational_matrix_OBB[1,2] = rotational_matrix_OBB(1,2); + # np_rotational_matrix_OBB[2,0] = rotational_matrix_OBB(2,0); np_rotational_matrix_OBB[2,1] = rotational_matrix_OBB(2,1); np_rotational_matrix_OBB[2,2] = rotational_matrix_OBB(2,2); + np_rotational_matrix_OBB[0, 0] = rotational_matrix_OBB.element(0, 0) + np_rotational_matrix_OBB[0, 1] = rotational_matrix_OBB.element(0, 1) + np_rotational_matrix_OBB[0, 2] = rotational_matrix_OBB.element(0, 2) + np_rotational_matrix_OBB[1, 0] = rotational_matrix_OBB.element(1, 0) + np_rotational_matrix_OBB[1, 1] = rotational_matrix_OBB.element(1, 1) + np_rotational_matrix_OBB[1, 2] = rotational_matrix_OBB.element(1, 2) + np_rotational_matrix_OBB[2, 0] = rotational_matrix_OBB.element(2, 0) + np_rotational_matrix_OBB[2, 1] = rotational_matrix_OBB.element(2, 1) + np_rotational_matrix_OBB[2, 2] = rotational_matrix_OBB.element(2, 2) + return result1, result2, result3, np_rotational_matrix_OBB def get_EigenValues (self): cdef float major_value = 0.0 @@ -86,15 +129,46 @@ cdef class MomentOfInertiaEstimation: self.me.getEigenValues (major_value, middle_value, minor_value) return major_value, middle_value, minor_value - # def get_EigenVectors (self): - # # cdef eigen3.Vector3f major_vector - # # cdef eigen3.Vector3f middle_vector - # # cdef eigen3.Vector3f minor_vector - # self.me.getEigenVectors (major_vector, middle_vector, minor_vector) - # return major_vector, middle_vector, minor_vector + def get_EigenVectors (self): + cdef eigen3.Vector3f major_vector + cdef eigen3.Vector3f middle_vector + cdef eigen3.Vector3f minor_vector + self.me.getEigenVectors (major_vector, middle_vector, minor_vector) + + # cdef np.ndarray[np.float32_t, ndim=2] np_major_vec = np.empty((1,3), dtype=np.float32) + np_major_vec = np.empty((1,3), dtype=np.float32) + np_major_vec[0,0] = major_vector.element(0,0) + np_major_vec[0,1] = major_vector.element(1,1) + np_major_vec[0,2] = major_vector.element(2,2) + + # cdef np.ndarray[np.float32_t, ndim=2] np_middle_vec = np.empty((1,3), dtype=np.float32) + np_middle_vec = np.empty((1,3), dtype=np.float32) + np_middle_vec[0,0] = middle_vector.element(0,0) + np_middle_vec[0,1] = middle_vector.element(1,1) + np_middle_vec[0,2] = middle_vector.element(2,2) + + # cdef np.ndarray[np.float32_t, ndim=2] np_minor_vec = np.empty((1,3), dtype=np.float32) + np_minor_vec = np.empty((1,3), dtype=np.float32) + np_minor_vec[0,0] = minor_vector.element(0,0) + np_minor_vec[0,1] = minor_vector.element(1,1) + np_minor_vec[0,2] = minor_vector.element(2,2) + + return np_major_vec, np_middle_vec, np_minor_vec + + def get_MassCenter (self): + cdef eigen3.Vector3f mass_center + self.me.getMassCenter (mass_center) + + # cdef np.ndarray[np.float32_t, ndim=2] np_mass_center_vec = np.empty((1,3), dtype=np.float32) + np_mass_center_vec = np.empty((1,3), dtype=np.float32) + np_mass_center_vec[0, 0] = mass_center.element(0, 0) + # np_mass_center_vec[0, 1] = mass_center.element(0, 1) + np_mass_center_vec[0, 1] = mass_center.element(1, 1) + # np_mass_center_vec[0, 2] = mass_center.element(0, 2) + np_mass_center_vec[0, 2] = mass_center.element(2, 2) + + return np_mass_center_vec - # def get_MassCenter (self): - # # cdef eigen3.Vector3f mass_center - # self.me.getMassCenter (mass_center) - # return mass_center + def Compute(self): + self.me.compute () diff --git a/pcl/pxi/Features/MomentOfInertiaEstimation_180.pxi b/pcl/pxi/Features/MomentOfInertiaEstimation_180.pxi index 1dbd8bfe6..b6a1230c2 100644 --- a/pcl/pxi/Features/MomentOfInertiaEstimation_180.pxi +++ b/pcl/pxi/Features/MomentOfInertiaEstimation_180.pxi @@ -29,6 +29,9 @@ cdef class MomentOfInertiaEstimation: def __dealloc__(self): del self.me + def set_InputCloud(self, PointCloud pc not None): + (self.me).setInputCloud(pc.thisptr_shared) + # feature_extractor.getMomentOfInertia (moment_of_inertia); # feature_extractor.getEccentricity (eccentricity); # feature_extractor.getAABB (min_point_AABB, max_point_AABB); @@ -71,13 +74,53 @@ cdef class MomentOfInertiaEstimation: return result1, result2 @cython.boundscheck(False) - # def get_OBB (self): - # cdef cpp.PointXYZ min_point_OBB - # cdef cpp.PointXYZ max_point_OBB - # cdef cpp.PointXYZ position_OBB - # cdef eigen3.Matrix3f rotational_matrix_OBB - # self.me.getOBB (min_point_OBB, max_point_OBB, position_OBB, rotational_matrix_OBB) + def get_OBB (self): + cdef cpp.PointXYZ min_point_OBB + cdef cpp.PointXYZ max_point_OBB + cdef cpp.PointXYZ position_OBB + cdef eigen3.Matrix3f rotational_matrix_OBB + self.me.getOBB (min_point_OBB, max_point_OBB, position_OBB, rotational_matrix_OBB) + # NG : Convert Python object # return min_point_OBB, max_point_OBB, position_OBB, rotational_matrix_OBB + cdef cnp.npy_intp n = 1 + # cdef cnp.ndarray[cnp.float32_t, ndim=4, mode="c"] result + result1 = np.empty((n, 3), dtype=np.float32) + for i in range(n): + result1[i, 0] = min_point_OBB.x + result1[i, 1] = min_point_OBB.y + result1[i, 2] = min_point_OBB.z + pcl_min_point_OBB = PointCloud(result1) + + result2 = np.empty((n, 3), dtype=np.float32) + for i in range(n): + result2[i, 0] = max_point_OBB.x + result2[i, 1] = max_point_OBB.y + result2[i, 2] = max_point_OBB.z + pcl_max_point_OBB = PointCloud(result2) + + result3 = np.empty((n, 3), dtype=np.float32) + for i in range(n): + result3[i, 0] = position_OBB.x + result3[i, 1] = position_OBB.y + result3[i, 2] = position_OBB.z + pcl_position_OBB = PointCloud(result3) + + # cdef np.ndarray[np.double_t, ndim=2] np_rotational_matrix_OBB = np.empty((3,3), dtype=np.float64) + # cdef np.ndarray[np.float32_t, ndim=2] np_rotational_matrix_OBB = np.empty((3,3), dtype=np.float32) + np_rotational_matrix_OBB = np.empty((3,3), dtype=np.float32) + # np_rotational_matrix_OBB[0,0] = rotational_matrix_OBB(0,0); np_rotational_matrix_OBB[0,1] = rotational_matrix_OBB(0,1); np_rotational_matrix_OBB[0,2] = rotational_matrix_OBB(0,2); + # np_rotational_matrix_OBB[1,0] = rotational_matrix_OBB(1,0); np_rotational_matrix_OBB[1,1] = rotational_matrix_OBB(1,1); np_rotational_matrix_OBB[1,2] = rotational_matrix_OBB(1,2); + # np_rotational_matrix_OBB[2,0] = rotational_matrix_OBB(2,0); np_rotational_matrix_OBB[2,1] = rotational_matrix_OBB(2,1); np_rotational_matrix_OBB[2,2] = rotational_matrix_OBB(2,2); + np_rotational_matrix_OBB[0, 0] = rotational_matrix_OBB.element(0, 0) + np_rotational_matrix_OBB[0, 1] = rotational_matrix_OBB.element(0, 1) + np_rotational_matrix_OBB[0, 2] = rotational_matrix_OBB.element(0, 2) + np_rotational_matrix_OBB[1, 0] = rotational_matrix_OBB.element(1, 0) + np_rotational_matrix_OBB[1, 1] = rotational_matrix_OBB.element(1, 1) + np_rotational_matrix_OBB[1, 2] = rotational_matrix_OBB.element(1, 2) + np_rotational_matrix_OBB[2, 0] = rotational_matrix_OBB.element(2, 0) + np_rotational_matrix_OBB[2, 1] = rotational_matrix_OBB.element(2, 1) + np_rotational_matrix_OBB[2, 2] = rotational_matrix_OBB.element(2, 2) + return result1, result2, result3, np_rotational_matrix_OBB def get_EigenValues (self): cdef float major_value = 0.0 @@ -86,15 +129,46 @@ cdef class MomentOfInertiaEstimation: self.me.getEigenValues (major_value, middle_value, minor_value) return major_value, middle_value, minor_value - # def get_EigenVectors (self): - # # cdef eigen3.Vector3f major_vector - # # cdef eigen3.Vector3f middle_vector - # # cdef eigen3.Vector3f minor_vector - # self.me.getEigenVectors (major_vector, middle_vector, minor_vector) - # return major_vector, middle_vector, minor_vector + def get_EigenVectors (self): + cdef eigen3.Vector3f major_vector + cdef eigen3.Vector3f middle_vector + cdef eigen3.Vector3f minor_vector + self.me.getEigenVectors (major_vector, middle_vector, minor_vector) + + # cdef np.ndarray[np.float32_t, ndim=2] np_major_vec = np.empty((1,3), dtype=np.float32) + np_major_vec = np.empty((1,3), dtype=np.float32) + np_major_vec[0,0] = major_vector.element(0,0) + np_major_vec[0,1] = major_vector.element(1,1) + np_major_vec[0,2] = major_vector.element(2,2) + + # cdef np.ndarray[np.float32_t, ndim=2] np_middle_vec = np.empty((1,3), dtype=np.float32) + np_middle_vec = np.empty((1,3), dtype=np.float32) + np_middle_vec[0,0] = middle_vector.element(0,0) + np_middle_vec[0,1] = middle_vector.element(1,1) + np_middle_vec[0,2] = middle_vector.element(2,2) + + # cdef np.ndarray[np.float32_t, ndim=2] np_minor_vec = np.empty((1,3), dtype=np.float32) + np_minor_vec = np.empty((1,3), dtype=np.float32) + np_minor_vec[0,0] = minor_vector.element(0,0) + np_minor_vec[0,1] = minor_vector.element(1,1) + np_minor_vec[0,2] = minor_vector.element(2,2) + + return np_major_vec, np_middle_vec, np_minor_vec + + def get_MassCenter (self): + cdef eigen3.Vector3f mass_center + self.me.getMassCenter (mass_center) + + # cdef np.ndarray[np.float32_t, ndim=2] np_mass_center_vec = np.empty((1,3), dtype=np.float32) + np_mass_center_vec = np.empty((1,3), dtype=np.float32) + np_mass_center_vec[0, 0] = mass_center.element(0, 0) + # np_mass_center_vec[0, 1] = mass_center.element(0, 1) + np_mass_center_vec[0, 1] = mass_center.element(1, 1) + # np_mass_center_vec[0, 2] = mass_center.element(0, 2) + np_mass_center_vec[0, 2] = mass_center.element(2, 2) + + return np_mass_center_vec - # def get_MassCenter (self): - # # cdef eigen3.Vector3f mass_center - # self.me.getMassCenter (mass_center) - # return mass_center + def Compute(self): + self.me.compute () diff --git a/tests/test_features.py b/tests/test_features.py index 0fff0eec6..7411341f2 100644 --- a/tests/test_features.py +++ b/tests/test_features.py @@ -20,96 +20,183 @@ class TestDifferenceOfNormalsEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) - self.feat = pcl.DifferenceOfNormalsEstimation() + # self.feat = pcl.DifferenceOfNormalsEstimation() -### IntegralImageNormalEstimation ### -class TestIntegralImageNormalEstimation(unittest.TestCase): - def setUp(self): - self.p = pcl.PointCloud(_data) - self.feat = pcl.IntegralImageNormalEstimation(self.p) - - def test_set_NormalEstimation_Method_AVERAGE_3D_GRADIENT(self): - self.feat.set_NormalEstimation_Method_AVERAGE_3D_GRADIENT() - # f = self.feat.compute(self.p) - - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) - - def test_set_NormalEstimation_Method_COVARIANCE_MATRIX(self): - self.feat.set_NormalEstimation_Method_COVARIANCE_MATRIX() - # f = self.feat.compute(self.p) - - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) - - def test_set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE(self): - self.feat.set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE() - # f = self.feat.compute(self.p) - - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) - - def test_set_NormalEstimation_Method_SIMPLE_3D_GRADIENT(self): - self.feat.set_NormalEstimation_Method_SIMPLE_3D_GRADIENT() - # f = self.feat.compute(self.p) - - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) - - def test_set_MaxDepthChange_Factor(self): - param = 0.0 - self.feat.set_MaxDepthChange_Factor(param) - # f = self.feat.compute(self.p) - - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) + def testException(self): + # self.assertRaises(TypeError, pcl.DifferenceOfNormalsEstimation) + pass - def test_set_NormalSmoothingSize(self): - param = 5.0 # default 10.0 - self.feat.set_NormalSmoothingSize(param) - # f = self.feat.compute(self.p) - # result point param? - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) +### IntegralImageNormalEstimation ### +# class TestIntegralImageNormalEstimation(unittest.TestCase): +# def setUp(self): +# # self.p = pcl.PointCloud(_data) +# self.p = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") +# # self.p = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") +# # self.feat = pcl.IntegralImageNormalEstimation(self.p) +# self.feat = self.p.make_IntegralImageNormalEstimation() +# +# +# # base : normal_estimation_using_integral_images.cpp +# def test_Tutorial(self): +# # before chack +# self.assertEqual(self.p.size, 307200) +# self.assertEqual(self.p.width, 640) +# self.assertEqual(self.p.height, 480) +# +# self.feat.set_NormalEstimation_Method_AVERAGE_3D_GRADIENT() +# self.feat.set_MaxDepthChange_Factor(0.02) +# self.feat.set_NormalSmoothingSize(10.0) +# # height = 1 pointdata set ng +# normals = self.feat.compute(self.p) +# +# # check - normals data +# # 1. return type +# self.assertRaises(normals, pcl.Normal) +# # 2. point size +# self.assertEqual(self.p.size, normals.size) +# +# # 3. same Tutorial data +# # size -> +# # self.assertEqual(self.p.size, normals.size) +# # for i in range(0, normals.size): +# # print ('normal_x: ' + str(normals[i][0]) + ', normal_y : ' + str(normals[i][1]) + ', normal_z : ' + str(normals[i][2])) +# +# +# # def test_set_NormalEstimation_Method_AVERAGE_3D_GRADIENT(self): +# # self.feat.set_NormalEstimation_Method_AVERAGE_3D_GRADIENT() +# # self.feat.setMaxDepthChangeFactor(0.02f) +# # self.feat.setNormalSmoothingSize(10.0) +# # f = self.feat.compute(self.p) +# # +# # # check +# # # new instance is returned +# # # self.assertNotEqual(self.p, f) +# # # filter retains the same number of points +# # # self.assertEqual(self.p.size, f.size) +# # +# # +# # def test_set_NormalEstimation_Method_COVARIANCE_MATRIX(self): +# # self.feat.set_NormalEstimation_Method_COVARIANCE_MATRIX() +# # # f = self.feat.compute(self.p) +# # +# # # check +# # # new instance is returned +# # # self.assertNotEqual(self.p, f) +# # # filter retains the same number of points +# # # self.assertEqual(self.p.size, f.size) +# # +# # def test_set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE(self): +# # self.feat.set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE() +# # # f = self.feat.compute(self.p) +# # +# # # check +# # # new instance is returned +# # # self.assertNotEqual(self.p, f) +# # # filter retains the same number of points +# # # self.assertEqual(self.p.size, f.size) +# # +# # def test_set_NormalEstimation_Method_SIMPLE_3D_GRADIENT(self): +# # self.feat.set_NormalEstimation_Method_SIMPLE_3D_GRADIENT() +# # # f = self.feat.compute(self.p) +# # +# # # check +# # # new instance is returned +# # # self.assertNotEqual(self.p, f) +# # # filter retains the same number of points +# # # self.assertEqual(self.p.size, f.size) +# # +# # # +# # def test_set_MaxDepthChange_Factor(self): +# # param = 0.0 +# # self.feat.set_MaxDepthChange_Factor(param) +# # # f = self.feat.compute(self.p) +# # +# # # check +# # # new instance is returned +# # # self.assertNotEqual(self.p, f) +# # # filter retains the same number of points +# # # self.assertEqual(self.p.size, f.size) +# # +# # def test_set_NormalSmoothingSize(self): +# # param = 5.0 # default 10.0 +# # self.feat.set_NormalSmoothingSize(param) +# # # f = self.feat.compute(self.p) +# # # result point param? +# # +# # # check +# # # new instance is returned +# # # self.assertNotEqual(self.p, f) +# # # filter retains the same number of points +# # # self.assertEqual(self.p.size, f.size) ### MomentOfInertiaEstimation ### class TestMomentOfInertiaEstimation(unittest.TestCase): def setUp(self): - self.p = pcl.PointCloud(_data) - self.feat = pcl.MomentOfInertiaEstimation() - - def test_get_MomentOfInertia(self): - param = self.feat.get_MomentOfInertia() - - def test_get_Eccentricity(self): - param = self.feat.get_Eccentricity() - - def test_get_AABB(self): - param = self.feat.get_AABB() - - def test_get_EigenValues(self): - param = self.feat.get_EigenValues() + # self.p = pcl.PointCloud(_data) + self.p = pcl.load("tests" + os.path.sep + "lamppost.pcd") + # 1.8.0 + # self.feat = pcl.MomentOfInertiaEstimation() + self.feat = self.p.make_MomentOfInertiaEstimation() + + def test_Tutorials(self): + self.feat.Compute() + + # Get Parameters + moment_of_inertia = self.feat.get_MomentOfInertia () + eccentricity = self.feat.get_Eccentricity () + [min_point_AABB, max_point_AABB] = self.feat.get_AABB (); + # [min_point_OBB, max_point_OBB, position_OBB, rotational_matrix_OBB] = self.feat.get_OBB () + [major_value, middle_value, minor_value] = self.feat.get_EigenValues () + [major_vector, middle_vector, minor_vector] = self.feat.get_EigenVectors () + mass_center = self.feat.get_MassCenter () + + # check parameter + # printf("%f %f %f.\n", mass_center (0), mass_center (1), mass_center (2)); + # -10.104160 0.074005 -2.144748. + # printf("%f %f %f.\n", major_vector (0), major_vector (1), major_vector (2)); + # 0.164287 -0.044990 -0.985386. + # printf("%f %f %f.\n", middle_vector (0), middle_vector (1), middle_vector (2)); + # 0.920083 -0.353143 0.169523. + # printf("%f %f %f.\n", minor_vector (0), minor_vector (1), minor_vector (2)); + # -0.355608 -0.934488 -0.016622. + + expected = [-10.104160, 0.074005, -2.144748] + # delta = 0.1 + # print("test : " + str(mass_center[0])) + # print(str(mass_center[0])) + # print(str(round(mass_center[0][0], 5))) + print(str(mass_center[0][0].dtype)) + # self.assertEqual(mass_center[0], expected) + # self.assertEqual(-10.10416, -10.10416) + # self.assertEqual(mass_center[0][0], float32(-10.10416)) + # self.assertEqual(mass_center[0][1], 0.074005) + # self.assertEqual(mass_center[0][2], -2.144748) + self.assertEqual(mass_center[0].tolist(), expected.tolist()) + + expected2 = [0.164287, -0.044990, -0.985386] + self.assertEqual(major_vector[0], expected2) + + expected3 = [0.920083, -0.353143, 0.169523] + self.assertEqual(middle_vector[0], expected3) + + expected4 = [-0.355608, -0.934488, -0.016622] + self.assertEqual(minor_vector, expected4) + + +# def test_get_MomentOfInertia(self): +# param = self.feat.get_MomentOfInertia() +# +# def test_get_Eccentricity(self): +# param = self.feat.get_Eccentricity() +# +# def test_get_AABB(self): +# param = self.feat.get_AABB() +# +# def test_get_EigenValues(self): +# param = self.feat.get_EigenValues() ### NormalEstimation ### @@ -214,12 +301,14 @@ def test_set_KSearch(self): def suite(): suite = unittest.TestSuite() # features - suite.addTests(unittest.makeSuite(DifferenceOfNormalsEstimation)) - suite.addTests(unittest.makeSuite(IntegralImageNormalEstimation)) - suite.addTests(unittest.makeSuite(MomentOfInertiaEstimation)) - suite.addTests(unittest.makeSuite(NormalEstimation)) - suite.addTests(unittest.makeSuite(RangeImageBorderExtractor)) - suite.addTests(unittest.makeSuite(VFHEstimation)) + # compute - exception + # suite.addTests(unittest.makeSuite(TestIntegralImageNormalEstimation)) + suite.addTests(unittest.makeSuite(TestMomentOfInertiaEstimation)) + suite.addTests(unittest.makeSuite(TestNormalEstimation)) + suite.addTests(unittest.makeSuite(TestVFHEstimation)) + # no add pxiInclude + # suite.addTests(unittest.makeSuite(TestDifferenceOfNormalsEstimation)) + # suite.addTests(unittest.makeSuite(TestRangeImageBorderExtractor)) return suite diff --git a/tests/test_surface.py b/tests/test_surface.py index 6df920b8a..b6c41914a 100644 --- a/tests/test_surface.py +++ b/tests/test_surface.py @@ -11,21 +11,35 @@ # surface ### ConcaveHull ### class TestConcaveHull(unittest.TestCase): + def setUp(self): - self.p = pcl.PointCloud(_data) + self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + self.surf = pcl.ConcaveHull() + + + def testreconstruct(self): + alpha = 1.0 + self.surf.set_Alpha(alpha) + clonepc = self.surf.reconstruct() + # new instance is returned + self.assertNotEqual(self.p, clonepc) + # concavehull retains the same number of points? + self.assertEqual(self.p.size, clonepc.size) ### MovingLeastSquares ### class TestMovingLeastSquares(unittest.TestCase): + def setUp(self): self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + self.surf = self.p.make_moving_least_squares() + def testFilter(self): - mls = self.p.make_moving_least_squares() - mls.set_search_radius(0.5) - mls.set_polynomial_order(2) - mls.set_polynomial_fit(True) - f = mls.process() + self.surf.set_search_radius(0.5) + self.surf.set_polynomial_order(2) + self.surf.set_polynomial_fit(True) + f = self.surf.process() # new instance is returned self.assertNotEqual(self.p, f) # mls filter retains the same number of points From 0e72f46769b5ec5b91a0536193f101e63936b0c2 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Fri, 27 Oct 2017 19:43:42 +0900 Subject: [PATCH 16/80] modified --- pcl/pxi/Features/IntegralImageNormalEstimation.pxi | 13 +++++++------ .../Features/IntegralImageNormalEstimation_180.pxi | 2 -- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/pcl/pxi/Features/IntegralImageNormalEstimation.pxi b/pcl/pxi/Features/IntegralImageNormalEstimation.pxi index 71085827e..babdc7a24 100644 --- a/pcl/pxi/Features/IntegralImageNormalEstimation.pxi +++ b/pcl/pxi/Features/IntegralImageNormalEstimation.pxi @@ -50,12 +50,15 @@ cdef class IntegralImageNormalEstimation: def set_NormalSmoothingSize(self, double param): self.thisptr().setNormalSmoothingSize(param) - def compute(self): + def compute(self, PointCloud pc not None): + # cdef PointCloud_PointNormal normal = PointCloud_PointNormal() + # normal = PointCloud_PointNormal() normal = PointCloud_Normal() + # NG : No Python object + # normal = PointCloud_Normal(pc) cdef cpp.PointCloud_Normal_t *cPointCloudNormal = normal.thisptr() - print ('3') - print (cPointCloudNormal) + # print (str(self.thisptr().size)) # compute function based Features class # NG @@ -66,8 +69,7 @@ cdef class IntegralImageNormalEstimation: # self.thisptr().compute ( deref(cPointCloudNormal.makeShared().get())) # NG : (Exception) # self.thisptr().compute (deref(cPointCloudNormal.makeShared().get())) - # self.thisptr().compute (deref(cPointCloudNormal)) - self.thisptr().compute (cPointCloudNormal) + self.thisptr().compute (deref(cPointCloudNormal)) print ('4') return normal @@ -91,4 +93,3 @@ cdef class IntegralImageNormalEstimation: print ('4') return normal - diff --git a/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi b/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi index 60650e5f3..6d4ef2652 100644 --- a/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi +++ b/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi @@ -21,11 +21,9 @@ cdef class IntegralImageNormalEstimation: # cdef pcl_ftr.IntegralImageNormalEstimation_t *me def __cinit__(self, PointCloud pc not None): - print ('__cinit__ start') sp_assign(self.thisptr_shared, new pcl_ftr.IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal]()) # NG : Reference Count self.thisptr().setInputCloud(pc.thisptr_shared) - print ('__cinit__ end') # self.me = new pcl_ftr.IntegralImageNormalEstimation_t() # self.me.setInputCloud(pc.thisptr_shared) # pass From 9b1f3a1909d86870a20331977ecfa570020710f7 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Mon, 30 Oct 2017 11:09:59 +0900 Subject: [PATCH 17/80] remove code(make_VFHEstimation function use NormalEstimation) --- pcl/pxi/PointCloud_PointXYZ.pxi | 3 --- pcl/pxi/PointCloud_PointXYZ_172.pxi | 3 --- pcl/pxi/PointCloud_PointXYZ_180.pxi | 3 --- pcl/pxi/PointCloud_SensorPoint.pxi | 3 --- 4 files changed, 12 deletions(-) diff --git a/pcl/pxi/PointCloud_PointXYZ.pxi b/pcl/pxi/PointCloud_PointXYZ.pxi index d008a6ac7..590845d29 100644 --- a/pcl/pxi/PointCloud_PointXYZ.pxi +++ b/pcl/pxi/PointCloud_PointXYZ.pxi @@ -518,9 +518,6 @@ cdef class PointCloud: def make_VFHEstimation(self): vfhEstimation = VFHEstimation() - normalEstimation = self.make_NormalEstimation() - cloud_normals = normalEstimation.Compute() - # features cdef pclftr.VFHEstimation_t *cVFHEstimation = vfhEstimation.me cVFHEstimation.setInputCloud( self.thisptr_shared) return vfhEstimation diff --git a/pcl/pxi/PointCloud_PointXYZ_172.pxi b/pcl/pxi/PointCloud_PointXYZ_172.pxi index 76d17d1a6..110a2b41c 100644 --- a/pcl/pxi/PointCloud_PointXYZ_172.pxi +++ b/pcl/pxi/PointCloud_PointXYZ_172.pxi @@ -506,9 +506,6 @@ cdef class PointCloud: def make_VFHEstimation(self): vfhEstimation = VFHEstimation() - normalEstimation = self.make_NormalEstimation() - cloud_normals = normalEstimation.Compute() - # features cdef pclftr.VFHEstimation_t *cVFHEstimation = vfhEstimation.me cVFHEstimation.setInputCloud( self.thisptr_shared) return vfhEstimation diff --git a/pcl/pxi/PointCloud_PointXYZ_180.pxi b/pcl/pxi/PointCloud_PointXYZ_180.pxi index 1aff162b4..e2dd4b0c0 100644 --- a/pcl/pxi/PointCloud_PointXYZ_180.pxi +++ b/pcl/pxi/PointCloud_PointXYZ_180.pxi @@ -506,9 +506,6 @@ cdef class PointCloud: def make_VFHEstimation(self): vfhEstimation = VFHEstimation() - normalEstimation = self.make_NormalEstimation() - cloud_normals = normalEstimation.Compute() - # features cdef pclftr.VFHEstimation_t *cVFHEstimation = vfhEstimation.me cVFHEstimation.setInputCloud( self.thisptr_shared) return vfhEstimation diff --git a/pcl/pxi/PointCloud_SensorPoint.pxi b/pcl/pxi/PointCloud_SensorPoint.pxi index 9628636ea..5436c4a63 100644 --- a/pcl/pxi/PointCloud_SensorPoint.pxi +++ b/pcl/pxi/PointCloud_SensorPoint.pxi @@ -514,9 +514,6 @@ cdef class PointCloud2: def make_VFHEstimation(self): vfhEstimation = VFHEstimation() - normalEstimation = self.make_NormalEstimation() - cloud_normals = normalEstimation.Compute() - # features cdef pclftr.VFHEstimation_t *cVFHEstimation = vfhEstimation.me cVFHEstimation.setInputCloud( self.thisptr_shared) return vfhEstimation From 36e629d784d80368d894ebf1478fd9035f74bb87 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Mon, 30 Oct 2017 15:55:48 +0900 Subject: [PATCH 18/80] feature test check NormalEstimation modified(PointCloud_Normal add pxiInclude/compute method enable) --- examples/sift.py | 4 +- pcl/_pcl.pxd | 20 +- pcl/_pcl.pyx | 2 +- pcl/_pcl_172.pyx | 2 +- pcl/_pcl_180.pyx | 5 +- pcl/pcl_features.pxd | 18 +- pcl/pcl_features_172.pxd | 4 + pcl/pcl_features_180.pxd | 21 +- .../IntegralImageNormalEstimation.pxi | 43 +-- .../IntegralImageNormalEstimation_172.pxi | 45 +-- .../IntegralImageNormalEstimation_180.pxi | 105 +++--- pcl/pxi/Features/NormalEstimation.pxi | 4 +- pcl/pxi/Features/NormalEstimation_172.pxi | 4 +- pcl/pxi/Features/NormalEstimation_180.pxi | 10 +- pcl/pxi/PointCloud_Normal.pxi | 4 +- pcl/shared_ptr.pxd | 2 + tests/test_features.py | 323 +++++++++--------- tests/test_filters.py | 3 +- tests/test_io.py | 3 +- tests/test_kdtree.py | 3 +- tests/test_keypoints.py | 3 +- tests/test_recognition.py | 3 +- tests/test_registration.py | 3 +- tests/test_sampleconsensus.py | 3 +- tests/test_segmentation.py | 3 +- tests/test_surface.py | 3 +- 26 files changed, 294 insertions(+), 349 deletions(-) diff --git a/examples/sift.py b/examples/sift.py index ac035f6f1..6da9c5ce2 100644 --- a/examples/sift.py +++ b/examples/sift.py @@ -23,11 +23,13 @@ def Surface_normals(cloud): ne = cloud.make_NormalEstimation() tree = cloud.make_kdtree() - ne.set_SearchMethod (tree) ne.set_SearchMethod(tree) ne.set_RadiusSearch(0.5) # NG + print('test - a') + print(ne) cloud_normals = ne.compute() + print('test - b') return cloud_normals ### diff --git a/pcl/_pcl.pxd b/pcl/_pcl.pxd index fab8238b5..e052545f4 100644 --- a/pcl/_pcl.pxd +++ b/pcl/_pcl.pxd @@ -142,12 +142,20 @@ cdef class RangeImages: ### Features # class override -cdef class IntegralImageNormalEstimation: - cdef pcl_ftr.IntegralImageNormalEstimationPtr_t thisptr_shared # IntegralImageNormalEstimation - - cdef inline pcl_ftr.IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal] *thisptr(self) nogil: - # Shortcut to get raw pointer to underlying pcl::IntegralImageNormalEstimation. - return self.thisptr_shared.get() +# cdef class IntegralImageNormalEstimation: +# cdef pcl_ftr.IntegralImageNormalEstimationPtr_t thisptr_shared # IntegralImageNormalEstimation +# +# cdef inline pcl_ftr.IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal] *thisptr(self) nogil: +# # Shortcut to get raw pointer to underlying pcl::IntegralImageNormalEstimation. +# return self.thisptr_shared.get() + + +# cdef class NormalEstimation: +# cdef pcl_ftr.NormalEstimationPtr_t thisptr_shared # NormalEstimation +# +# cdef inline pcl_ftr.NormalEstimation[cpp.PointXYZ, cpp.Normal] *thisptr(self) nogil: +# # Shortcut to get raw pointer to underlying pcl::NormalEstimation. +# return self.thisptr_shared.get() ## SampleConsensus diff --git a/pcl/_pcl.pyx b/pcl/_pcl.pyx index ddd54a934..971cdba99 100644 --- a/pcl/_pcl.pyx +++ b/pcl/_pcl.pyx @@ -138,7 +138,7 @@ include "pxi/PointCloud_PointXYZI.pxi" include "pxi/PointCloud_PointXYZRGB.pxi" include "pxi/PointCloud_PointXYZRGBA.pxi" include "pxi/PointCloud_PointWithViewpoint.pxi" -# include "pxi/PointCloud_Normal.pxi" +include "pxi/PointCloud_Normal.pxi" include "pxi/PointCloud_PointNormal.pxi" # Add PointCloud2 include "pxi/PointCloud_PointCloud2.pxi" diff --git a/pcl/_pcl_172.pyx b/pcl/_pcl_172.pyx index a968024ea..707ffce9e 100644 --- a/pcl/_pcl_172.pyx +++ b/pcl/_pcl_172.pyx @@ -134,7 +134,7 @@ include "pxi/PointCloud_PointXYZI_172.pxi" include "pxi/PointCloud_PointXYZRGB_172.pxi" include "pxi/PointCloud_PointXYZRGBA_172.pxi" include "pxi/PointCloud_PointWithViewpoint.pxi" -# include "pxi/PointCloud_Normal.pxi" +include "pxi/PointCloud_Normal.pxi" include "pxi/PointCloud_PointNormal.pxi" # Add PointCloud2 include "pxi/PointCloud_PCLPointCloud2.pxi" diff --git a/pcl/_pcl_180.pyx b/pcl/_pcl_180.pyx index b4cc59965..b323e5fa3 100644 --- a/pcl/_pcl_180.pyx +++ b/pcl/_pcl_180.pyx @@ -138,9 +138,10 @@ include "pxi/PointCloud_PointXYZI_180.pxi" include "pxi/PointCloud_PointXYZRGB_180.pxi" include "pxi/PointCloud_PointXYZRGBA_180.pxi" include "pxi/PointCloud_PointWithViewpoint.pxi" -# include "pxi/PointCloud_Normal.pxi" +include "pxi/PointCloud_Normal.pxi" include "pxi/PointCloud_PointNormal.pxi" - +# Add PointCloud2 +# include "pxi/PointCloud_PCLPointCloud2.pxi" ### common ### def deg2rad(float alpha): diff --git a/pcl/pcl_features.pxd b/pcl/pcl_features.pxd index b25b827ab..877a9bd5d 100644 --- a/pcl/pcl_features.pxd +++ b/pcl/pcl_features.pxd @@ -73,6 +73,10 @@ cdef extern from "pcl/features/feature.h" namespace "pcl": # void computeEigen (cpp.PointCloud[Eigen::MatrixXf] &output); +ctypedef Feature[cpp.PointXYZ, cpp.Normal] Feature_t +ctypedef Feature[cpp.PointXYZI, cpp.Normal] Feature_PointXYZI_t +ctypedef Feature[cpp.PointXYZRGB, cpp.Normal] Feature_PointXYZRGB_t +ctypedef Feature[cpp.PointXYZRGBA, cpp.Normal] Feature_PointXYZRGBA_t ### # template @@ -589,14 +593,6 @@ ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal]] Int ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZI, cpp.Normal]] IntegralImageNormalEstimation_PointXYZI_Ptr_t ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZRGB, cpp.Normal]] IntegralImageNormalEstimation_PointXYZRGB_Ptr_t ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZRGBA, cpp.Normal]] IntegralImageNormalEstimation_PointXYZRGBA_Ptr_t -# ctypedef IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal](Feature[cpp.PointXYZ, cpp.Normal]) IntegralImageNormalEstimation_t -# ctypedef IntegralImageNormalEstimation[cpp.PointXYZI, cpp.Normal](Feature[cpp.PoinPointXYZItXYZ, cpp.Normal]) IntegralImageNormalEstimation_PointXYZI_t -# ctypedef IntegralImageNormalEstimation[cpp.PointXYZRGB, cpp.Normal](Feature[cpp.PointXYZRGB, cpp.Normal]) IntegralImageNormalEstimation_PointXYZRGB_t -# ctypedef IntegralImageNormalEstimation[cpp.PointXYZRGBA, cpp.Normal](Feature[cpp.PointXYZRGBA, cpp.Normal]) IntegralImageNormalEstimation_PointXYZRGBA_t -# ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal](Feature[cpp.PointXYZ, cpp.Normal])] IntegralImageNormalEstimationPtr_t -# ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZI, cpp.Normal](Feature[cpp.PoinPointXYZItXYZ, cpp.Normal])] IntegralImageNormalEstimation_PointXYZI_Ptr_t -# ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZRGB, cpp.Normal](Feature[cpp.PointXYZRGB, cpp.Normal])] IntegralImageNormalEstimation_PointXYZRGB_Ptr_t -# ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZRGBA, cpp.Normal](Feature[cpp.PointXYZRGBA, cpp.Normal])] IntegralImageNormalEstimation_PointXYZRGBA_Ptr_t ### # integral_image2D.h @@ -1287,11 +1283,15 @@ cdef extern from "pcl/features/normal_3d.h" namespace "pcl": # * to use a user defined view point, use the method setViewPoint inline void useSensorOriginAsViewPoint () + ctypedef NormalEstimation[cpp.PointXYZ, cpp.Normal] NormalEstimation_t ctypedef NormalEstimation[cpp.PointXYZI, cpp.Normal] NormalEstimation_PointXYZI_t ctypedef NormalEstimation[cpp.PointXYZRGB, cpp.Normal] NormalEstimation_PointXYZRGB_t ctypedef NormalEstimation[cpp.PointXYZRGBA, cpp.Normal] NormalEstimation_PointXYZRGBA_t - +ctypedef shared_ptr[NormalEstimation[cpp.PointXYZ, cpp.Normal]] NormalEstimationPtr_t +ctypedef shared_ptr[NormalEstimation[cpp.PointXYZI, cpp.Normal]] NormalEstimation_PointXYZI_Ptr_t +ctypedef shared_ptr[NormalEstimation[cpp.PointXYZRGB, cpp.Normal]] NormalEstimation_PointXYZRGB_Ptr_t +ctypedef shared_ptr[NormalEstimation[cpp.PointXYZRGBA, cpp.Normal]] NormalEstimation_PointXYZRGBA_Ptr_t ### # template diff --git a/pcl/pcl_features_172.pxd b/pcl/pcl_features_172.pxd index 138ae7213..604ed609e 100644 --- a/pcl/pcl_features_172.pxd +++ b/pcl/pcl_features_172.pxd @@ -73,6 +73,10 @@ cdef extern from "pcl/features/feature.h" namespace "pcl": # void computeEigen (cpp.PointCloud[Eigen::MatrixXf] &output); +ctypedef Feature[cpp.PointXYZ, cpp.Normal] Feature_t +ctypedef Feature[cpp.PointXYZI, cpp.Normal] Feature_PointXYZI_t +ctypedef Feature[cpp.PointXYZRGB, cpp.Normal] Feature_PointXYZRGB_t +ctypedef Feature[cpp.PointXYZRGBA, cpp.Normal] Feature_PointXYZRGBA_t ### # template diff --git a/pcl/pcl_features_180.pxd b/pcl/pcl_features_180.pxd index d568d981c..a3351a4eb 100644 --- a/pcl/pcl_features_180.pxd +++ b/pcl/pcl_features_180.pxd @@ -73,6 +73,10 @@ cdef extern from "pcl/features/feature.h" namespace "pcl": # void computeEigen (cpp.PointCloud[Eigen::MatrixXf] &output); +ctypedef Feature[cpp.PointXYZ, cpp.Normal] Feature_t +ctypedef Feature[cpp.PointXYZI, cpp.Normal] Feature_PointXYZI_t +ctypedef Feature[cpp.PointXYZRGB, cpp.Normal] Feature_PointXYZRGB_t +ctypedef Feature[cpp.PointXYZRGBA, cpp.Normal] Feature_PointXYZRGBA_t ### # template @@ -1577,6 +1581,7 @@ cdef extern from "pcl/features/integral_image_normal.h" namespace "pcl": # * to use a user defined view point, use the method setViewPoint inline void useSensorOriginAsViewPoint () + ctypedef IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal] IntegralImageNormalEstimation_t ctypedef IntegralImageNormalEstimation[cpp.PointXYZI, cpp.Normal] IntegralImageNormalEstimation_PointXYZI_t ctypedef IntegralImageNormalEstimation[cpp.PointXYZRGB, cpp.Normal] IntegralImageNormalEstimation_PointXYZRGB_t @@ -1585,14 +1590,6 @@ ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal]] Int ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZI, cpp.Normal]] IntegralImageNormalEstimation_PointXYZI_Ptr_t ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZRGB, cpp.Normal]] IntegralImageNormalEstimation_PointXYZRGB_Ptr_t ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZRGBA, cpp.Normal]] IntegralImageNormalEstimation_PointXYZRGBA_Ptr_t -# ctypedef IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal](Feature[cpp.PointXYZ, cpp.Normal]) IntegralImageNormalEstimation_t -# ctypedef IntegralImageNormalEstimation[cpp.PointXYZI, cpp.Normal](Feature[cpp.PoinPointXYZItXYZ, cpp.Normal]) IntegralImageNormalEstimation_PointXYZI_t -# ctypedef IntegralImageNormalEstimation[cpp.PointXYZRGB, cpp.Normal](Feature[cpp.PointXYZRGB, cpp.Normal]) IntegralImageNormalEstimation_PointXYZRGB_t -# ctypedef IntegralImageNormalEstimation[cpp.PointXYZRGBA, cpp.Normal](Feature[cpp.PointXYZRGBA, cpp.Normal]) IntegralImageNormalEstimation_PointXYZRGBA_t -# ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal](Feature[cpp.PointXYZ, cpp.Normal])] IntegralImageNormalEstimationPtr_t -# ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZI, cpp.Normal](Feature[cpp.PoinPointXYZItXYZ, cpp.Normal])] IntegralImageNormalEstimation_PointXYZI_Ptr_t -# ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZRGB, cpp.Normal](Feature[cpp.PointXYZRGB, cpp.Normal])] IntegralImageNormalEstimation_PointXYZRGB_Ptr_t -# ctypedef shared_ptr[IntegralImageNormalEstimation[cpp.PointXYZRGBA, cpp.Normal](Feature[cpp.PointXYZRGBA, cpp.Normal])] IntegralImageNormalEstimation_PointXYZRGBA_Ptr_t ### # integral_image2D.h @@ -2282,12 +2279,16 @@ cdef extern from "pcl/features/normal_3d.h" namespace "pcl": # * normal estimation method uses the sensor origin of the input cloud. # * to use a user defined view point, use the method setViewPoint inline void useSensorOriginAsViewPoint () - + + ctypedef NormalEstimation[cpp.PointXYZ, cpp.Normal] NormalEstimation_t ctypedef NormalEstimation[cpp.PointXYZI, cpp.Normal] NormalEstimation_PointXYZI_t ctypedef NormalEstimation[cpp.PointXYZRGB, cpp.Normal] NormalEstimation_PointXYZRGB_t ctypedef NormalEstimation[cpp.PointXYZRGBA, cpp.Normal] NormalEstimation_PointXYZRGBA_t - +ctypedef shared_ptr[NormalEstimation[cpp.PointXYZ, cpp.Normal]] NormalEstimationPtr_t +ctypedef shared_ptr[NormalEstimation[cpp.PointXYZI, cpp.Normal]] NormalEstimation_PointXYZI_Ptr_t +ctypedef shared_ptr[NormalEstimation[cpp.PointXYZRGB, cpp.Normal]] NormalEstimation_PointXYZRGB_Ptr_t +ctypedef shared_ptr[NormalEstimation[cpp.PointXYZRGBA, cpp.Normal]] NormalEstimation_PointXYZRGBA_Ptr_t ### # template diff --git a/pcl/pxi/Features/IntegralImageNormalEstimation.pxi b/pcl/pxi/Features/IntegralImageNormalEstimation.pxi index babdc7a24..a6f2fdab0 100644 --- a/pcl/pxi/Features/IntegralImageNormalEstimation.pxi +++ b/pcl/pxi/Features/IntegralImageNormalEstimation.pxi @@ -50,46 +50,11 @@ cdef class IntegralImageNormalEstimation: def set_NormalSmoothingSize(self, double param): self.thisptr().setNormalSmoothingSize(param) - def compute(self, PointCloud pc not None): - # cdef PointCloud_PointNormal normal = PointCloud_PointNormal() - # normal = PointCloud_PointNormal() + def compute(self): normal = PointCloud_Normal() - # NG : No Python object - # normal = PointCloud_Normal(pc) - cdef cpp.PointCloud_Normal_t *cPointCloudNormal = normal.thisptr() - print ('3') - # print (str(self.thisptr().size)) - - # compute function based Features class - # NG - # self.thisptr().compute (cPointCloudNormal.makeShared()) - # self.thisptr().compute (cPointCloudNormal.makeShared().get()) - # from cython cimport address - # self.thisptr().compute (cython.address(cPointCloudNormal.makeShared().get())) - # self.thisptr().compute ( deref(cPointCloudNormal.makeShared().get())) - # NG : (Exception) - # self.thisptr().compute (deref(cPointCloudNormal.makeShared().get())) - self.thisptr().compute (deref(cPointCloudNormal)) - print ('4') + sp_assign(normal.thisptr_shared, new cpp.PointCloud[cpp.Normal]()) + cdef cpp.PointCloud_Normal_t *cNormal = normal.thisptr() + (self.thisptr()).compute(deref(cNormal)) return normal - def compute2(self, PointCloud pc not None): - normal = PointCloud_Normal() - cdef cpp.PointCloud_Normal_t *cPointCloudNormal = normal.thisptr() - print ('3') - # OK - cdef cpp.PointCloud_Normal_t normals - mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), normals) - print ('3a') - # Copy? - cPointCloudNormal = normals.makeShared().get() - print ('3b') - - # NG : Normal Pointer Nothing? - # mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), deref(cPointCloudNormal.makeShared().get())) - # mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), cPointCloudNormal.makeShared().get()) - # NG : Normal Pointer Nothing? - # mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), deref(cPointCloudNormal)) - print ('4') - return normal diff --git a/pcl/pxi/Features/IntegralImageNormalEstimation_172.pxi b/pcl/pxi/Features/IntegralImageNormalEstimation_172.pxi index e4798ed6d..be33b5620 100644 --- a/pcl/pxi/Features/IntegralImageNormalEstimation_172.pxi +++ b/pcl/pxi/Features/IntegralImageNormalEstimation_172.pxi @@ -21,11 +21,9 @@ cdef class IntegralImageNormalEstimation: # cdef pcl_ftr.IntegralImageNormalEstimation_t *me def __cinit__(self, PointCloud pc not None): - print ('__cinit__ start') sp_assign(self.thisptr_shared, new pcl_ftr.IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal]()) # NG : Reference Count self.thisptr().setInputCloud(pc.thisptr_shared) - print ('__cinit__ end') # self.me = new pcl_ftr.IntegralImageNormalEstimation_t() # self.me.setInputCloud(pc.thisptr_shared) # pass @@ -52,46 +50,11 @@ cdef class IntegralImageNormalEstimation: def set_NormalSmoothingSize(self, double param): self.thisptr().setNormalSmoothingSize(param) - def compute(self, PointCloud pc not None): - # cdef PointCloud_PointNormal normal = PointCloud_PointNormal() - # normal = PointCloud_PointNormal() + def compute(self): normal = PointCloud_Normal() - # NG : No Python object - # normal = PointCloud_Normal(pc) - cdef cpp.PointCloud_Normal_t *cPointCloudNormal = normal.thisptr() - print ('3') - # print (str(self.thisptr().size)) - - # compute function based Features class - # NG - # self.thisptr().compute (cPointCloudNormal.makeShared()) - # self.thisptr().compute (cPointCloudNormal.makeShared().get()) - # from cython cimport address - # self.thisptr().compute (cython.address(cPointCloudNormal.makeShared().get())) - # self.thisptr().compute ( deref(cPointCloudNormal.makeShared().get())) - # NG : (Exception) - # self.thisptr().compute (deref(cPointCloudNormal.makeShared().get())) - self.thisptr().compute (deref(cPointCloudNormal)) - print ('4') + sp_assign(normal.thisptr_shared, new cpp.PointCloud[cpp.Normal]()) + cdef cpp.PointCloud_Normal_t *cNormal = normal.thisptr() + (self.thisptr()).compute(deref(cNormal)) return normal - def compute2(self, PointCloud pc not None): - normal = PointCloud_Normal() - cdef cpp.PointCloud_Normal_t *cPointCloudNormal = normal.thisptr() - print ('3') - # OK - cdef cpp.PointCloud_Normal_t normals - mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), normals) - print ('3a') - # Copy? - cPointCloudNormal = normals.makeShared().get() - print ('3b') - - # NG : Normal Pointer Nothing? - # mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), deref(cPointCloudNormal.makeShared().get())) - # mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), cPointCloudNormal.makeShared().get()) - # NG : Normal Pointer Nothing? - # mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), deref(cPointCloudNormal)) - print ('4') - return normal diff --git a/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi b/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi index 6d4ef2652..7d02326bf 100644 --- a/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi +++ b/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi @@ -1,95 +1,82 @@ # -*- coding: utf-8 -*- +cimport _pcl from libcpp.vector cimport vector from libcpp cimport bool cimport pcl_defs as cpp -cimport pcl_features_180 as pcl_ftr +cimport pcl_features_180 as pclftr from boost_shared_ptr cimport sp_assign cdef extern from "minipcl.h": - void mpcl_features_NormalEstimationMethod_AVERAGE_3D_GRADIENT(pcl_ftr.IntegralImageNormalEstimation_t ) except + - void mpcl_features_NormalEstimationMethod_COVARIANCE_MATRIX(pcl_ftr.IntegralImageNormalEstimation_t ) except + - void mpcl_features_NormalEstimationMethod_AVERAGE_DEPTH_CHANGE(pcl_ftr.IntegralImageNormalEstimation_t ) except + - void mpcl_features_NormalEstimationMethod_SIMPLE_3D_GRADIENT(pcl_ftr.IntegralImageNormalEstimation_t ) except + - void mpcl_features_NormalEstimationMethod_compute(pcl_ftr.IntegralImageNormalEstimation_t, cpp.PointCloud_Normal_t ) except + + void mpcl_features_NormalEstimationMethod_AVERAGE_3D_GRADIENT(pclftr.IntegralImageNormalEstimation_t ) except + + void mpcl_features_NormalEstimationMethod_COVARIANCE_MATRIX(pclftr.IntegralImageNormalEstimation_t ) except + + void mpcl_features_NormalEstimationMethod_AVERAGE_DEPTH_CHANGE(pclftr.IntegralImageNormalEstimation_t ) except + + void mpcl_features_NormalEstimationMethod_SIMPLE_3D_GRADIENT(pclftr.IntegralImageNormalEstimation_t ) except + + void mpcl_features_NormalEstimationMethod_compute(pclftr.IntegralImageNormalEstimation_t, cpp.PointCloud_Normal_t ) except + + cdef class IntegralImageNormalEstimation: """ - IntegralImageNormalEstimation class for + IntegralImageNormalEstimation class for Surface normal estimation on organized data using integral images. """ - # cdef pcl_ftr.IntegralImageNormalEstimation_t *me + cdef pclftr.IntegralImageNormalEstimation_t *me + - def __cinit__(self, PointCloud pc not None): - sp_assign(self.thisptr_shared, new pcl_ftr.IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal]()) + def __cinit__(self, _pcl.PointCloud pc not None): + # sp_assign(self.thisptr_shared, new pclftr.IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal]()) + # self.thisptr().setInputCloud(pc.thisptr_shared) # NG : Reference Count - self.thisptr().setInputCloud(pc.thisptr_shared) - # self.me = new pcl_ftr.IntegralImageNormalEstimation_t() - # self.me.setInputCloud(pc.thisptr_shared) + self.me = new pclftr.IntegralImageNormalEstimation_t() + self.me.setInputCloud(pc.thisptr_shared) # pass + + def __dealloc__(self): + del self.me + + def set_NormalEstimation_Method_AVERAGE_3D_GRADIENT (self): - mpcl_features_NormalEstimationMethod_AVERAGE_3D_GRADIENT( deref(self.thisptr())) + # mpcl_features_NormalEstimationMethod_AVERAGE_3D_GRADIENT( deref(self.thisptr())) + mpcl_features_NormalEstimationMethod_AVERAGE_3D_GRADIENT( deref(self.me)) + def set_NormalEstimation_Method_COVARIANCE_MATRIX (self): - mpcl_features_NormalEstimationMethod_COVARIANCE_MATRIX( deref(self.thisptr())) + # mpcl_features_NormalEstimationMethod_COVARIANCE_MATRIX( deref(self.thisptr())) + mpcl_features_NormalEstimationMethod_COVARIANCE_MATRIX( deref(self.me)) + def set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE (self): - mpcl_features_NormalEstimationMethod_AVERAGE_DEPTH_CHANGE( deref(self.thisptr())) + # mpcl_features_NormalEstimationMethod_AVERAGE_DEPTH_CHANGE( deref(self.thisptr())) + mpcl_features_NormalEstimationMethod_AVERAGE_DEPTH_CHANGE( deref(self.me)) + def set_NormalEstimation_Method_SIMPLE_3D_GRADIENT (self): - mpcl_features_NormalEstimationMethod_SIMPLE_3D_GRADIENT( deref(self.thisptr())) + # mpcl_features_NormalEstimationMethod_SIMPLE_3D_GRADIENT( deref(self.thisptr())) + mpcl_features_NormalEstimationMethod_SIMPLE_3D_GRADIENT( deref(self.me)) + # enum Set NG # def set_NormalEstimation_Method (self): - # self.thisptr().setNormalEstimationMethod(pcl_ftr.NormalEstimationMethod2.ESTIMATIONMETHOD_COVARIANCE_MATRIX) + # self.thisptr().setNormalEstimationMethod(pclftr.NormalEstimationMethod2.ESTIMATIONMETHOD_COVARIANCE_MATRIX) + def set_MaxDepthChange_Factor(self, double param): - self.thisptr().setMaxDepthChangeFactor(param) + # self.thisptr().setMaxDepthChangeFactor(param) + self.me.setMaxDepthChangeFactor(param) + def set_NormalSmoothingSize(self, double param): - self.thisptr().setNormalSmoothingSize(param) + # self.thisptr().setNormalSmoothingSize(param) + self.me.setNormalSmoothingSize(param) - def compute(self, PointCloud pc not None): - # cdef PointCloud_PointNormal normal = PointCloud_PointNormal() - # normal = PointCloud_PointNormal() - normal = PointCloud_Normal() - # NG : No Python object - # normal = PointCloud_Normal(pc) - cdef cpp.PointCloud_Normal_t *cPointCloudNormal = normal.thisptr() - print ('3') - # print (str(self.thisptr().size)) - - # compute function based Features class - # NG - # self.thisptr().compute (cPointCloudNormal.makeShared()) - # self.thisptr().compute (cPointCloudNormal.makeShared().get()) - # from cython cimport address - # self.thisptr().compute (cython.address(cPointCloudNormal.makeShared().get())) - # self.thisptr().compute ( deref(cPointCloudNormal.makeShared().get())) - # NG : (Exception) - # self.thisptr().compute (deref(cPointCloudNormal.makeShared().get())) - self.thisptr().compute (deref(cPointCloudNormal)) - print ('4') - return normal - def compute2(self, PointCloud pc not None): + def compute(self): normal = PointCloud_Normal() - cdef cpp.PointCloud_Normal_t *cPointCloudNormal = normal.thisptr() - print ('3') - # OK - cdef cpp.PointCloud_Normal_t normals - mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), normals) - print ('3a') - # Copy? - cPointCloudNormal = normals.makeShared().get() - print ('3b') - - # NG : Normal Pointer Nothing? - # mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), deref(cPointCloudNormal.makeShared().get())) - # mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), cPointCloudNormal.makeShared().get()) - # NG : Normal Pointer Nothing? - # mpcl_features_NormalEstimationMethod_compute( deref(self.thisptr()), deref(cPointCloudNormal)) - print ('4') + sp_assign(normal.thisptr_shared, new cpp.PointCloud[cpp.Normal]()) + cdef cpp.PointCloud_Normal_t *cNormal = normal.thisptr() + # (self.thisptr()).compute(deref(cNormal)) + (self.me).compute(deref(cNormal)) return normal + diff --git a/pcl/pxi/Features/NormalEstimation.pxi b/pcl/pxi/Features/NormalEstimation.pxi index ea3b19dea..76a17234d 100644 --- a/pcl/pxi/Features/NormalEstimation.pxi +++ b/pcl/pxi/Features/NormalEstimation.pxi @@ -15,6 +15,7 @@ cdef class NormalEstimation: def __cinit__(self): self.me = new pclftr.NormalEstimation_t() + # sp_assign(self.thisptr_shared, new pclftr.NormalEstimation[cpp.PointXYZ, cpp.Normal]()) def __dealloc__(self): del self.me @@ -30,7 +31,8 @@ cdef class NormalEstimation: def compute(self): normal = PointCloud_Normal() + sp_assign(normal.thisptr_shared, new cpp.PointCloud[cpp.Normal]()) cdef cpp.PointCloud_Normal_t *cNormal = normal.thisptr() - self.me.compute (deref(cNormal)) + (self.me).compute(deref(cNormal)) return normal diff --git a/pcl/pxi/Features/NormalEstimation_172.pxi b/pcl/pxi/Features/NormalEstimation_172.pxi index a00c044ae..e76decb8c 100644 --- a/pcl/pxi/Features/NormalEstimation_172.pxi +++ b/pcl/pxi/Features/NormalEstimation_172.pxi @@ -15,6 +15,7 @@ cdef class NormalEstimation: def __cinit__(self): self.me = new pclftr.NormalEstimation_t() + # sp_assign(self.thisptr_shared, new pclftr.NormalEstimation[cpp.PointXYZ, cpp.Normal]()) def __dealloc__(self): del self.me @@ -30,7 +31,8 @@ cdef class NormalEstimation: def compute(self): normal = PointCloud_Normal() + sp_assign(normal.thisptr_shared, new cpp.PointCloud[cpp.Normal]()) cdef cpp.PointCloud_Normal_t *cNormal = normal.thisptr() - self.me.compute (deref(cNormal)) + (self.me).compute(deref(cNormal)) return normal diff --git a/pcl/pxi/Features/NormalEstimation_180.pxi b/pcl/pxi/Features/NormalEstimation_180.pxi index 6ef5cf1eb..67256d9df 100644 --- a/pcl/pxi/Features/NormalEstimation_180.pxi +++ b/pcl/pxi/Features/NormalEstimation_180.pxi @@ -15,6 +15,7 @@ cdef class NormalEstimation: def __cinit__(self): self.me = new pclftr.NormalEstimation_t() + # sp_assign(self.thisptr_shared, new pclftr.NormalEstimation[cpp.PointXYZ, cpp.Normal]()) def __dealloc__(self): del self.me @@ -29,8 +30,9 @@ cdef class NormalEstimation: self.me.setKSearch (param) def compute(self): - normal = PointCloud_Normal() - cdef cpp.PointCloud_Normal_t *cNormal = normal.thisptr() - self.me.compute (deref(cNormal)) - return normal + normals = PointCloud_Normal() + sp_assign(normals.thisptr_shared, new cpp.PointCloud[cpp.Normal]()) + cdef cpp.PointCloud_Normal_t *cNormal = normals.thisptr() + (self.me).compute(deref(cNormal)) + return normals diff --git a/pcl/pxi/PointCloud_Normal.pxi b/pcl/pxi/PointCloud_Normal.pxi index ee73c7969..010f89a5d 100644 --- a/pcl/pxi/PointCloud_Normal.pxi +++ b/pcl/pxi/PointCloud_Normal.pxi @@ -122,7 +122,7 @@ cdef class PointCloud_Normal: def to_list(self): """ - Return this object as a list of 3-tuples + Return this object as a list of 4-tuples """ return self.to_array().tolist() @@ -134,7 +134,7 @@ cdef class PointCloud_Normal: def get_point(self, cnp.npy_intp row, cnp.npy_intp col): """ - Return a point (3-tuple) at the given row/column + Return a point (4-tuple) at the given row/column """ cdef cpp.Normal *p = idx.getptr_at2(self.thisptr(), row, col) return p.normal_x, p.normal_y, p.normal_z, p.curvature diff --git a/pcl/shared_ptr.pxd b/pcl/shared_ptr.pxd index e13ee4314..29ab9fc66 100644 --- a/pcl/shared_ptr.pxd +++ b/pcl/shared_ptr.pxd @@ -14,3 +14,5 @@ cdef extern from "boost/smart_ptr/shared_ptr.hpp" namespace "boost" nogil: cdef extern from "shared_ptr_assign.h" nogil: #void sp_assign(shared_ptr[cpp.PointCloud[cpp.PointXYZ]] &t, cpp.PointCloud[cpp.PointXYZ] *value) void sp_assign[T](shared_ptr[T] &p, T *value) + + diff --git a/tests/test_features.py b/tests/test_features.py index 7411341f2..74c6296d6 100644 --- a/tests/test_features.py +++ b/tests/test_features.py @@ -29,107 +29,109 @@ def testException(self): ### IntegralImageNormalEstimation ### -# class TestIntegralImageNormalEstimation(unittest.TestCase): -# def setUp(self): -# # self.p = pcl.PointCloud(_data) -# self.p = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") -# # self.p = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") -# # self.feat = pcl.IntegralImageNormalEstimation(self.p) -# self.feat = self.p.make_IntegralImageNormalEstimation() +class TestIntegralImageNormalEstimation(unittest.TestCase): + def setUp(self): + # self.p = pcl.PointCloud(_data) + self.p = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured.pcd") + # self.feat = pcl.IntegralImageNormalEstimation(self.p) + self.feat = self.p.make_IntegralImageNormalEstimation() + + + # base : normal_estimation_using_integral_images.cpp + # @unittest.skip + def test_Tutorial(self): + # before chack + self.assertEqual(self.p.size, 307200) + self.assertEqual(self.p.width, 640) + self.assertEqual(self.p.height, 480) + + self.feat.set_NormalEstimation_Method_AVERAGE_3D_GRADIENT() + self.feat.set_MaxDepthChange_Factor(0.02) + self.feat.set_NormalSmoothingSize(10.0) + # height = 1 pointdata set ng + normals = self.feat.compute() + # print(normals) + + # check - normals data + # 1. return type + # self.assertRaises(normals, pcl.PointCloud_Normal) + # 2. point size + # self.assertEqual(self.p.size, normals.size) + + # 3. same Tutorial data + # size -> + # self.assertEqual(self.p.size, normals.size) + # for i in range(0, normals.size): + # print ('normal_x: ' + str(normals[i][0]) + ', normal_y : ' + str(normals[i][1]) + ', normal_z : ' + str(normals[i][2])) + # print('end') + + +# def test_set_NormalEstimation_Method_AVERAGE_3D_GRADIENT(self): +# self.feat.set_NormalEstimation_Method_AVERAGE_3D_GRADIENT() +# self.feat.setMaxDepthChangeFactor(0.02f) +# self.feat.setNormalSmoothingSize(10.0) +# f = self.feat.compute(self.p) # +# # check +# # new instance is returned +# # self.assertNotEqual(self.p, f) +# # filter retains the same number of points +# # self.assertEqual(self.p.size, f.size) # -# # base : normal_estimation_using_integral_images.cpp -# def test_Tutorial(self): -# # before chack -# self.assertEqual(self.p.size, 307200) -# self.assertEqual(self.p.width, 640) -# self.assertEqual(self.p.height, 480) # -# self.feat.set_NormalEstimation_Method_AVERAGE_3D_GRADIENT() -# self.feat.set_MaxDepthChange_Factor(0.02) -# self.feat.set_NormalSmoothingSize(10.0) -# # height = 1 pointdata set ng -# normals = self.feat.compute(self.p) +# def test_set_NormalEstimation_Method_COVARIANCE_MATRIX(self): +# self.feat.set_NormalEstimation_Method_COVARIANCE_MATRIX() +# # f = self.feat.compute(self.p) +# +# # check +# # new instance is returned +# # self.assertNotEqual(self.p, f) +# # filter retains the same number of points +# # self.assertEqual(self.p.size, f.size) +# +# def test_set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE(self): +# self.feat.set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE() +# # f = self.feat.compute(self.p) +# +# # check +# # new instance is returned +# # self.assertNotEqual(self.p, f) +# # filter retains the same number of points +# # self.assertEqual(self.p.size, f.size) # -# # check - normals data -# # 1. return type -# self.assertRaises(normals, pcl.Normal) -# # 2. point size -# self.assertEqual(self.p.size, normals.size) +# def test_set_NormalEstimation_Method_SIMPLE_3D_GRADIENT(self): +# self.feat.set_NormalEstimation_Method_SIMPLE_3D_GRADIENT() +# # f = self.feat.compute(self.p) # -# # 3. same Tutorial data -# # size -> -# # self.assertEqual(self.p.size, normals.size) -# # for i in range(0, normals.size): -# # print ('normal_x: ' + str(normals[i][0]) + ', normal_y : ' + str(normals[i][1]) + ', normal_z : ' + str(normals[i][2])) +# # check +# # new instance is returned +# # self.assertNotEqual(self.p, f) +# # filter retains the same number of points +# # self.assertEqual(self.p.size, f.size) # +# # +# def test_set_MaxDepthChange_Factor(self): +# param = 0.0 +# self.feat.set_MaxDepthChange_Factor(param) +# # f = self.feat.compute(self.p) # -# # def test_set_NormalEstimation_Method_AVERAGE_3D_GRADIENT(self): -# # self.feat.set_NormalEstimation_Method_AVERAGE_3D_GRADIENT() -# # self.feat.setMaxDepthChangeFactor(0.02f) -# # self.feat.setNormalSmoothingSize(10.0) -# # f = self.feat.compute(self.p) -# # -# # # check -# # # new instance is returned -# # # self.assertNotEqual(self.p, f) -# # # filter retains the same number of points -# # # self.assertEqual(self.p.size, f.size) -# # -# # -# # def test_set_NormalEstimation_Method_COVARIANCE_MATRIX(self): -# # self.feat.set_NormalEstimation_Method_COVARIANCE_MATRIX() -# # # f = self.feat.compute(self.p) -# # -# # # check -# # # new instance is returned -# # # self.assertNotEqual(self.p, f) -# # # filter retains the same number of points -# # # self.assertEqual(self.p.size, f.size) -# # -# # def test_set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE(self): -# # self.feat.set_NormalEstimation_Method_AVERAGE_DEPTH_CHANGE() -# # # f = self.feat.compute(self.p) -# # -# # # check -# # # new instance is returned -# # # self.assertNotEqual(self.p, f) -# # # filter retains the same number of points -# # # self.assertEqual(self.p.size, f.size) -# # -# # def test_set_NormalEstimation_Method_SIMPLE_3D_GRADIENT(self): -# # self.feat.set_NormalEstimation_Method_SIMPLE_3D_GRADIENT() -# # # f = self.feat.compute(self.p) -# # -# # # check -# # # new instance is returned -# # # self.assertNotEqual(self.p, f) -# # # filter retains the same number of points -# # # self.assertEqual(self.p.size, f.size) -# # -# # # -# # def test_set_MaxDepthChange_Factor(self): -# # param = 0.0 -# # self.feat.set_MaxDepthChange_Factor(param) -# # # f = self.feat.compute(self.p) -# # -# # # check -# # # new instance is returned -# # # self.assertNotEqual(self.p, f) -# # # filter retains the same number of points -# # # self.assertEqual(self.p.size, f.size) -# # -# # def test_set_NormalSmoothingSize(self): -# # param = 5.0 # default 10.0 -# # self.feat.set_NormalSmoothingSize(param) -# # # f = self.feat.compute(self.p) -# # # result point param? -# # -# # # check -# # # new instance is returned -# # # self.assertNotEqual(self.p, f) -# # # filter retains the same number of points -# # # self.assertEqual(self.p.size, f.size) +# # check +# # new instance is returned +# # self.assertNotEqual(self.p, f) +# # filter retains the same number of points +# # self.assertEqual(self.p.size, f.size) +# +# def test_set_NormalSmoothingSize(self): +# param = 5.0 # default 10.0 +# self.feat.set_NormalSmoothingSize(param) +# # f = self.feat.compute(self.p) +# # result point param? +# +# # check +# # new instance is returned +# # self.assertNotEqual(self.p, f) +# # filter retains the same number of points +# # self.assertEqual(self.p.size, f.size) ### MomentOfInertiaEstimation ### @@ -143,7 +145,7 @@ def setUp(self): def test_Tutorials(self): self.feat.Compute() - + # Get Parameters moment_of_inertia = self.feat.get_MomentOfInertia () eccentricity = self.feat.get_Eccentricity () @@ -152,7 +154,7 @@ def test_Tutorials(self): [major_value, middle_value, minor_value] = self.feat.get_EigenValues () [major_vector, middle_vector, minor_vector] = self.feat.get_EigenVectors () mass_center = self.feat.get_MassCenter () - + # check parameter # printf("%f %f %f.\n", mass_center (0), mass_center (1), mass_center (2)); # -10.104160 0.074005 -2.144748. @@ -162,28 +164,26 @@ def test_Tutorials(self): # 0.920083 -0.353143 0.169523. # printf("%f %f %f.\n", minor_vector (0), minor_vector (1), minor_vector (2)); # -0.355608 -0.934488 -0.016622. + + # expected = [-10.104160, 0.074005, -2.144748] + expected = np.array([-10.104160, 0.074005, -2.144748]) + # print(str(mass_center[0][0].dtype)) + datas = np.around(mass_center[0].tolist(), decimals=6) + # print("test : " + str(datas)) + self.assertEqual(datas.tolist(), expected.tolist()) + # self.assertEqual(datas, expected) - expected = [-10.104160, 0.074005, -2.144748] - # delta = 0.1 - # print("test : " + str(mass_center[0])) - # print(str(mass_center[0])) - # print(str(round(mass_center[0][0], 5))) - print(str(mass_center[0][0].dtype)) - # self.assertEqual(mass_center[0], expected) - # self.assertEqual(-10.10416, -10.10416) - # self.assertEqual(mass_center[0][0], float32(-10.10416)) - # self.assertEqual(mass_center[0][1], 0.074005) - # self.assertEqual(mass_center[0][2], -2.144748) - self.assertEqual(mass_center[0].tolist(), expected.tolist()) - - expected2 = [0.164287, -0.044990, -0.985386] - self.assertEqual(major_vector[0], expected2) + expected2 = np.array([0.164287, -0.044990, -0.985386]) + datas = np.around(major_vector[0].tolist(), decimals=6) + self.assertEqual(datas.tolist(), expected2.tolist()) - expected3 = [0.920083, -0.353143, 0.169523] - self.assertEqual(middle_vector[0], expected3) + expected3 = np.array([0.920083, -0.353143, 0.169523]) + datas = np.around(middle_vector[0].tolist(), decimals=6) + self.assertEqual(datas.tolist(), expected3.tolist()) - expected4 = [-0.355608, -0.934488, -0.016622] - self.assertEqual(minor_vector, expected4) + expected4 = np.array([-0.355608, -0.934488, -0.016622]) + datas = np.around(minor_vector[0].tolist(), decimals=6) + self.assertEqual(datas.tolist(), expected4.tolist()) # def test_get_MomentOfInertia(self): @@ -203,53 +203,46 @@ def test_Tutorials(self): class TestNormalEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) - self.feat = pcl.NormalEstimation() - - def test_set_SearchMethod(self): - kdTree = pcl.KdTree() - self.feat.set_SearchMethod(kdTree) - # f = self.feat.compute() - - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) - pass - - def test_set_RadiusSearch(self): - param = 0.0 - self.feat.set_RadiusSearch(param) - # f = self.feat.compute() - - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) - pass - - def test_set_KSearch(self): - param = 0 - self.feat.set_KSearch(param) - # self.feat.compute() - - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) - pass - - def test_compute(self): - # f = self.feat.compute() - - # check - # new instance is returned - # self.assertNotEqual(self.p, f) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) - pass + # self.feat = pcl.NormalEstimation() + # self.feat.setInputCloud(selp.p) + self.feat = self.p.make_NormalEstimation() + + + def test_Tutorials_Radius(self): + self.feat.set_RadiusSearch(0.03) + normals = self.feat.compute() + + # check - normals data + # 1. return type + # self.assertEqual(type(normals), type(pcl.PointCloud_Normal)) + # 2. point size + self.assertEqual(self.p.size, normals.size) + + # 3. same Tutorial data + # size -> + # self.assertEqual(self.p.size, normals.size) + # for i in range(0, normals.size): + # print ('normal_x: ' + str(normals[i][0]) + ', normal_y : ' + str(normals[i][1]) + ', normal_z : ' + str(normals[i][2])) + # print('end') + + + def test_Tutorials_KSearch(self): + tree = self.p.make_kdtree() + self.feat.set_SearchMethod(tree) + self.feat.set_KSearch(10) + normals = self.feat.compute() + # check - normals data + # 1. return type + # self.assertEqual(type(normals), type(pcl.PointCloud_Normal)) + # 2. point size is same + self.assertEqual(self.p.size, normals.size) + + # 3. same Tutorial data + # size -> + # self.assertEqual(self.p.size, normals.size) + # for i in range(0, normals.size): + # print ('normal_x: ' + str(normals[i][0]) + ', normal_y : ' + str(normals[i][1]) + ', normal_z : ' + str(normals[i][2])) + # print('end') ### RangeImageBorderExtractor ### @@ -273,6 +266,8 @@ class TestVFHEstimation(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) # self.feat = pcl.VFHEstimation() + # self.feat.setInputCloud(self.p) + self.feat = self.p.make_VFHEstimation() def test_set_SearchMethod(self): # kdTree = pcl.KdTree() @@ -313,4 +308,6 @@ def suite(): if __name__ == '__main__': - unittest.main() + # unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) diff --git a/tests/test_filters.py b/tests/test_filters.py index 60cfd92a9..75d1d28f9 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -824,4 +824,5 @@ def suite(): if __name__ == '__main__': - unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) diff --git a/tests/test_io.py b/tests/test_io.py index d9b3e13ed..e6e020f30 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -238,4 +238,5 @@ def suite(): if __name__ == '__main__': - unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) diff --git a/tests/test_kdtree.py b/tests/test_kdtree.py index 8c449800c..806434bd4 100644 --- a/tests/test_kdtree.py +++ b/tests/test_kdtree.py @@ -81,4 +81,5 @@ def suite(): if __name__ == '__main__': - unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) diff --git a/tests/test_keypoints.py b/tests/test_keypoints.py index 112be5524..df9490fc7 100644 --- a/tests/test_keypoints.py +++ b/tests/test_keypoints.py @@ -44,4 +44,5 @@ def suite(): if __name__ == '__main__': - unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) diff --git a/tests/test_recognition.py b/tests/test_recognition.py index 11c15f84d..9f12d5d4c 100644 --- a/tests/test_recognition.py +++ b/tests/test_recognition.py @@ -25,4 +25,5 @@ def suite(): if __name__ == '__main__': - unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) diff --git a/tests/test_registration.py b/tests/test_registration.py index aa0d26349..a6c3b85c8 100644 --- a/tests/test_registration.py +++ b/tests/test_registration.py @@ -228,4 +228,5 @@ def suite(): if __name__ == '__main__': - unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) diff --git a/tests/test_sampleconsensus.py b/tests/test_sampleconsensus.py index e8f36a974..6eed4db63 100644 --- a/tests/test_sampleconsensus.py +++ b/tests/test_sampleconsensus.py @@ -95,4 +95,5 @@ def suite(): if __name__ == '__main__': - unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) diff --git a/tests/test_segmentation.py b/tests/test_segmentation.py index 2f2801fa5..2806721cf 100644 --- a/tests/test_segmentation.py +++ b/tests/test_segmentation.py @@ -66,4 +66,5 @@ def suite(): if __name__ == '__main__': - unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) diff --git a/tests/test_surface.py b/tests/test_surface.py index b6c41914a..83390ecb9 100644 --- a/tests/test_surface.py +++ b/tests/test_surface.py @@ -57,4 +57,5 @@ def suite(): if __name__ == '__main__': - unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) From b7bde81ba6d089f7a4347b64eef04fb44fbc6ec9 Mon Sep 17 00:00:00 2001 From: sirokujira Date: Mon, 30 Oct 2017 20:11:06 +0900 Subject: [PATCH 19/80] test modified --- pcl/pxi/Recognition/AddList.txt | 0 tests/test_filters.py | 121 +- tests/test_kdtree.py | 2 +- tests/test_keypoints.py | 71 +- tests/test_octree.py | 99 + tests/test_sampleconsensus.py | 30 + tests/tutorials/bunny.pcd | 408 + tests/tutorials/table_scene_lms400.pcd | Bin 0 -> 5649007 bytes ...able_scene_mug_stereo_textured_noplane.pcd | 23771 ++++++++++++++++ 9 files changed, 24453 insertions(+), 49 deletions(-) create mode 100644 pcl/pxi/Recognition/AddList.txt create mode 100644 tests/test_octree.py create mode 100644 tests/tutorials/bunny.pcd create mode 100644 tests/tutorials/table_scene_lms400.pcd create mode 100644 tests/tutorials/table_scene_mug_stereo_textured_noplane.pcd diff --git a/pcl/pxi/Recognition/AddList.txt b/pcl/pxi/Recognition/AddList.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_filters.py b/tests/test_filters.py index 75d1d28f9..67e971103 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -14,41 +14,73 @@ 3.0, 6.0, 9.2; 4.0, 8.0, 12.2""" + +_data2 = np.array( + [[0.0080142, 0.694695,-0.26015], + [-0.342265,-0.446349, 0.214207], + [0.173687 ,-0.84253 ,-0.400481], + [-0.874475, 0.706127,-0.117635], + [0.908514 ,-0.598159, 0.744714]], dtype=np.float32) + + # Filter ### ApproximateVoxelGrid ### class TestApproximateVoxelGrid(unittest.TestCase): def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") - self.fil = pcl.ApproximateVoxelGrid() - self.fil.set_InputCloud(self.p) + self.p = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_lms400.pcd") + self.fil = self.p.make_ApproximateVoxelGrid() + # self.fil = pcl.ApproximateVoxelGrid() + # self.fil.set_InputCloud(self.p) - # def set_InputCloud(self, PointCloud pc not None): - # (self.me).setInputCloud (pc.thisptr_shared) def test_VoxelGrid(self): - x = 1.0 - y = 1.0 - z = 1.0 + x = 0.01 + y = 0.01 + z = 0.01 self.fil.set_leaf_size(x, y, z) result = self.fil.filter() - # check - # new instance is returned - # self.assertNotEqual(self.p, result) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) + self.assertTrue(result.size < self.p.size) + # self.assertEqual(result.size, 719) ### ConditionalRemoval ### class TestConditionalRemoval(unittest.TestCase): def setUp(self): - self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + # self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd") + # self.p = pcl.PointCloud(_data) + self.p = pcl.PointCloud(_data2) + self.fil = self.p.make_ConditionalRemoval(pcl.ConditionAnd()) + + # result + # nan nan nan + # -0.342265 -0.446349 0.214207 + # nan nan nan + # nan nan nan + # 0.908514 -0.598159 0.744714 + def test_Condition(self): + range_cond = self.p.make_ConditionAnd() + range_cond.add_Comparison2('z', pcl.CythonCompareOp_Type.GT, 0.0) + range_cond.add_Comparison2('z', pcl.CythonCompareOp_Type.LT, 0.8) + # build the filter + self.fil.set_KeepOrganized(True) + # apply filter + cloud_filtered = self.fil.filter () + + # check + expected = np.array([-0.342265,-0.446349,0.214207]) + datas = np.around(cloud_filtered.to_array()[1].tolist(), decimals=6) + self.assertEqual(datas.tolist(), expected.tolist()) + + expected2 = np.array([0.908514,-0.598159,0.744714]) + datas = np.around(cloud_filtered.to_array()[4].tolist(), decimals=6) + self.assertEqual(datas.tolist(), expected2.tolist()) # def set_KeepOrganized(self, flag): -# self.me.setKeepOrganized(flag) +# self.fil.setKeepOrganized(flag) # # def filter(self): # """ @@ -56,7 +88,7 @@ def setUp(self): # a new pointcloud # """ # cdef PointCloud pc = PointCloud() -# self.me.filter(pc.thisptr()[0]) +# self.fil.filter(pc.thisptr()[0]) # return pc @@ -611,50 +643,50 @@ def test_model_type(self): self.assertEqual(result_param, pcl.SACMODEL_STICK) pass + def test_copy_all_data(self): self.fil.set_copy_all_data(True) datas = self.fil.get_copy_all_data() # result + self.assertEqual(datas, True) self.fil.set_copy_all_data(False) datas = self.fil.get_copy_all_data() # result2 + self.assertEqual(datas, False) ### RadiusOutlierRemoval ### class TestRadiusOutlierRemoval(unittest.TestCase): def setUp(self): - self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") + # self.p = pcl.load("tests/table_scene_mug_stereo_textured_noplane.pcd") + self.p = pcl.PointCloud(_data2) + print(self.p.size) self.fil = self.p.make_RadiusOutlierRemoval() # self.fil = pcl.RadiusOutlierRemoval() # self.fil.set_InputCloud(self.p) - def test_filter(self): - result_point = self.fil.filter() def test_radius_seach(self): - radius = 1.0 + radius = 15.8 self.fil.set_radius_search(radius) result = self.fil.get_radius_search() - - # check - # new instance is returned - # self.assertNotEqual(self.p, result) - # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) - - def test_MinNeighborsInRadius(self): - min_pts = 10 - self.fil.set_MinNeighborsInRadius(min_pts) + self.assertEqual(radius, result) + + min_pts = 2 + self.fil.set_MinNeighborsInRadius(2) result = self.fil.get_MinNeighborsInRadius() - self.assertEqual(result, min_pts) - + self.assertEqual(min_pts, result) + + result_point = self.fil.filter() + # check # new instance is returned # self.assertNotEqual(self.p, result) # filter retains the same number of points - # self.assertEqual(self.p.size, f.size) + self.assertNotEqual(result_point.size, 0) + self.assertNotEqual(self.p.size, result_point.size) ### StatisticalOutlierRemovalFilter ### @@ -731,14 +763,14 @@ def testFilter(self): ### Official Test Base ### -p_65558 = [-0.058448, -0.189095, 0.723415] -p_84737 = [-0.088929, -0.152957, 0.746095] -p_57966 = [0.123646, -0.397528, 1.393187] -p_39543 = [0.560287, -0.545020, 1.602833] -p_17766 = [0.557854, -0.711976, 1.762013] -p_70202 = [0.150500, -0.160329, 0.646596] -p_102219 = [0.175637, -0.101353, 0.661631] -p_81765 = [0.223189, -0.151714, 0.708332] +p_65558 = np.array([-0.058448, -0.189095, 0.723415], dtype=np.float32) +p_84737 = np.array([-0.088929, -0.152957, 0.746095], dtype=np.float32) +p_57966 = np.array([0.123646, -0.397528, 1.393187], dtype=np.float32) +p_39543 = np.array([0.560287, -0.545020, 1.602833], dtype=np.float32) +p_17766 = np.array([0.557854, -0.711976, 1.762013], dtype=np.float32) +p_70202 = np.array([0.150500, -0.160329, 0.646596], dtype=np.float32) +p_102219 = np.array([0.175637, -0.101353, 0.661631], dtype=np.float32) +p_81765 = np.array([0.223189, -0.151714, 0.708332], dtype=np.float32) # class TESTFastBilateralFilter(unittest.TestCase): # def setUp(self): @@ -806,15 +838,14 @@ def suite(): # Filter suite.addTests(unittest.makeSuite(TestApproximateVoxelGrid)) suite.addTests(unittest.makeSuite(TestConditionalRemoval)) - suite.addTests(unittest.makeSuite(TestConditionAnd)) + # suite.addTests(unittest.makeSuite(TestConditionAnd)) suite.addTests(unittest.makeSuite(TestCropBox)) suite.addTests(unittest.makeSuite(TestCropHull)) suite.addTests(unittest.makeSuite(TestFieldComparison)) suite.addTests(unittest.makeSuite(TestPassthroughFilter)) suite.addTests(unittest.makeSuite(TestProjectInliers)) - suite.addTests(unittest.makeSuite(TestRadiusOutlierRemoval)) - suite.addTests(unittest.makeSuite(TestSegmenterNormal)) - # suite.addTests(unittest.makeSuite(TestStatisticalOutlierRemovalFilter)) + # suite.addTests(unittest.makeSuite(TestRadiusOutlierRemoval)) + suite.addTests(unittest.makeSuite(TestStatisticalOutlierRemovalFilter)) suite.addTests(unittest.makeSuite(TestVoxelGridFilter)) # PointCloudLibrary Official Base Test? diff --git a/tests/test_kdtree.py b/tests/test_kdtree.py index 806434bd4..aba02459e 100644 --- a/tests/test_kdtree.py +++ b/tests/test_kdtree.py @@ -76,7 +76,7 @@ def suite(): suite = unittest.TestSuite() # ketree suite.addTests(unittest.makeSuite(TestKdTree)) - # suite.addTests(unittest.makeSuite(TestKdTreeFLANN)) + suite.addTests(unittest.makeSuite(TestKdTreeFLANN)) return suite diff --git a/tests/test_keypoints.py b/tests/test_keypoints.py index df9490fc7..5a6c57301 100644 --- a/tests/test_keypoints.py +++ b/tests/test_keypoints.py @@ -17,29 +17,94 @@ # keyPoints ### HarrisKeypoint3D ### + + class TestHarrisKeypoint3D(unittest.TestCase): def setUp(self): - self.p = pcl.PointCloud(_data) + self.p = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "bunny.pcd") + self.kp = self.p.make_HarrisKeypoint3D() + + + def test_HarrisKeyPoint3D(self): + # 397 + base_point_count = 397 + self.assertEqual(self.p.size, base_point_count) + + self.kp.set_NonMaxSupression (True) + self.kp.set_Radius (0.01) + # self.kp.set_RadiusSearch (0.01) + keypoints = self.kp.compute() + + # 51 + keypoint_count = 51 + self.assertEqual(keypoints.size, keypoint_count) + + # + # count = 0 + # points = np.zeros((keypoints.size, 3), dtype=np.float32) + # # Generate the data + # for i in range(0, keypoints.size): + # # set Point Plane + # points[i][0] = keypoints[i][0] + # points[i][1] = keypoints[i][1] + # points[i][2] = keypoints[i][2] + # intensity = keypoints[i][3] + # if intensity > max: + # print("coords: " + str(keypoints[i][0]) + ";" + str(keypoints[i][1]) + ";" + str(keypoints[i][2]) ) + # max = intensity + # + # if intensity < min: + # min = intensity + # + # count = count + 1 + # + # points.resize(count, 3) + # print(points) + # keypoints3D.from_array(points) + # print("maximal responce: " + str(max) + " min responce: " + str(min) ) + ## + # coords: 0.008801460266113281;0.12533344328403473;0.03247201442718506 + # coords: 0.02295708656311035;0.12180554866790771;0.029724061489105225 + # coords: -0.06679701805114746;0.15040874481201172;0.03854072093963623 + # coords: -0.0672549456357956;0.11913366615772247;0.05214547738432884 + # coords: -0.05888630822300911;0.1165248453617096;0.03698881343007088 + # coords: 0.04757949709892273;0.07463110238313675;0.018482372164726257 + # maximal responce: 0.0162825807929039 min responce: 0.0 ### NarfKeypoint ### class TestNarfKeypoint(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.kp = pcl.NarfKeypoint() + # self.kp.setInputCloud(self.p) + + + def test_NarfKeypoint(self): + pass ### UniformSampling ### class TestUniformSampling(unittest.TestCase): def setUp(self): self.p = pcl.PointCloud(_data) + self.kp = pcl.UniformSampling() + + + def test_UniformSampling(self): + pass def suite(): suite = unittest.TestSuite() + # keypoints suite.addTests(unittest.makeSuite(TestHarrisKeypoint3D)) - suite.addTests(unittest.makeSuite(TestNarfKeypoint)) - suite.addTests(unittest.makeSuite(TestUniformSampling)) + # RangeImage no set + # suite.addTests(unittest.makeSuite(TestNarfKeypoint)) + # no add pxiInclude + # suite.addTests(unittest.makeSuite(TestUniformSampling)) + return suite diff --git a/tests/test_octree.py b/tests/test_octree.py new file mode 100644 index 000000000..fcf174bc2 --- /dev/null +++ b/tests/test_octree.py @@ -0,0 +1,99 @@ +import os.path +import pickle +import shutil +import tempfile +import unittest + +import pcl +import numpy as np + +_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)] +_DATA = """0.0, 0.0, 0.2; + 1.0, 2.0, 3.2; + 2.0, 4.0, 6.2; + 3.0, 6.0, 9.2; + 4.0, 8.0, 12.2""" + +class TestOctreePointCloud(unittest.TestCase): + + def setUp(self): + self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.octree = pcl.OctreePointCloud(0.1) + + def testLoad(self): + self.octree.set_input_cloud(self.p) + self.octree.define_bounding_box() + self.octree.add_points_from_input_cloud() + good_point = [0.035296999, -0.074322999, 1.2074] + rs = self.octree.is_voxel_occupied_at_point(good_point) + self.assertTrue(rs) + bad_point = [0.5, 0.5, 0.5] + rs = self.octree.is_voxel_occupied_at_point(bad_point) + self.assertFalse(rs) + voxels_len = 44 + self.assertEqual(len(self.octree.get_occupied_voxel_centers()), voxels_len) + self.octree.delete_voxel_at_point(good_point) + self.assertEqual(len(self.octree.get_occupied_voxel_centers()), voxels_len - 1) + + +class TestOctreePointCloudSearch(unittest.TestCase): + + def setUp(self): + self.octree = pcl.OctreePointCloudSearch(0.1) + self.p = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.octree.set_input_cloud(self.p) + self.octree.define_bounding_box() + self.octree.add_points_from_input_cloud() + + def testConstructor(self): + self.assertRaises(ValueError, pcl.OctreePointCloudSearch, 0.) + + def testRadiusSearch(self): + good_point = (0.035296999, -0.074322999, 1.2074) + rs = self.octree.radius_search(good_point, 0.5, 1) + self.assertEqual(len(rs[0]), 1) + self.assertEqual(len(rs[1]), 1) + rs = self.octree.radius_search(good_point, 0.5) + self.assertEqual(len(rs[0]), 19730) + self.assertEqual(len(rs[1]), 19730) + + +class TestOctreePointCloudChangeDetector(unittest.TestCase): + + def setUp(self): + self.octree = pcl.OctreePointCloudSearch(0.1) + self.p = pcl.load("tests" + os.path.sep + "tutorials" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd") + self.octree.set_input_cloud(self.p) + self.octree.define_bounding_box() + self.octree.add_points_from_input_cloud() + + + def testConstructor(self): + self.assertRaises(ValueError, pcl.OctreePointCloudChangeDetector, 0.) + + + def testRadiusSearch(self): + good_point = (0.035296999, -0.074322999, 1.2074) + rs = self.octree.radius_search(good_point, 0.5, 1) + self.assertEqual(len(rs[0]), 1) + self.assertEqual(len(rs[1]), 1) + rs = self.octree.radius_search(good_point, 0.5) + self.assertEqual(len(rs[0]), 19730) + self.assertEqual(len(rs[1]), 19730) + + +def suite(): + suite = unittest.TestSuite() + # octree + # base class + # suite.addTests(unittest.makeSuite(TestOctreePointCloud)) + suite.addTests(unittest.makeSuite(TestOctreePointCloudSearch)) + suite.addTests(unittest.makeSuite(TestOctreePointCloudChangeDetector)) + return suite + + +if __name__ == '__main__': + # unittest.main() + testSuite = suite() + unittest.TextTestRunner().run(testSuite) + diff --git a/tests/test_sampleconsensus.py b/tests/test_sampleconsensus.py index 6eed4db63..1c8274aa4 100644 --- a/tests/test_sampleconsensus.py +++ b/tests/test_sampleconsensus.py @@ -15,6 +15,8 @@ def setUp(self): self.p = pcl.PointCloud(_data) self.smp_con = pcl.RandomSampleConsensus() + def test_Test(self): + pass # def test_computeModel # def computeModel(self): @@ -38,6 +40,10 @@ def setUp(self): self.smp_con = pcl.RandomSampleConsensus() + def test_Test(self): + pass + + ### SampleConsensusModelCylinder ### class TestSampleConsensusModelCylinder(unittest.TestCase): def setUp(self): @@ -45,6 +51,10 @@ def setUp(self): self.smp_con = pcl.RandomSampleConsensus() + def test_Test(self): + pass + + ### SampleConsensusModelLine ### class TestSampleConsensusModelLine(unittest.TestCase): def setUp(self): @@ -52,6 +62,10 @@ def setUp(self): self.smp_con = pcl.RandomSampleConsensus() + def test_Test(self): + pass + + ### SampleConsensusModelPlane ### class TestSampleConsensusModelPlane(unittest.TestCase): def setUp(self): @@ -59,6 +73,10 @@ def setUp(self): self.smp_con = pcl.RandomSampleConsensus() + def test_Test(self): + pass + + ### SampleConsensusModelRegistration ### class TestSampleConsensusModelRegistration(unittest.TestCase): def setUp(self): @@ -66,6 +84,10 @@ def setUp(self): self.smp_con = pcl.RandomSampleConsensus() + def test_Test(self): + pass + + ### SampleConsensusModelSphere ### class TestSampleConsensusModelSphere(unittest.TestCase): def setUp(self): @@ -73,6 +95,10 @@ def setUp(self): self.smp_con = pcl.RandomSampleConsensus() + def test_Test(self): + pass + + ### SampleConsensusModelStick ### class TestSampleConsensusModelStick(unittest.TestCase): def setUp(self): @@ -80,6 +106,10 @@ def setUp(self): self.smp_con = pcl.RandomSampleConsensus() + def test_Test(self): + pass + + def suite(): suite = unittest.TestSuite() suite.addTests(unittest.makeSuite(TestRandomSampleConsensus)) diff --git a/tests/tutorials/bunny.pcd b/tests/tutorials/bunny.pcd new file mode 100644 index 000000000..e9d522c5a --- /dev/null +++ b/tests/tutorials/bunny.pcd @@ -0,0 +1,408 @@ +# .PCD v0.7 - Point Cloud Data file format +VERSION 0.7 +FIELDS x y z +SIZE 4 4 4 +TYPE F F F +COUNT 1 1 1 +WIDTH 397 +HEIGHT 1 +VIEWPOINT 0 0 0 1 0 0 0 +POINTS 397 +DATA ascii +0.0054215998 0.11349 0.040748999 +-0.0017447 0.11425 0.041273002 +-0.010661 0.11338 0.040916 +0.026422 0.11499 0.032623 +0.024545001 0.12284 0.024255 +0.034136999 0.11316 0.02507 +0.028860001 0.11773 0.027037 +0.02675 0.12234 0.017604999 +0.035750002 0.1123 0.019109 +0.015982 0.12307 0.031279001 +0.0079813004 0.12438 0.032798 +0.018100999 0.11674 0.035493001 +0.0086687002 0.11758 0.037537999 +0.01808 0.12536 0.026132001 +0.0080861002 0.12865999 0.02619 +0.02275 0.12146 0.029671 +-0.0018689 0.12456 0.033183999 +-0.011168 0.12376 0.032519002 +-0.0020063 0.11937 0.038104001 +-0.01232 0.11816 0.037427001 +-0.0016659 0.12879001 0.026782 +-0.011971 0.12723 0.026218999 +0.016484 0.12828 0.01928 +0.0070921001 0.13102999 0.018415 +0.0014615 0.13134 0.017095 +-0.013821 0.12886 0.019265 +-0.01725 0.11202 0.040077001 +-0.074556001 0.13415 0.051045999 +-0.065971002 0.14396 0.04109 +-0.071924999 0.14545 0.043265998 +-0.065509997 0.13624001 0.042195 +-0.071111999 0.13767 0.047518 +-0.079527996 0.13416 0.051194001 +-0.080421001 0.14428 0.042792998 +-0.082672 0.13779999 0.046806 +-0.088129997 0.13514 0.042222001 +-0.066325001 0.12347 0.050728999 +-0.072398998 0.12661999 0.052363999 +-0.066091001 0.11973 0.050880998 +-0.072012 0.11811 0.052294999 +-0.062433001 0.12627 0.043830998 +-0.068325996 0.12998 0.048875 +-0.063093998 0.11811 0.044399001 +-0.071300998 0.11322 0.048409998 +-0.080514997 0.12740999 0.052034002 +-0.078179002 0.1191 0.051116001 +-0.085216001 0.12609001 0.049001001 +-0.089538001 0.12621 0.044589002 +-0.082658999 0.11661 0.047970001 +-0.089535996 0.11784 0.044569999 +-0.056499999 0.15248001 0.030131999 +-0.055516999 0.15312999 0.026915001 +-0.036249999 0.17197999 0.00017688 +-0.037749998 0.17197999 0.00022189 +-0.036249999 0.16935 0.00051957997 +-0.033176001 0.15711001 0.0018682 +-0.051913001 0.15449999 0.011273 +-0.041707002 0.16642 0.0030522 +-0.049467999 0.16414 0.0041987998 +-0.041892 0.15669 0.0054879002 +-0.051224001 0.15877999 0.0080282995 +-0.062417001 0.15317 0.033160999 +-0.071670003 0.15319 0.033700999 +-0.062542997 0.15524 0.027404999 +-0.072109997 0.15549999 0.027644999 +-0.078662999 0.15268999 0.032267999 +-0.081569001 0.15374 0.026085 +-0.087250002 0.1523 0.022135001 +-0.057250001 0.15568 0.010325 +-0.057888001 0.1575 0.0073225 +-0.088500001 0.15222999 0.019215001 +-0.056129001 0.14616001 0.030850001 +-0.054705001 0.13555001 0.032127 +-0.054143999 0.14714 0.026275 +-0.046624999 0.13234 0.021909 +-0.05139 0.13694 0.025787 +-0.018278001 0.12238 0.030773001 +-0.021655999 0.11643 0.035209 +-0.031920999 0.11566 0.032850999 +-0.021348 0.12421 0.024561999 +-0.03241 0.12349 0.023293 +-0.024869001 0.12094 0.028744999 +-0.031746998 0.12039 0.028229 +-0.052912001 0.12685999 0.034968 +-0.041671999 0.11564 0.032997999 +-0.052037001 0.1168 0.034582 +-0.042495001 0.12488 0.024081999 +-0.047945999 0.12736 0.028108001 +-0.042420998 0.12035 0.028633 +-0.047660999 0.12024 0.028871 +-0.035964001 0.1513 0.00053949998 +-0.050597999 0.14740001 0.013881 +-0.046374999 0.13293 0.018289 +-0.049125001 0.13856 0.016269 +-0.042975999 0.14915 0.0054003 +-0.047965001 0.14658999 0.0086783003 +-0.022926001 0.12630001 0.018076999 +-0.031583 0.1259 0.017804001 +-0.041733 0.12796 0.016650001 +-0.061482001 0.14698 0.036168002 +-0.071728997 0.15026 0.038327999 +-0.060525998 0.13680001 0.035999 +-0.082618997 0.14823 0.035955001 +-0.087824002 0.14449 0.033778999 +-0.089000002 0.13828 0.037774 +-0.085662 0.15095 0.028208001 +-0.089601003 0.14725 0.025869001 +-0.090681002 0.13748001 0.02369 +-0.058722001 0.12924001 0.038991999 +-0.060075 0.11512 0.037684999 +-0.091812 0.12767 0.038702998 +-0.091727003 0.11657 0.039618999 +-0.093163997 0.12721001 0.025211001 +-0.093938001 0.12067 0.024398999 +-0.091582999 0.14522 0.019859999 +-0.090929002 0.13666999 0.019817 +-0.093093999 0.11635 0.018959001 +0.024948001 0.10286 0.041418001 +0.033599999 0.092626996 0.040463001 +0.027419999 0.096386001 0.043311998 +0.033920001 0.086911 0.041034002 +0.028155999 0.086837001 0.045084 +0.033810001 0.078603998 0.040854 +0.028124999 0.076874003 0.045058999 +0.0145 0.093278997 0.05088 +0.0074816998 0.094729997 0.052315 +0.017407 0.10535 0.043138999 +0.0079536 0.10633 0.042968001 +0.018510999 0.097194001 0.047253001 +0.0086436002 0.099322997 0.048078999 +-0.0020196999 0.095697999 0.053906001 +-0.011446 0.095169 0.053862002 +-0.001875 0.10691 0.043455001 +-0.011875 0.10688 0.043019 +-0.0017622 0.10071 0.046647999 +-0.012498 0.10008 0.045915999 +0.016380999 0.085894004 0.051642001 +0.0081166998 0.086910002 0.055227999 +0.017643999 0.076954998 0.052372001 +0.0081249997 0.076853 0.055535998 +0.020575 0.088169001 0.049006 +0.022445001 0.075721003 0.049563002 +-0.0017931 0.086848997 0.056843001 +-0.011943 0.086770996 0.057009 +-0.0019567001 0.076862998 0.057803001 +-0.011875 0.076963998 0.057022002 +0.03325 0.067541003 0.040033001 +0.028148999 0.066829003 0.042952999 +0.026760999 0.057829 0.042587999 +0.023571 0.047460001 0.040428001 +0.015831999 0.067418002 0.051639002 +0.0080431001 0.066901997 0.055006001 +0.013984 0.058885999 0.050416 +0.0080973003 0.056887999 0.052949999 +0.020566 0.065958001 0.048300002 +0.018594 0.056538999 0.047878999 +0.012875 0.052652001 0.049688999 +-0.0017852 0.066711999 0.056503002 +-0.011785 0.066885002 0.055015001 +-0.001875 0.056597002 0.054409999 +-0.01184 0.057054002 0.052714001 +-0.015688 0.052469 0.049614999 +0.0066153998 0.049929999 0.051259 +0.018088 0.046654999 0.043320999 +0.0088409996 0.045437001 0.046622999 +0.017688001 0.039719 0.043083999 +0.0081249997 0.039515998 0.045373999 +-0.0016111 0.049844 0.051720001 +-0.01245 0.046773002 0.050903 +-0.013851 0.039778002 0.051036 +-0.0020294001 0.044874001 0.047587 +-0.011653 0.046859998 0.048661001 +-0.0018611 0.039606001 0.047339 +-0.0091545004 0.039579999 0.049415 +0.043660998 0.094028004 0.02252 +0.034642 0.10473 0.031831 +0.028343 0.1072 0.036339 +0.036339 0.096551999 0.034843002 +0.031732999 0.099372 0.038504999 +0.036998 0.10668 0.026781 +0.032875001 0.11108 0.029589999 +0.040938001 0.097131997 0.026663 +0.044153001 0.086465999 0.024241 +0.053750001 0.072221003 0.020429 +0.045159999 0.076573998 0.023593999 +0.038036 0.086663 0.035459001 +0.037861001 0.076624997 0.035657998 +0.042215999 0.087237 0.028254 +0.042355001 0.076747 0.028580001 +0.043875001 0.096228004 0.015269 +0.044374999 0.096796997 0.0086444998 +0.039545 0.1061 0.017655 +0.042312998 0.10009 0.017237 +0.045405999 0.087416999 0.015604 +0.055117998 0.072639003 0.017944001 +0.048721999 0.073760003 0.017433999 +0.045917001 0.086297996 0.0094210999 +0.019432999 0.1096 0.039062999 +0.01097 0.11058 0.039648 +0.046657 0.057153001 0.031337 +0.056079 0.066335 0.024122 +0.048168 0.06701 0.026298 +0.056054998 0.057252999 0.024901999 +0.051162999 0.056662001 0.029137 +0.036913998 0.067032002 0.036122002 +0.033 0.064719997 0.039903 +0.038004 0.056506999 0.033119 +0.030629 0.054915 0.038484 +0.041875001 0.066382997 0.028356999 +0.041434001 0.060880002 0.029632 +0.044921 0.049904 0.031243 +0.054634999 0.050167002 0.022043999 +0.048280001 0.047370002 0.025845001 +0.037973002 0.048347 0.031456001 +0.028053001 0.047061 0.035990998 +0.025595 0.040346 0.034150001 +0.038454998 0.043508999 0.028278001 +0.032031 0.043278001 0.029253 +0.036580998 0.040335 0.025144 +0.03019 0.039321002 0.026846999 +0.059333 0.067891002 0.017361 +0.046500001 0.071451999 0.019710001 +0.059562001 0.057746999 0.018340001 +0.055636 0.049199 0.019173 +0.050500002 0.045063999 0.019181 +0.023 0.047803 0.039776001 +0.022389 0.038860001 0.038795002 +-0.019545 0.093900003 0.052205 +-0.021462001 0.10618 0.042059001 +-0.031027 0.10395 0.041228 +-0.022521 0.097723 0.045194 +-0.031858001 0.097025998 0.043878 +-0.043262001 0.10412 0.040890999 +-0.052154001 0.10404 0.040972002 +-0.041875001 0.096943997 0.042424001 +-0.051918998 0.096966997 0.043563001 +-0.021489 0.086672001 0.054767001 +-0.027000001 0.083086997 0.050283998 +-0.02107 0.077248998 0.054365002 +-0.026010999 0.089634001 0.048981 +-0.031893 0.087035 0.044169001 +-0.025625 0.074891999 0.047102001 +-0.031970002 0.076899998 0.042176999 +-0.041824002 0.086953998 0.043295 +-0.051825002 0.086843997 0.044932999 +-0.041917998 0.076728001 0.042564001 +-0.051849 0.076876998 0.042992 +-0.061338998 0.10393 0.041164 +-0.072672002 0.10976 0.044294 +-0.061783999 0.096825004 0.043327 +-0.070058003 0.096202999 0.041397002 +-0.080439001 0.11091 0.044342998 +-0.061926998 0.086723998 0.044520002 +-0.070344001 0.087352 0.041908 +-0.061409999 0.077489004 0.042178001 +-0.068579003 0.080144003 0.041023999 +-0.019045001 0.067731999 0.052388001 +-0.017742001 0.058908999 0.050809 +-0.023548 0.066381998 0.045226 +-0.033989999 0.067795001 0.040929001 +-0.02169 0.056549001 0.045164 +-0.036111001 0.060706001 0.040406998 +-0.041230999 0.066950999 0.041391999 +-0.048588 0.070955999 0.040357001 +-0.0403 0.059464999 0.040445998 +-0.021919999 0.044964999 0.052258 +-0.029186999 0.043584999 0.051088002 +-0.021919001 0.039825998 0.053521 +-0.030331001 0.039749 0.052133001 +-0.021997999 0.049846999 0.046725001 +-0.031911001 0.046847999 0.045187 +-0.035275999 0.039753001 0.047529001 +-0.042016 0.044822998 0.041593999 +-0.051940002 0.044707 0.043497998 +-0.041928001 0.039326999 0.043582 +-0.051856998 0.039252002 0.046211999 +-0.059452999 0.044240002 0.042862002 +-0.060764998 0.039087001 0.044362999 +-0.024273001 0.11038 0.039129 +-0.032379001 0.10878 0.037951998 +-0.041152 0.10853 0.037969001 +-0.051697999 0.10906 0.038258001 +-0.062091 0.10877 0.038274001 +-0.071654998 0.10596 0.037516002 +-0.074634001 0.097746 0.038346998 +-0.079120003 0.10508 0.032308001 +-0.080202997 0.096758001 0.033592001 +-0.083779998 0.10568 0.025985001 +-0.087292001 0.10314 0.020825 +-0.085210003 0.097079001 0.02781 +-0.088082001 0.096455999 0.022985 +-0.075159997 0.086039998 0.038816001 +-0.064576998 0.073454998 0.038970001 +-0.072278999 0.076416001 0.036412999 +-0.076375 0.072563 0.028729999 +-0.080031 0.087076001 0.034290001 +-0.078919001 0.079370998 0.032476999 +-0.084834002 0.086686 0.026974 +-0.087890998 0.089233004 0.022611 +-0.081047997 0.077169001 0.025829 +-0.086392999 0.10784 0.018634999 +-0.087672003 0.10492 0.017263999 +-0.089332998 0.098483004 0.01761 +-0.086374998 0.083067 0.018607 +-0.089179002 0.089185998 0.018947 +-0.082878999 0.076109 0.017794 +-0.082500003 0.074674003 0.0071175001 +-0.026436999 0.064140998 0.039321002 +-0.030035 0.066129997 0.038942002 +-0.026131 0.056531001 0.038881999 +-0.031663999 0.056657001 0.037742 +-0.045715999 0.064540997 0.039166 +-0.051959001 0.066868998 0.036733001 +-0.042557001 0.055544998 0.039026 +-0.049405999 0.056892 0.034343999 +-0.055500001 0.062391002 0.029498 +-0.053750001 0.058573999 0.026312999 +-0.034060001 0.050136998 0.038577002 +-0.041740999 0.049589999 0.03929 +-0.050974999 0.049435001 0.036965001 +-0.052999999 0.051065002 0.029208999 +-0.054145001 0.054568 0.012257 +-0.055847999 0.054170001 0.0083272001 +-0.054843999 0.049295001 0.011462 +-0.056150001 0.050618999 0.0092928996 +-0.061450999 0.068256997 0.035376001 +-0.069724999 0.069958001 0.032788001 +-0.062822998 0.063322 0.026885999 +-0.071037002 0.066786997 0.025227999 +-0.060857002 0.060568001 0.022643 +-0.067000002 0.061558001 0.020109 +-0.078199998 0.071278997 0.021032 +-0.062116001 0.045145001 0.037802 +-0.065472998 0.039512999 0.037964001 +-0.067249998 0.037420001 0.033413 +-0.072701998 0.065008 0.018701 +-0.061450001 0.059165001 0.018731 +-0.067500003 0.061478999 0.019221 +-0.057411 0.054113999 0.0038256999 +-0.079222001 0.070653997 0.017735001 +-0.062472999 0.044679999 0.01111 +-0.067249998 0.042257998 0.010414 +-0.066389002 0.040514998 0.01316 +-0.068359002 0.038502 0.011958 +-0.061381001 0.047479998 0.0076069999 +-0.068558998 0.043549001 0.0081575997 +-0.070928998 0.039829999 0.0085888002 +-0.016625 0.18375 -0.019734999 +-0.015198 0.17471001 -0.018867999 +-0.015944 0.16264001 -0.0091036996 +-0.015977001 0.16069999 -0.0088072 +-0.013251 0.16708 -0.015264 +-0.014292 0.16098 -0.011252 +-0.013986 0.184 -0.023739001 +-0.011633 0.17699 -0.023349 +-0.0091028996 0.16988 -0.021457 +-0.025562 0.18273 -0.0096247001 +-0.027249999 0.18254 -0.0094384002 +-0.025736 0.17948 -0.0089653004 +-0.031215999 0.17589 -0.0051154001 +-0.020399 0.18449999 -0.014943 +-0.021338999 0.17645 -0.014566 +-0.027124999 0.17234001 -0.010156 +-0.039390001 0.1733 -0.0023574999 +-0.022876 0.16406 -0.0078103002 +-0.031597 0.16651 -0.0049291998 +-0.022600001 0.15911999 -0.0037990001 +-0.030371999 0.15767001 -0.0012672 +-0.021158 0.16848999 -0.012383 +-0.027000001 0.17120001 -0.01022 +-0.041719001 0.16813 -0.00074957998 +-0.048250001 0.16748001 -0.00015191 +-0.037250001 0.16147 -7.2627998e-05 +-0.066428997 0.15783 -0.0085672997 +-0.071284004 0.15839 -0.005998 +-0.065978996 0.16288 -0.017792 +-0.071622998 0.16384 -0.015760001 +-0.066068001 0.16051 -0.013567 +-0.073307 0.16049001 -0.011832 +-0.077 0.16204 -0.019241 +-0.077179 0.15851 -0.01495 +-0.073691003 0.17286 -0.037944 +-0.077550001 0.17220999 -0.039175 +-0.065921001 0.16586 -0.025022 +-0.072094999 0.16784 -0.024724999 +-0.066 0.16808 -0.030916 +-0.073448002 0.17050999 -0.032044999 +-0.077770002 0.16434 -0.025938001 +-0.077892996 0.16039 -0.021299001 +-0.078211002 0.169 -0.034566 +-0.034667 0.15131 -0.00071028998 +-0.066117004 0.17353 -0.047453001 +-0.071985997 0.17612 -0.045384001 +-0.069250003 0.182 -0.055025999 +-0.064992003 0.17802 -0.054644998 +-0.069935001 0.17983 -0.051987998 +-0.077930003 0.17516001 -0.044399999 diff --git a/tests/tutorials/table_scene_lms400.pcd b/tests/tutorials/table_scene_lms400.pcd new file mode 100644 index 0000000000000000000000000000000000000000..5631e4b0d659bfea286819b97fdec93f6de88600 GIT binary patch literal 5649007 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

WtmCT(?Xrig#xgQkdGOYe%5B~Eh@c?Tfpa~4 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%0ApZD3#rU<{A*m?kpeKPx@!3A{>`rm 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 DmKH~a%^uZMB#mctzkg%%mFI?V8M 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 z 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

)NDwR{w)V?qy_zSKyJ_1{2n;mo6L5sqZ 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

S` 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%0Ax5pZ|13_(@kkcBUh60L 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 &L{an3yJSxcnuXj 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 z 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�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 x&(+#_RKnovpxo9JgMA*-jm+xBN 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%0DSpF~s%8-F~bse7M$ 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 z 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%0AJMaHkmBv>#!SN@P>i=OIYb9V* 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

q=v@s-!+7_g> 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

b}T$mNM!AwTVHzvI%Kb6(Y2Buio+?-!J-;l{ARN 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