• Stars
    star
    6,284
  • Rank 6,046 (Top 0.2 %)
  • Language
    Go
  • License
    Other
  • Created over 6 years ago
  • Updated 19 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Go package for computer vision using OpenCV 4 and beyond. Includes support for DNN, CUDA, and OpenCV Contrib.

GoCV

GoCV

Go Reference Linux Windows Go Report Card License

The GoCV package provides Go language bindings for the OpenCV 4 computer vision library.

The GoCV package supports the latest releases of Go and OpenCV (v4.9.0) on Linux, macOS, and Windows. We intend to make the Go language a "first-class" client compatible with the latest developments in the OpenCV ecosystem.

GoCV supports CUDA for hardware acceleration using Nvidia GPUs. Check out the CUDA README for more info on how to use GoCV with OpenCV/CUDA.

GoCV also supports Intel OpenVINO. Check out the OpenVINO README for more info on how to use GoCV with the Intel OpenVINO toolkit.

How to use

Hello, video

This example opens a video capture device using device "0", reads frames, and shows the video in a GUI window:

package main

import (
	"gocv.io/x/gocv"
)

func main() {
	webcam, _ := gocv.OpenVideoCapture(0)
	window := gocv.NewWindow("Hello")
	img := gocv.NewMat()

	for {
		webcam.Read(&img)
		window.IMShow(img)
		window.WaitKey(1)
	}
}

Face detect

GoCV

This is a more complete example that opens a video capture device using device "0". It also uses the CascadeClassifier class to load an external data file containing the classifier data. The program grabs each frame from the video, then uses the classifier to detect faces. If any faces are found, it draws a green rectangle around each one, then displays the video in an output window:

package main

import (
	"fmt"
	"image/color"

	"gocv.io/x/gocv"
)

func main() {
    // set to use a video capture device 0
    deviceID := 0

	// open webcam
	webcam, err := gocv.OpenVideoCapture(deviceID)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer webcam.Close()

	// open display window
	window := gocv.NewWindow("Face Detect")
	defer window.Close()

	// prepare image matrix
	img := gocv.NewMat()
	defer img.Close()

	// color for the rect when faces detected
	blue := color.RGBA{0, 0, 255, 0}

	// load classifier to recognize faces
	classifier := gocv.NewCascadeClassifier()
	defer classifier.Close()

	if !classifier.Load("data/haarcascade_frontalface_default.xml") {
		fmt.Println("Error reading cascade file: data/haarcascade_frontalface_default.xml")
		return
	}

	fmt.Printf("start reading camera device: %v\n", deviceID)
	for {
		if ok := webcam.Read(&img); !ok {
			fmt.Printf("cannot read device %v\n", deviceID)
			return
		}
		if img.Empty() {
			continue
		}

		// detect faces
		rects := classifier.DetectMultiScale(img)
		fmt.Printf("found %d faces\n", len(rects))

		// draw a rectangle around each face on the original image
		for _, r := range rects {
			gocv.Rectangle(&img, r, blue, 3)
		}

		// show the image in the window, and wait 1 millisecond
		window.IMShow(img)
		window.WaitKey(1)
	}
}

More examples

There are examples in the cmd directory of this repo in the form of various useful command line utilities, such as capturing an image file, streaming mjpeg video, counting objects that cross a line, and using OpenCV with Tensorflow for object classification.

How to install

To install GoCV, you must first have the matching version of OpenCV installed on your system. The current release of GoCV requires OpenCV 4.9.0.

Here are instructions for Ubuntu, Raspian, macOS, and Windows.

Ubuntu/Linux

Installation

You can use make to install OpenCV 4.9.0 with the handy Makefile included with this repo. If you already have installed OpenCV, you do not need to do so again. The installation performed by the Makefile is minimal, so it may remove OpenCV options such as Python or Java wrappers if you have already installed OpenCV some other way.

Quick Install

First, change directories to where you want to install GoCV, and then use git to clone the repository to your local machine like this:

cd $HOME/folder/with/your/src/
git clone https://github.com/hybridgroup/gocv.git

Make sure to change $HOME/folder/with/your/src/ to where you actually want to save the code.

Once you have cloned the repo, the following commands should do everything to download and install OpenCV 4.9.0 on Linux:

cd gocv
make install

If you need static opencv libraries

make install BUILD_SHARED_LIBS=OFF

If it works correctly, at the end of the entire process, the following message should be displayed:

gocv version: 0.36.1
opencv lib version: 4.9.0

That's it, now you are ready to use GoCV.

Using CUDA with GoCV

See the cuda directory for information.

Using OpenVINO with GoCV

See the openvino directory for information.

Make Install for OpenVINO and Cuda

The following commands should do everything to download and install OpenCV 4.9.0 with CUDA and OpenVINO on Linux. Make sure to change $HOME/folder/with/your/src/ to the directory you used to clone GoCV:

cd $HOME/folder/with/gocv/
make install_all

If you need static opencv libraries

make install_all BUILD_SHARED_LIBS=OFF

If it works correctly, at the end of the entire process, the following message should be displayed:

gocv version: 0.36.1
opencv lib version: 4.9.0-openvino
cuda information:
  Device 0:  "GeForce MX150"  2003Mb, sm_61, Driver/Runtime ver.10.0/10.0

Complete Install

If you have already done the "Quick Install" as described above, you do not need to run any further commands. For the curious, or for custom installations, here are the details for each of the steps that are performed when you run make install.

First, change directories to where you want to install GoCV, and then use git to clone the repository to your local machine like this:

cd $HOME/folder/with/your/src/
git clone https://github.com/hybridgroup/gocv.git

Make sure to change $HOME/folder/with/your/src/ to where you actually want to save the code.

Install required packages

First, you need to change the current directory to the location where you cloned the GoCV repo, so you can access the Makefile:

cd $HOME/folder/with/your/src/gocv

Next, you need to update the system, and install any required packages:

make deps

Download source

Now, download the OpenCV 4.9.0 and OpenCV Contrib source code:

make download

Build

Build everything. This will take quite a while:

make build

If you need static opencv libraries

make build BUILD_SHARED_LIBS=OFF

Install

Once the code is built, you are ready to install:

make sudo_install

Verifying the installation

To verify your installation you can run one of the included examples.

First, change the current directory to the location of the GoCV repo:

cd $HOME/src/gocv.io/x/gocv

Now you should be able to build or run any of the examples:

go run ./cmd/version/main.go

The version program should output the following:

gocv version: 0.36.1
opencv lib version: 4.9.0

Cleanup extra files

After the installation is complete, you can remove the extra files and folders:

make clean

Custom Environment

By default, pkg-config is used to determine the correct flags for compiling and linking OpenCV. This behavior can be disabled by supplying -tags customenv when building/running your application. When building with this tag you will need to supply the CGO environment variables yourself.

For example:

export CGO_CPPFLAGS="-I/usr/local/include"
export CGO_LDFLAGS="-L/usr/local/lib -lopencv_core -lopencv_face -lopencv_videoio -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lopencv_objdetect -lopencv_features2d -lopencv_video -lopencv_dnn -lopencv_xfeatures2d"

Please note that you will need to run these 2 lines of code one time in your current session in order to build or run the code, in order to setup the needed ENV variables. Once you have done so, you can execute code that uses GoCV with your custom environment like this:

go run -tags customenv ./cmd/version/main.go

Docker

The project now provides Dockerfile which lets you build GoCV Docker image which you can then use to build and run GoCV applications in Docker containers. The Makefile contains docker target which lets you build Docker image with a single command:

make docker

By default Docker image built by running the command above ships Go version 1.20.2, but if you would like to build an image which uses different version of Go you can override the default value when running the target command:

make docker GOVERSION='1.22.0'

Running GUI programs in Docker on macOS

Sometimes your GoCV programs create graphical interfaces like windows eg. when you use gocv.Window type when you display an image or video stream. Running the programs which create graphical interfaces in Docker container on macOS is unfortunately a bit elaborate, but not impossible. First you need to satisfy the following prerequisites:

  • install xquartz. You can also install xquartz using homebrew by running brew cask install xquartz
  • install socat brew install socat

Note, you will have to log out and log back in to your machine once you have installed xquartz. This is so the X window system is reloaded.

Once you have installed all the prerequisites you need to allow connections from network clients to xquartz. Here is how you do that. First run the following command to open xquart so you can configure it:

open -a xquartz

Click on Security tab in preferences and check the "Allow connections" box:

app image

Next, you need to create a TCP proxy using socat which will stream X Window data into xquart. Before you start the proxy you need to make sure that there is no process listening in port 6000. The following command should not return any results:

lsof -i TCP:6000

Now you can start a local proxy which will proxy the X Window traffic into xquartz which acts a your local X server:

socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"

You are now finally ready to run your GoCV GUI programs in Docker containers. In order to make everything work you must set DISPLAY environment variables as shown in a sample command below:

docker run -it --rm -e DISPLAY=docker.for.mac.host.internal:0 your-gocv-app

Note, since Docker for MacOS does not provide any video device support, you won't be able run GoCV apps which require camera.

Alpine 3.7 Docker image

There is a Docker image with Alpine 3.7 that has been created by project contributor @denismakogon. You can find it located at https://github.com/denismakogon/gocv-alpine.

Raspbian

Installation

We have a special installation for the Raspberry Pi that includes some hardware optimizations. You use make to install OpenCV 4.9.0 with the handy Makefile included with this repo. If you already have installed OpenCV, you do not need to do so again. The installation performed by the Makefile is minimal, so it may remove OpenCV options such as Python or Java wrappers if you have already installed OpenCV some other way.

Quick Install

First, change directories to where you want to install GoCV, and then use git to clone the repository to your local machine like this:

cd $HOME/folder/with/your/src/
git clone https://github.com/hybridgroup/gocv.git

Make sure to change $HOME/folder/with/your/src/ to where you actually want to save the code.

The following make command should do everything to download and install OpenCV 4.9.0 on Raspbian:

cd $HOME/folder/with/your/src/gocv
make install_raspi

If it works correctly, at the end of the entire process, the following message should be displayed:

gocv version: 0.36.1
opencv lib version: 4.9.0

That's it, now you are ready to use GoCV.

macOS

Installation

You can install OpenCV 4.9.0 using Homebrew.

If you already have an earlier version of OpenCV (3.4.x) installed, you should probably remove it before installing the new version:

brew uninstall opencv

You can then install OpenCV 4.9.0:

brew install opencv

pkgconfig Installation

pkg-config is used to determine the correct flags for compiling and linking OpenCV. You can install it by using Homebrew:

brew install pkgconfig

Verifying the installation

To verify your installation you can run one of the included examples.

First, change the current directory to the location of the GoCV repo:

cd $HOME/folder/with/your/src/gocv

Now you should be able to build or run any of the examples:

go run ./cmd/version/main.go

The version program should output the following:

gocv version: 0.36.1
opencv lib version: 4.9.0

Custom Environment

By default, pkg-config is used to determine the correct flags for compiling and linking OpenCV. This behavior can be disabled by supplying -tags customenv when building/running your application. When building with this tag you will need to supply the CGO environment variables yourself.

For example:

export CGO_CXXFLAGS="--std=c++11"
export CGO_CPPFLAGS="-I/usr/local/Cellar/opencv/4.9.0/include"
export CGO_LDFLAGS="-L/usr/local/Cellar/opencv/4.9.0/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core"

Please note that you will need to run these 3 lines of code one time in your current session in order to build or run the code, in order to setup the needed ENV variables. Once you have done so, you can execute code that uses GoCV with your custom environment like this:

go run -tags customenv ./cmd/version/main.go

Windows

Installation

The following assumes that you are running a 64-bit version of Windows 10.

In order to build and install OpenCV 4.9.0 on Windows, you must first download and install MinGW-W64 and CMake, as follows.

MinGW-W64

Download and run the MinGW-W64 compiler installer from https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/.

The latest version of the MinGW-W64 toolchain is 8.1.0, but any version from 8.X on should work.

Choose the options for "posix" threads, and for "seh" exceptions handling, then install to the default location c:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0.

Add the C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin path to your System Path.

CMake

Download and install CMake https://cmake.org/download/ to the default location. CMake installer will add CMake to your system path.

OpenCV 4.9.0 and OpenCV Contrib Modules

The following commands should do everything to download and install OpenCV 4.9.0 on Windows:

chdir %GOPATH%\src\gocv.io\x\gocv
win_build_opencv.cmd

It might take up to one hour.

Last, add C:\opencv\build\install\x64\mingw\bin to your System Path.

Verifying the installation

Change the current directory to the location of the GoCV repo:

chdir %GOPATH%\src\gocv.io\x\gocv

Now you should be able to build or run any of the command examples:

go run cmd\version\main.go

The version program should output the following:

gocv version: 0.36.1
opencv lib version: 4.9.0

That's it, now you are ready to use GoCV.

Custom Environment

By default, OpenCV is expected to be in C:\opencv\build\install\include. This behavior can be disabled by supplying -tags customenv when building/running your application. When building with this tag you will need to supply the CGO environment variables yourself.

Due to the way OpenCV produces DLLs, including the version in the name, using this method is required if you're using a different version of OpenCV.

For example:

set CGO_CXXFLAGS="--std=c++11"
set CGO_CPPFLAGS=-IC:\opencv\build\install\include
set CGO_LDFLAGS=-LC:\opencv\build\install\x64\mingw\lib -lopencv_core490 -lopencv_face490 -lopencv_videoio490 -lopencv_imgproc490 -lopencv_highgui490 -lopencv_imgcodecs490 -lopencv_objdetect490 -lopencv_features2d490 -lopencv_video490 -lopencv_dnn490 -lopencv_xfeatures2d490 -lopencv_plot490 -lopencv_tracking490 -lopencv_img_hash490

Please note that you will need to run these 3 lines of code one time in your current session in order to build or run the code, in order to setup the needed ENV variables. Once you have done so, you can execute code that uses GoCV with your custom environment like this:

go run -tags customenv cmd\version\main.go

Android

There is some work in progress for running GoCV on Android using Gomobile. For information on how to install OpenCV/GoCV for Android, please see: https://gist.github.com/ogero/c19458cf64bd3e91faae85c3ac887490

See original discussion here: #235

Profiling

Since memory allocations for images in GoCV are done through C based code, the go garbage collector will not clean all resources associated with a Mat. As a result, any Mat created must be closed to avoid memory leaks.

To ease the detection and repair of the resource leaks, GoCV provides a Mat profiler that records when each Mat is created and closed. Each time a Mat is allocated, the stack trace is added to the profile. When it is closed, the stack trace is removed. See the runtime/pprof documentation.

In order to include the MatProfile custom profiler, you MUST build or run your application or tests using the -tags matprofile build tag. For example:

go run -tags matprofile cmd/version/main.go

You can get the profile's count at any time using:

gocv.MatProfile.Count()

You can display the current entries (the stack traces) with:

var b bytes.Buffer
gocv.MatProfile.WriteTo(&b, 1)
fmt.Print(b.String())

This can be very helpful to track down a leak. For example, suppose you have the following nonsense program:

package main

import (
	"bytes"
	"fmt"

	"gocv.io/x/gocv"
)

func leak() {
	gocv.NewMat()
}

func main() {
	fmt.Printf("initial MatProfile count: %v\n", gocv.MatProfile.Count())
	leak()

	fmt.Printf("final MatProfile count: %v\n", gocv.MatProfile.Count())
	var b bytes.Buffer
	gocv.MatProfile.WriteTo(&b, 1)
	fmt.Print(b.String())
}

Running this program produces the following output:

initial MatProfile count: 0
final MatProfile count: 1
gocv.io/x/gocv.Mat profile: total 1
1 @ 0x40b936c 0x40b93b7 0x40b94e2 0x40b95af 0x402cd87 0x40558e1
#	0x40b936b	gocv.io/x/gocv.newMat+0x4b	/go/src/gocv.io/x/gocv/core.go:153
#	0x40b93b6	gocv.io/x/gocv.NewMat+0x26	/go/src/gocv.io/x/gocv/core.go:159
#	0x40b94e1	main.leak+0x21			/go/src/github.com/dougnd/gocvprofexample/main.go:11
#	0x40b95ae	main.main+0xae			/go/src/github.com/dougnd/gocvprofexample/main.go:16
#	0x402cd86	runtime.main+0x206		/usr/local/Cellar/go/1.11.1/libexec/src/runtime/proc.go:201

We can see that this program would leak memory. As it exited, it had one Mat that was never closed. The stack trace points to exactly which line the allocation happened on (line 11, the gocv.NewMat()).

Furthermore, if the program is a long running process or if GoCV is being used on a web server, it may be helpful to install the HTTP interface )). For example:

package main

import (
	"net/http"
	_ "net/http/pprof"
	"time"

	"gocv.io/x/gocv"
)

func leak() {
	gocv.NewMat()
}

func main() {
	go func() {
		ticker := time.NewTicker(time.Second)
		for {
			<-ticker.C
			leak()
		}
	}()

	http.ListenAndServe("localhost:6060", nil)
}

This will leak a Mat once per second. You can see the current profile count and stack traces by going to the installed HTTP debug interface: http://localhost:6060/debug/pprof/gocv.io/x/gocv.Mat.

How to contribute

Please take a look at our CONTRIBUTING.md document to understand our contribution guidelines.

Then check out our ROADMAP.md document to know what to work on next.

Why this project exists

The https://github.com/go-opencv/go-opencv package for Go and OpenCV does not support any version above OpenCV 2.x, and work on adding support for OpenCV 3 had stalled for over a year, mostly due to the complexity of SWIG. That is why we started this project.

The GoCV package uses a C-style wrapper around the OpenCV 4 C++ classes to avoid having to deal with applying SWIG to a huge existing codebase. The mappings are intended to match as closely as possible to the original OpenCV project structure, to make it easier to find things, and to be able to figure out where to add support to GoCV for additional OpenCV image filters, algorithms, and other features.

For example, the OpenCV videoio module wrappers can be found in the GoCV package in the videoio.* files.

This package was inspired by the original https://github.com/go-opencv/go-opencv project, the blog post https://medium.com/@peterleyssens/using-opencv-3-from-golang-5510c312a3c and the repo at https://github.com/sensorbee/opencv thank you all!

License

Licensed under the Apache 2.0 license. Copyright (c) 2017-2024 The Hybrid Group.

Logo generated by GopherizeMe - https://gopherize.me

More Repositories

1

gobot

Golang framework for robotics, drones, and the Internet of Things (IoT)
Go
8,627
star
2

cylon

JavaScript framework for robotics, drones, and the Internet of Things (IoT)
JavaScript
3,979
star
3

artoo

Ruby framework for robotics, drones, and the Internet of Things (IoT)
Ruby
1,533
star
4

gabba

Simple way to send server-side notifications to Google Analytics
Ruby
464
star
5

gort

Command Line Interface (CLI) for RobotOps
Go
434
star
6

kidsruby

KidsRuby is a Ruby programming environment meant for kids to learn and have fun!
JavaScript
333
star
7

taskmapper

Taskmapper provides a universal API to bug tracking and project management systems using Ruby
Ruby
218
star
8

rubyserial

FFI Ruby library for RS-232 serial port communication
Ruby
154
star
9

mechanoid

Mechanoid is a framework for WebAssembly applications on embedded systems and IoT devices.
Go
145
star
10

node-bebop

A Node.js client for controlling Parrot Bebop & Bebop2 quadcopters.
JavaScript
144
star
11

robeaux

Universal dashboard to robotic devices based on React
CSS
125
star
12

GitHub-Wikifier

A pre-commit Git Hook that will generate all the Table of Contents you will ever need. Just write your content, and let it take over.
Shell
100
star
13

gitnesse

Acceptance testing with Cucumber using a git-based wiki to store feature stories
Ruby
88
star
14

cppp-io

Common Protocol for Programming Physical Input and Output
72
star
15

cylon-raspi

Cylon adaptor for the Raspberry Pi
JavaScript
69
star
16

go-ncs

Go language bindings for the Intel Movidius Neural Compute Stick
Go
49
star
17

watchbot

Pebble watch app to control robotic devices
JavaScript
46
star
18

cylon-sphero

Cylon adaptor for Sphero robot
JavaScript
46
star
19

cylon-firmata

Cylon adaptor for the Firmata protocol
JavaScript
45
star
20

artoo-arduino

Artoo adaptor for the Arduino microcontroller.
Ruby
45
star
21

tinyglobo

A pico balloon floats into the great big world, towing a RP2040 Pico programmed with TinyGo
Go
42
star
22

kidsruby-class-1

Class notes for KidsRuby Class 1
Ruby
40
star
23

gophercon-2019

Go
37
star
24

cylon-intel-iot

Cylon adaptors for the Intel Edison & Galileo
JavaScript
36
star
25

cylon-leapmotion

Cylon adaptor for the Leap Motion
JavaScript
35
star
26

gophercar

Gophercar is a DIY platform for self-driving miniature cars using the Go programming language.
Go
32
star
27

artoo-raspi

Artoo adaptor for the Raspberry Pi
Ruby
32
star
28

commander

Mobile application to control robots
JavaScript
30
star
29

cylon-ble

Cylon.js adaptor/drivers for Bluetooth LE
JavaScript
29
star
30

cylon-neurosky

Cylon adaptor/driver for the Neurosky Mindwave
JavaScript
28
star
31

cylon-sphero-ble

Cylon.js driver for the Sphero BB-8 & Sphero Ollie robots
JavaScript
26
star
32

gophercon-2017

Hardware hack day support info for Gophercon 2017 and beyond!
Go
26
star
33

cvscope

Experimental CLI tool for visually exploring video image filters and algorithms that are part of OpenCV. Written in Go using GoCV.
Go
25
star
34

artoo-sphero

Artoo adaptor for the Sphero robot.
Ruby
24
star
35

cylon-spark

Cylon adaptor for the Spark core device
JavaScript
24
star
36

cylon-octoblu

Cylon adaptor/driver for the Octoblu machine to machine messaging system
JavaScript
23
star
37

gophercon-2018

Gophercon hardware hackday
Go
22
star
38

cylon-opencv

Cylon adaptor and driver for OpenCV
JavaScript
20
star
39

cylon-beaglebone

Cylon adaptor for the Beaglebone Black single board computer
JavaScript
20
star
40

artoo-ardrone

Artoo adaptor for the ARDrone 2.0 quadcopter
Ruby
20
star
41

cylon-bebop

Cylon.js driver/adaptor for Parrot Bebop drone
JavaScript
19
star
42

cylon-gpio

Cylon drivers for GPIO devices
JavaScript
19
star
43

cylon-crazyflie

Cylon adaptor/driver for the Crazyflie nanocopter
JavaScript
18
star
44

cylon-ardrone

Cylon adaptor and drivers for the Parrot ARDrone 2.0
JavaScript
17
star
45

gopherbot

A robotic gopher plushie that you can code using TinyGo.
Go
17
star
46

kidsrubyinstaller-osx

KidsRuby installer for OSX
Shell
16
star
47

cylon-api-socketio

Cylon.js API plugin for Socket.io
JavaScript
15
star
48

gobot-firmata

Gobot adaptor for the Firmata protocol
Go
14
star
49

cylon-mip

Cylon.js driver for MIP
JavaScript
13
star
50

cylon-site

Website for Cylon.js - JavaScript robotics framework using Node.js
HTML
13
star
51

kidsruby-os

KidsRuby helps kids learn to program using the awesome language Ruby anywhere they go, just bring their own USB drive, plug in, and reboot.
Ruby
13
star
52

cylon-tessel

Cylon adaptor for the Tessel
JavaScript
13
star
53

artoo-opencv

Artoo drivers for OpenCV computer vision library
Ruby
12
star
54

artoo-leapmotion

Artoo adaptor for the Leap Motion controller
Ruby
11
star
55

taskmapper-redmine

Ticketmaster provider for Redmine API
Ruby
11
star
56

cylon-api-http

Cylon.js API plugin for http/https
JavaScript
11
star
57

cylon-i2c

Cylon.js drivers for i2c devices
JavaScript
11
star
58

kidsrubyinstaller-windows

KidsRuby installer for Windows
Ruby
10
star
59

mechanoid-examples

Examples written using Mechanoid framework for WASM-based embedded development.
Go
10
star
60

kidsruby-examples

KidsRuby examples
Ruby
10
star
61

gobot-gpio

Gobot drivers for GPIO devices
Go
9
star
62

gobot-site

Website for Gobot - Golang framework/set of libraries for robotics and physical computing
Haml
9
star
63

gobot-spark

Gobot adaptor for the spark core
Go
9
star
64

kidsruby-site

Have fun and learn Ruby programming for free! Works on any computer.
CSS
9
star
65

cylon-speech

Cylon adaptor/driver for the eSpeak Text To Speech software
JavaScript
8
star
66

gopherboat

Robotic boat programmed using TinyGo
Go
8
star
67

gobot-beaglebone

Gobot adaptor for the Beaglebone Black development board
Go
8
star
68

cylon-joystick

Cylon adaptor and driver for HID joysticks/controllers
JavaScript
8
star
69

artoo-roomba

Artoo adaptor for the Roomba robot.
Ruby
8
star
70

artoo-pebble

Artoo adaptor for the Pebble smart watch
Ruby
8
star
71

artoo-spark

Artoo adaptor for the Spark core device
Ruby
8
star
72

kidsruby-cookbooks

KidsRuby Chef recipes used for build server
Ruby
7
star
73

cylon-hue

Cylon.js adaptor/driver for Phillips Hue
JavaScript
7
star
74

cylon-mqtt

Cylon.js adaptor/driver for MQTT protocol
JavaScript
7
star
75

hacklab-2019

GoLab 2019 "HackLab" for hardware hacking using Go
Go
7
star
76

cylon-audio

Cylon.js adaptor/driver for audio
JavaScript
6
star
77

cylon-rapiro

Cylon adaptor/driver for the Rapiro bipedal robot
JavaScript
6
star
78

hashcode

Just a little fun project to chart the results of #code2014
Ruby
6
star
79

taskmapper-github

Ticketmaster provider for Github ticket system
Ruby
6
star
80

taskmapper-unfuddle

Ticketmaster provider for Unfuddle
Ruby
6
star
81

artoo-joystick

Artoo adaptor and driver for any SDL joystick
Ruby
6
star
82

artoo-gpio

Artoo standard drivers for GPIO devices
Ruby
6
star
83

gobot-sphero

Gobot adaptor for Sphero robot
Go
5
star
84

artoo-neurosky

Artoo adaptor/drivers for the Neurosky Mindwave Mobile
Ruby
5
star
85

gobot-dotgo-2017

Gobot workshop for dotGo
Go
5
star
86

gobot-opencv

Go
5
star
87

artoo-keyboard

Artoo adaptor/driver for keyboard interaction
Ruby
5
star
88

taskmapper-lighthouse

Ticketmaster provider for Lighthouse
Ruby
5
star
89

gophercon-2022

Hardware hack session at Gophercon 2022
Go
5
star
90

taskmapper-basecamp

Ticketmaster provider for 37 Signals' Basecamp
Ruby
5
star
91

gobot-ardrone

Gobot adaptor and drivers for the Parrot ARDrone 2.0
Go
5
star
92

cylon-chip

Cylon.js adaptor for the C.H.I.P. $9 computer
JavaScript
5
star
93

cylon-wiced-sense

Cylon.js driver for WICED Sense
JavaScript
5
star
94

phonegap-cylon-spark

An phonegap app to control spark with cylon
CSS
5
star
95

gdg-2019

Hardware hack session at the GDG Leads Summit 2019
Go
5
star
96

cylon-keyboard

Cylon adaptor and driver for keyboard input
JavaScript
5
star
97

taskmapper-assembla

Ticketmaster provider for Assembla API
Ruby
4
star
98

gopherconeu-2022

Go
4
star
99

gocv-site

The website for GoCV
HTML
4
star
100

cylon-powerup

Cylon.js driver for Powerup 3.0 glider
JavaScript
4
star