#########################################
# ImageDisplay.py
# description: used as a general template
# more info @: http:#myrobotlab.org/service/ImageDisplay
#########################################
from time import sleep
import math
# Runtime.setConfig("default")
# start a image display service
display = runtime.start("display", "ImageDisplay")
# =========== Default Values ==================
# setting these are setting default values
# so that any new display is created they will
# have the following properties automatically set accordingly
#
# the display will always be on top
# display.setAlwaysOnTop(true)
# when a picture is told to go fullscreen
# and is not the same ratio as the screen dimensions
# this tells whether to scale and extend to the min
# or max extension
# display.setAutoscaleExtendsMax(true)
# if there is a background while fullscreen - set the color rgb
# display.setColor("#000000")
# if true will resize image (depending on setAutoscaleExtendsMax)
# display.setFullScreen(false)
# set which screen device to be displayed on
# display.setScreen(0)
# set the default location for images to display
# null values will mean image will be positioned in the center of the screen
# display.setLocation(null, null)
# set the default dimensions for images to display
# null values will be the dimensions of the original image
# display.setDimension(null, null)
# most basic display - an image file, can be relative or absolute file path
# displays are named - if you don't name them - they're name will be "default"
# this creates a display named default and display a snake.jpg
display.display("snake.jpg")
sleep(1)
# this creates a new display called "beetle" and loads it with beetle.jpg
# "default" display is still snake.jpg
display.display("beetle", "beetle.jpg")
sleep(1)
# the image display service can also display images from the web
# just supply the full url - they can be named as well - this one replaces the snake image
# since a name was not specified - its loaded into "default"
display.display(
"https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/InMoov_Wheel_1.jpg/220px-InMoov_Wheel_1.jpg")
sleep(1)
# animated gifs can be displayed as well - this is the earth
# in fullscreen mode
display.displayFullScreen(
"earth", "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Rotating_earth_%28large%29.gif/300px-Rotating_earth_%28large%29.gif")
sleep(1)
# we can resize a picture
display.resize("earth", 600, 600)
sleep(1)
# and re-position it
display.move("earth", 800, 800)
# make another picture go fullscreen
display.displayFullScreen("robot", "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/FANUC_6-axis_welding_robots.jpg/1280px-FANUC_6-axis_welding_robots.jpg")
sleep(1)
display.display("monkeys", "https://upload.wikimedia.org/wikipedia/commons/e/e8/Gabriel_Cornelius_von_Max%2C_1840-1915%2C_Monkeys_as_Judges_of_Art%2C_1889.jpg")
sleep(1)
display.displayFullScreen("robot", "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/FANUC_6-axis_welding_robots.jpg/1280px-FANUC_6-axis_welding_robots.jpg")
sleep(1)
display.display("inmoov", "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/InMoov_Wheel_1.jpg/220px-InMoov_Wheel_1.jpg")
sleep(1)
display.display("mrl", "https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/VirtualInMoov.jpg/220px-VirtualInMoov.jpg")
sleep(1)
for i in range(0, 100):
display.move("monkeys", 20 + i, 20 + i)
sleep(0.05)
display.resize("monkeys", 200, 200)
sleep(1)
display.move("monkeys", 30, 30)
sleep(1)
# now we can close some of the displays
display.close("monkeys")
sleep(1)
display.close("robot")
sleep(1)
x0 = 500
y0 = 500
r = 300
x = 0
y = 0
# move the inmoov image in a circle on the screen
for t in range(0, int(4 * math.pi)):
x = int(r * math.cos(t) + x0)
y = int(r * math.sin(t) + y0)
display.move("inmoov", x, y)
sleep(0.1)
# in this example we will search for images and display them
# start a google search and get the images back, then display them
google = runtime.start("google", "GoogleSearch")
images = google.imageSearch("monkey")
for img in images:
display.displayFullScreen(img)
# display.display(img)
sleep(1)
# set defaults to be fullscree and autoscale extends max for all
# new displays
display.setFullScreen(True)
display.setAutoscaleExtendsMax(True)
# another example we'll use wikipedia service to search
# and attach the wikipedia to the display service
# it will automagically display when an image is found
wikipedia = runtime.start("wikipedia", "Wikipedia")
wikipedia.attach(display)
# display.attach(wikipedia)
images = wikipedia.imageSearch("bear")
sleep(2)
display.setFullScreen(False)
display.setAutoscaleExtendsMax(False)
display.displayFullScreen("https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Noto_Emoji_Pie_1f4e2.svg/512px-Noto_Emoji_Pie_1f4e2.svg.png?20190227024729")
sleep(1)
display.display("data/Emoji/512px/U+1F47D.png")
sleep(1)
display.display("https://raw.githubusercontent.com/googlefonts/noto-emoji/main/png/512/emoji_u1f62c.png")
sleep(1)
display.displayFullScreen("https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Noto_Emoji_Pie_1f4e2.svg/512px-Noto_Emoji_Pie_1f4e2.svg.png?20190227024729")
sleep(1)
display.display("dino", "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Noto_Emoji_Pie_1f995.svg/512px-Noto_Emoji_Pie_1f995.svg.png?20190227143252")
sleep(1)
# save all displays in their current state
display.save()
sleep(5)
# close everything
display.closeAll()
# close everything and reset defaults
display.reset()
#
# opencv selected image - or object identified image
# Display an image as it is. The string might be an internet source or path to an image on the computer.
display.display("asimo", "https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/HONDA_ASIMO.jpg/800px-HONDA_ASIMO.jpg")
sleep(2)
# Closes all active images.
display.closeAll()
# Display an image scaled by a given multiplication factor.
display.displayScaled("https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Asimo_look_new_design.jpg/800px-Asimo_look_new_design.jpg", 2)
sleep(2)
display.closeAll()
# Display an image faded faded by a given value between 0 and 1 and scaled by a given multiplication factor.
display.displayScaled("https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Asimo_look_new_design.jpg/800px-Asimo_look_new_design.jpg", 0.1, 2)
sleep(2)
display.closeAll()
# Display an image in FullScreen Mode (Fullscreenmode can be terminated with a mouseclick.
display.displayFullScreen("https://upload.wikimedia.org/wikipedia/commons/f/fe/Escher_Cube.png")
sleep(2)
display.closeAll()
# Display an image in FullScreen Mode faded by a given value between 0 and 1. (Fullscreenmode can be terminated with a mouseclick.
display.displayFullScreen("https://upload.wikimedia.org/wikipedia/commons/f/fe/Escher_Cube.png", 0.1)
sleep(2)
display.closeAll()
# opencv example - shows how to display mutliple saved images
# with greater control in the image display service - although
# its only displaying 3 images here - they could be moved and a row
# of captured images based on classification could be reported
# start a image display service
display = runtime.start("display", "ImageDisplay")
cv = runtime.start('cv','OpenCV')
cv.capture()
sleep(5)
cv.attach(display)
sleep(4)
cv.saveImage()
sleep(1)
cv.saveImage()
sleep(1)
cv.saveImage()
Shown running on a Raspberry Pi 3
Shown running on a Raspberry Pi 3
Worky without SwingGui -
Worky without SwingGui - tested with Test service through WebGui