GithubHelp home page GithubHelp logo

heremaps / pptk Goto Github PK

View Code? Open in Web Editor NEW
606.0 22.0 111.0 8.7 MB

The Point Processing Toolkit (pptk) is a Python package for visualizing and processing 2-d/3-d point clouds.

Home Page: https://heremaps.github.io/pptk

License: MIT License

CMake 3.91% Python 19.70% C 0.27% C++ 76.12%
pointclouds 3-d visualization lidar graphics-3d gps-data octree kd-tree

pptk's Introduction

pptk - Point Processing Toolkit

Copyright (C) 2011-2018 HERE Europe B.V.

The Point Processing Toolkit (pptk) is a Python package for visualizing and processing 2-d/3-d point clouds.

At present, pptk consists of the following features.

  • A 3-d point cloud viewer that
    • accepts any 3-column numpy array as input,
    • renders tens of millions of points interactively using an octree-based level of detail mechanism,
    • supports point selection for inspecting and annotating point data.
  • A fully parallelized point k-d tree that supports k-nearest neighbor queries and r-near range queries (both build and queries have been parallelized).
  • A normal estimation routine based on principal component analysis of point cloud neighborhoods.

Homepage

pptk screenshots

The screenshots above show various point datasets visualized using pptk. The bildstein1 Lidar point cloud from Semantic3D (left), Beijing GPS trajectories from Geolife (middle left), DistrictofColumbia.geojson 2-d polygons from US building footprints (middle right), and a Mobius strip (right). For details, see the tutorials.

License

Unless otherwise noted in LICENSE files for specific files or directories, the LICENSE in the root applies to all content in this repository.

Install

One can either install pptk directly from PyPI

>> pip install pptk

or from the .whl file that results from building pptk from source.

>> pip install <.whl file>

Quickstart

In Python, generate 100 random 3-d points.

>> import numpy as np
>> x = np.random.rand(100, 3)

Visualize.

>> import pptk
>> v = pptk.viewer(x)

Set point size to 0.01.

>> v.set(point_size=0.01)

For more advanced examples, see tutorials.

Build

We provide CMake scripts for automating most of the build process, but ask the user to manually prepare dependencies and record their paths in the following CMake cache variables.

  • Numpy_INCLUDE_DIR
  • PYTHON_INCLUDE_DIR
  • PYTHON_LIBRARY
  • Eigen_INCLUDE_DIR
  • TBB_INCLUDE_DIR
  • TBB_tbb_LIBRARY
  • TBB_tbb_RUNTIME
  • TBB_tbbmalloc_LIBRARY
  • TBB_tbbmalloc_RUNTIME
  • Qt5_DIR

To set these variables, either use one of CMake's GUIs (ccmake or cmake-gui), or provide an initial CMakeCache.txt in the target build folder (for examples of initial cache files, see the CMakeCache..txt files)

Requirements

Listed are versions of libraries used to develop pptk, though earlier versions of these libraries may also work.

Windows
  1. Create an empty build folder
>> mkdir <build_folder>
  1. Create an initial CMakeCache.txt under <build_folder> and use it to provide values for the CMake cache variables listed above. (e.g. see CMakeCache.win.txt)

  2. Type the following...

>> cd <build_folder>
>> cmake -G "NMake Makefiles" <source_folder>
>> nmake
>> python setup.py bdist_wheel
>> pip install dist\<.whl file>
Linux

Similar to building on Windows.

Mac

Similar to building on Windows.

pptk's People

Contributors

victoriousluser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pptk's Issues

hold the viewer for different points

I am updating my points after every 0.5 seconds using a for loop and I want the viewer window to be the same and not open a new one again and again after every update. How do I do this?

Update point location without creating a new graph

Hey,

I wonder if there is a solution for updating a point location without having to close and restart the instance?

I have some moving points and I would like to be able to show this.

Thank you :)

no visualization comes out?

 python3
Python 3.6.9 (default, Oct  8 2020, 12:12:24) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> x = np.random.rand(100, 3)
>>> import pptk
>>> v = pptk.viewer(x)

pip installation not possible with python 3.8 - no wheel file

I've tried to install pptk on Arch Linux via pip.

$ pip search pptk
pptk (0.1.0)  - A Python package for facilitating point cloud processing.
$ pip install pptk
ERROR: Could not find a version that satisfies the requirement pptk (from versions: none)
ERROR: No matching distribution found for pptk
$ python --version
Python 3.8.2
$ pip --version
pip 20.0.2 from /usr/lib/python3.8/site-packages/pip (python 3.8)

I suspect this might be because https://pypi.org/project/pptk/#files does not list a wheel file for python 3.8?

usage through docker

I have been trying to get pptk viewer to run through docker (ubuntu) on a MacBook.
I can get glxgears to work, spyder to work through the same environment.
But have been unable to get pptk to work.
Errors are

QOpenGLShader: could not create shader
QOpenGLShaderProgram: could not create shader program
QOpenGLShader: could not create shader
QOpenGLShaderProgram: could not create shader program
QOpenGLShader: could not create shader
QOpenGLShaderProgram: could not create shader program
QOpenGLShader: could not create shader
QOpenGLShaderProgram: could not create shader program
QOpenGLShader: could not create shader
QOpenGLShaderProgram: could not create shader program
QOpenGLShader: could not create shader
Viewer: TCP server set up on port  44327

QOpenGLShaderProgram::uniformLocation( colorBottom ): shader program is not linked
QOpenGLShaderProgram::uniformLocation( colorTop ): shader program is not linked
QOpenGLShaderProgram::attributeLocation( position ): shader program is not linked
QOpenGLShaderProgram::attributeLocation( position ): shader program is not linked```

Any help will be appreciated

Point selection using polygons

Hello! Following the tutorials only is possible to do a selection of points using a box, is it possible to select a group of points using a polygon instead?

Loading point cloud in UTM coordinate system

Hello. When I load a point cloud that its coordinates are large numbers (E.g. x=317785.23 and y=5049158.31 and z=40.352), then I try to work with the viewer, all visually seems it. Then I select a point and get its coordinates back, it returns awkward numbers (E.g. x=89875.734375 , y=143165.140625 , z=17802.54296875). What happened? Did the viewer shift or transform all the points to a new coordinate system when loading the data? If so, where can I find those transformation parameters so that the point-picking operation can actually return me sensible coordinates? Thanks

when loading custom ply using the steps from tanks it doesn't get color

`python3
Python 3.6.9 (default, Oct 8 2020, 12:12:24)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

import numpy as np
import pptk
import plyfile
data = plyfile.PlyData.read('cloud.ply')['vertex']
xyz = np.c_[data['x'], data['y'], data['z']]
rgb = np.c_[data['red'], data['green'], data['blue']]
n = np.c_[data['nx'], data['ny'], data['nz']]
Traceback (most recent call last):
File "", line 1, in
File "/home/nvidia/.local/lib/python3.6/site-packages/plyfile.py", line 770, in getitem
return self.data[key]
File "/home/nvidia/.local/lib/python3.6/site-packages/numpy/core/memmap.py", line 331, in getitem
res = super(memmap, self).getitem(index)
ValueError: no field of name nx`

Change point shape

Hi, I really like the pptk project for its efficiency and aesthetics. Thank you for open-sourcing it! I'm wondering if it is a lot of work to allow us to change the shape of a point. I would like to use this to visualize voxels and it would be great if I can draw in cubes instead of balls.

pip install pptk doesn't work on ubuntu 18.04/kubuntu 18.04

Problem: After doing 'pip install pptk' on ubuntu/kubuntu 18.04, it doesn't work.

Diagnosis: The 'viewer' doesn't work because the libz.so.1 in site-packages/pptk/libs has some unresolved dependency issue.

Workaround:

  1. Rename the libz.so.1 in site-packages/pptk/libs
    e.g
    cd ~/.local/lib/python2.7/site-packages/pptk/libs/
    mv libz.so.1 libz.so.1.old
  2. Create a soft link from /lib/x86_64-linux-gnu/libz.so.1 to the site-packages/pptk/libs
    cd ~/.local/lib/python2.7/site-packages/pptk/libs/
    sudo ln -s /lib/x86_64-linux-gnu/libz.so.1

Install not find with python 3.7

Collecting pptk
Could not find a version that satisfies the requirement pptk (from versions: )
No matching distribution found for pptk

open viewer without sockets..?

I have had a lot of trouble trying to get pptk.viewer() to run on CentOS without root privilege.

The main limitation is that pptk/viewer/viewer.py uses a socket to start up the viewer. The program just hangs after calling pptk.viewer():

Python 3.6.8 (default, Aug  7 2019, 17:28:10)                                                            
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux                                                      
Type "help", "copyright", "credits" or "license" for more information. 
>>> import numpy as np; import pptk; x=np.random.rand(100,3); v = pptk.viewer(x)          

After ^C it shows that the program was hanging on
x = s.accept()

After changing
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
to
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.SO_REUSEADDR, 1)

in pptk/viewer/viewer.py I get

Python 3.6.8 (default, Aug  7 2019, 17:28:10) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np; import pptk; x=np.random.rand(100,3); v = pptk.viewer(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/dmf/.local/lib/python3.6/site-packages/pptk/viewer/viewer.py", line 48, in __init__
    s.bind(('localhost', 0))
OSError: [Errno 88] Socket operation on non-socket

Visualization of huge cloud points

Hello,
Congratulation for this library, is very useful and easy to use.
I am having problems to plot the Lidar cloud with 315.800 points.
I was able to plot a segmentation of this sensor, which had only 25.688 points.
Has a point limit which this function allows to view?

image
Thanks for all.
att,

3D Bounding Box support

It would be a nice feature to display 3D bounding boxes within the viewer.
One could probably add points to obtain the desired effect, but I believe it would be more efficient to have it coded directly in the render interface.

Is this feature a simple one to implement?

v.capture() doesn't work with pptk

Hi,

I want to save the view of the loaded pointcloud in the viewer as a png file.
I tried using v.capture() but it just gives black image.

Am I missing something `?

Thanks

Setup broken on pip 20.0

The following error arises when trying to build with pip 20.0

Traceback (most recent call last):
  File "setup.py", line 9, in <module>
    from pip._internal import wheel
ImportError: cannot import name 'wheel' from 'pip._internal' (/usr/lib/python3.8/site-packages/pip/_internal/__init__.py)

This is because pip._internal.wheel was moved, and pep425tags is now called pip._internal.utils.compatibility_tags.

I would like to point out that pip._internal is indeed internal to pip, you should not be using it in your setup.py, and this is the reason.

Memory error in Anaconda

Hello all,
Please can anyone help to fix this error message? I am trying to display a point cloud, the script is running well but this message keeps coming up. Many thanks, Mitchell.

Memory_error_

record method gives ConnectionRefusedError: [WinError 10061] after 52 frames

When I try and use the record method on windows I get this error after 52 frames.

ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

I think it has to do with how many/how rapidly new tcp connections are being made to save the screen shots and windows not liking/handling things correctly. it works as long as I don't try and save more than 52 frames. I don't know about very much about sockets etc so any help is appreciated.

It works fine on my linux machine.

Minimal code to reproduce.

import numpy as np
import pptk 
x = np.random.rand(100,3)
poses = []
for i in range(5):
    poses.append([0, 0, 0, i* np.pi/2, np.pi/4, 5])
v = pptk.viewer(x, x[:,-1])
v.set(point_size=0.01)
v.record('recording', poses, ts=np.linspace(0,1,len(poses)), fps=200)

API to plot in real time?

Is there an API to plot a set of points in real time? Basically I guess I don't want to kill the viewer, but rather add a new set of points and swap the buffer

Unexpected behaviour when loading a point cloud to viewer

I created a viewer and loaded a point cloud to it.
I want to update the viewer with new point clouds based on some input. When I do that, the view "jumps back to the initial position. I tried resetting the view parameters immediately after loading the new point cloud to the viewer but then it flickers.
Is this the desired behaviour? if so, is there a way around it?

Attached bellow is a minimum working example.


import numpy as np
import pptk
import open3d.visualization.gui as gui


class PCWindow:
    def __init__(self, pc_data):
        self.pc_data = pc_data
        self.frame_ind = 0

        # create frame slider
        self.window = gui.Application.instance.create_window("Test", 400, 80)
        em = self.window.theme.font_size
        layout = gui.Vert(0, gui.Margins(0.5 * em, 0.5 * em, 0.5 * em, 0.5 * em))
        slider = gui.Slider(gui.Slider.INT)
        slider.set_limits(0, 19)
        slider.set_on_value_changed(self._on_slider)
        self._label = gui.Label("Frame selector")
        self._label.text_color = gui.Color(1.0, 0.5, 0.0)
        layout.add_child(self._label)
        layout.add_child(slider)
        self.window.add_child(layout)

        # run viewer
        self.viewer = pptk.viewer(pc_data[0][:, :3])
        self.viewer.set(r=10)

    def _on_slider(self, new_val):
        self.frame_ind = int(new_val)
        phi, theta, r = self.viewer.get("phi"), self.viewer.get("theta"), self.viewer.get("r")
        print(new_val)
        self.viewer.clear()
        self.viewer.load(self.pc_data[self.frame_ind][:, :3])
        self.viewer.set(phi=phi, theta=theta, r=r)


def main():
    # Generate random points on a sphere
    phi = np.linspace(0, np.pi, 200)
    theta = np.linspace(0, 2 * np.pi, 200)
    xx = np.outer(np.sin(theta), np.cos(phi))
    yy = np.outer(np.sin(theta), np.sin(phi))
    zz = np.outer(np.cos(theta), np.ones_like(phi))

    # Shuffle and stack the points
    pc_data = []
    for i in range(20):
        points = np.stack([xx.flatten(), yy.flatten(), zz.flatten()], 1)
        np.random.shuffle(points)
        pc_data.append(points + i / 20)


    #run gui and viewer
    gui.Application.instance.initialize()
    w = PCWindow(pc_data)
    gui.Application.instance.run()


if __name__ == "__main__":
    main()

Note: Related to #35 and #21 and #15.

Displaying details of Point Cloud

I have a point cloud that displays in the pptk.viewer(), however, I can't seem to zoom the camera to get close enough to see the data.
The data is a point cloud of a road collected from lidar on a vehicle on that road, but whenever I view it in the viewer, it just comes out as what looks like a line (presumably the line of the dots that make the road), but I can't seem to zoom in to look at the details of the road.
The lidar LAS file was converted to an X,Y,Z numpy array using liblas and lat, lon, alt values.

pptk.view() hangs without showing debug/info/error information

Hi there, following the example, pptk.view() hangs without showing any information.
How to reproduce:

import numpy as np
import pptk
x = np.random.rand(100, 3)
pptk.viewer(x)

I'm running pptk 0.1.0 installed via pip install --user pptk with Python 3.7.1 on an x64 Arch Linux machine.

Issue with HiDPI on Linux

It seems there is an issue with HiDPI scaling on Linux.

How to reproduce

I got the following on Arch Linux, KDE, monitor resolution 3200x1800, scale factor set to 2.0 through KScreen settings.

import numpy as np
import pptk
x = np.random.rand(100, 3)
v = pptk.viewer(x)

Screenshot_20191128_120849

change camera position

Hi, I begining to use PPTK for point coud viewer.

But I need help: when I opening a new point cloud. I use this code to open xyz point cloud
v = pptk.viewer(xyz)

Every thing works fine, but when I try to change the camera position
v.set(lookat=(1.8, 8.3, 6.67) )

The camera is moving,but when I begining to use mouse to navigate, the camera position come back to the original position (same as when I open the point cloud)

Do you have an idea how to set camera position and staying there

Thank you
Pascal

Resizing the viewer window

Hi,

I cannot seem to change the size of the viewer window in order for it to not be square, as by default.

I do not find any attributes for the window size.

Add Jupyter notebooks to documentation

Adding Jupyter notebooks in the documentation would reduce the effort to copy-paste from the tutorials and would get people started more quickly. The 3D output will be automatically shown in a newly opened external Qt window.

visulize sequence of point clouds

Hi,

I have a sequence of point cloud. I tried pptk to visualize and interact with each cloud but independently (evoking a new viewer). I'm wondering if there's a way to update the current pptk viewer to plot the next point cloud?

Thanks.

X axis inverted

Hi,

Is there a reason why the X axis is inverted, positive on the left, negative on the right?

And is there a way to change it?

Not Achieving a Finely Densely Point Cloud on pptk

I successfully imported my point cloud .xyz using pptk but it appears segmented (intervals). Please is there any way I can make the point cloud all joined together?

Secondly, is it possible to load and view two different point clouds on one pptk viewer?

Many thanks, all.

"Hellow World" example shows no points

Just downloaded and the display of bildstein_station1_xyz_intensity_rgb.txt worked right out of the box.
BUT
I cannot get the simple example of displaying 100 random points to work.
the viewer opens and says that it is displaying the points but no points are vizable
The colored axis and a white squared grid can be seen and the y can be rotated.
I see some other issues which are similar but they seem to not even get the viewer to show.

Thanks

Compilation of viewer as stand-alone breaks at [ 71%] Linking CXX executable viewer

Hi there,

I'm trying to test some custom modifications of the viewer but cannot get it to compile.
"make" runs into the following issue:
[ 71%] Linking CXX executable viewer Copying $<TARGET_FILE:viewer> to /home/tba/Documents/Projects/pptk/pptk/viewer CMake Error: Error processing file: /home/tba/Documents/Projects/pptk/pptk/viewer/cmake/CopyLinuxDependencies.cmake CMakeFiles/viewer.dir/build.make:126: recipe for target 'viewer' failed make[2]: *** [viewer] Error 1 make[2]: *** Deleting file 'viewer' CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/viewer.dir/all' failed make[1]: *** [CMakeFiles/viewer.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2
I'm using Ubuntu 18.04
This is the output of cmake:
-- The C compiler identification is GNU 7.4.0 -- The CXX compiler identification is GNU 7.4.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so -- Configuring done -- Generating done -- Build files have been written to: /home/tba/Documents/Projects/pptk/pptk/viewer

Some help would be greatly appreciated!

Non blocking annotation

It seems to be impossible to use the viewer and run an infinite loop in charge of getting selected points.
I want to use pptk to annotate point clouds for segmentation, however when ever I start the viewer and try in a loop to get the selected points and adding them to an array when the number of points is greater than 0, the viewer freeze not allowing me to select anything and crashes.
Any idea how to get a non blocking visualization where I can do somethings else while keeping the viewer up ?
What I got until now :

import numpy as np
import pptk
import open3d

pcd    = open3d.read_point_cloud("../PointCloudCode/Data/Samples/strawberry_3d_v3/15.ply")
P      = np.asarray(pcd.points)
colors = np.asarray(pcd.colors)
v = pptk.viewer(P,colors)
v.set(point_size=0.007)
while(True):
    if(len(v.get('selected'))>0):
        print(len(v.get('selected')),"  points selected")
    v.set(point_size=0.007)

Functions: adding lines/polygon in viewer+ displaying point cloud on existing viewer

Hi @heremaps

I have been impressed with your tool but there is a limit that the tool cannot be used much in community. I do believe that if the tool can have more functions in the following, it will be definitely the incredible tool

  1. Adding a method to display lines/polygons/planes together with point cloud.
  2. To load a new point cloud to an existing viewer
  3. To be able to display multiple point clouds together on an existing viewer.

Thanks!

Background

For visualization, how could I switch the background theme? It always maintains dark and I wish to change to white or something lighter.

Missing OSX python3.7

On PyPi, there's only a Mac version for python 3.6, and not for python 3.7. I tried to install off of pip, and was very confused for a while.

Thanks!

updating point cloud fails after 15 times

I am trying to create a live point cloud movie from recorded TOF data.

== code start ==
i = 0
for frame in stream:
channels = frame.getChannels()
depth = np.reshape(np.array(channels[0].getData()), channels[0].getResolution())
confidence = np.reshape(np.array(channels[1].getData()), channels[1].getResolution())
sel = np.logical_and(depth > depth_range[0], depth < depth_range[1])
xyz = d2pcl(depth, pp=pixel_pitch, f=focal_length, sel=sel)
if i == frame_range[0]:
v = pptk.viewer(xyz)
v.set(floor_level=2000)
v.set(lookat=[camera_pose[0], camera_pose[1], camera_pose[2]], phi=camera_pose[3], theta=camera_pose[4], r=camera_pose[5])
raw_input('Resize the window, then press any key to CONTINUE ...')
else:
v.clear()
time.sleep(2)
v.load(xyz)
time.sleep(2)
v.set(lookat=[camera_pose[0], camera_pose[1], camera_pose[2]], phi=camera_pose[3], theta=camera_pose[4], r=camera_pose[5])
time.sleep(2)
v.capture(targetFileNameBase % i)

== code end ==

Unfortunately, this loop hangs after 15 iterations with:
get socket.error: [Errno 10061] No connection could be made because the target machine actively refused it

Any recommendations to work around this issue?
I am running Python 2.7 on Windows 7.

Connecting to Existing Viewer

I would like to connect to an already existing viewer (for example by providing its port) and use it the same way as pptk.viewer(points). While developing I have to restart the whole script, so at the moment I'm pointlessly loading the point cloud again and again.

Generate Depth Image

I have the following parameters,

  1. Point cloud
  2. Camera Intrinsic
  3. Homogeneous Matrix

How can I use these values to generate Depth Image?

add_custom_target cannot create target "pptk.libs.temp-NOTFOUND"

Hi, I was trying to build pptk with CMake 3.12.3 in Linux.
However, I got the following problem:

CMake Error at cmake/UsefulMacros.cmake:83 (add_custom_target):
add_custom_target cannot create target "pptk.libs.temp-NOTFOUND" because
another target with the same name already exists. The existing target is a
custom target created in source directory
"/p/project/ccstdl/cstdl005/pptk/pptk/libs". See documentation for policy
CMP0002 for more details.
Call Stack (most recent call first):
pptk/libs/CMakeLists.txt:9 (copy_file)
pptk/libs/CMakeLists.txt:46 (copy_system_file)

I tried to use set(ALLOW_DUPLICATE_CUSTOM_TARGETS TRUE) in the CMakeLists.txt, but the problem was not solved.

Any ideas?

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.