Need help with augmented-reality?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

juangallostra
148 Stars 69 Forks MIT License 9 Commits 6 Opened issues

Description

Augmented reality proof of concept project with Python and OpenCV

Services available

!
?

Need anything else?

Contributors list

No Data

augmented-reality

Augmented reality card based application with Python, numpy and OpenCV

Usage

  • Place the image of the surface to be tracked inside the
    reference
    folder.
  • On line 36 of
    src/ar_main.py
    replace
    'model.jpg'
    with the name of the image you just copied inside the
    reference
    folder.
  • On line 40 of
    src/ar_main.py
    replace
    'fox.obj'
    with the name of the model you want to render. To change the size of the rendered model change the scale parameter (number
    3
    ) in line 103 of
    src/ar_main.py
    by a suitable number. This might require some trial and error.
  • Open a terminal session inside the project folder and run
    python src/ar_main.py

Command line arguments

  • --rectangle
    ,
    -r
    : Draws the projection of the reference surface on the video frame as a blue rectangle.
  • --matches
    ,
    -m
    : Draws matches between reference surface and video frame.

Troubleshooting

If you get the message:

Unable to capture video

printed to your terminal, the most likely cause is that your OpenCV installation has been compiled without FFMPEG support. Pre-built OpenCV packages such as the ones downloaded via pip are not compiled with FFMPEG support, which means that you have to build it manually.

If you get the error:

Traceback (most recent call last):
File "src/ar_main.py", line 174, in
main()
File "src/ar_main.py", line 40, in main
obj = OBJ(os.path.join(dir_name, 'models/fox.obj'), swapyz=True)
File "[...]/augmented-reality/src/objloader_simple.py", line 16, in init
v = v[0], v[2], v[1]
TypeError: 'map' object is not subscriptable

The most likely cause is that you are trying to execute the code with Python 3 and the code is written in Python 2. The

map
function in Python 3 returns an iterable object of type map, and not a subscriptible list. To fix it, change the calls to
map()
by
list(map())
on lines 14, 19 and 24 of
src/objloader_simple.py
.

Explanation

See this blog entries for an in-depth explanation of the logic behind the code:

Results

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.