import org.openrndr.application import org.openrndr.color.ColorRGBa import org.openrndr.draw.isolatedWithTarget import org.openrndr.draw.loadImage import org.openrndr.draw.renderTarget import org.openrndr.extra.runway.* /** * This demonstrates the body estimation model of PoseNet * This example requires a `runway/PoseNet` model active in Runway. */ fun main() = application { configure { width = 512 height = 512 } program { val rt = renderTarget(512, 512) { colorBuffer() } val image = loadImage("demo-data/images/peopleCity01.jpg") drawer.isolatedWithTarget(rt) { drawer.ortho(rt) drawer.clear(ColorRGBa.BLACK) drawer.image(image, (rt.width - image.width) / 2.0, (rt.height - image.height) / 2.0) } extend { val result: PoseNetResponse = runwayQuery("http://localhost:8000/query", PoseNetRequest(rt.colorBuffer(0).toData())) val poses = result.poses val scores = result.scores drawer.image(image, 0.0, 0.0, 512.0, 512.0) poses.forEach { poses -> poses.forEach { pose -> drawer.circle(pose[0]*512.0, pose[1]*512.0, 10.0) } } } } }