1# Gemini AI Object Detection and Bounding Box Visualizer
2
3This application visualizes object detection results by drawing bounding boxes on images using the [Google's Gemini 1.5 Pro AI model](https://ai.google.dev/).
4
5Try using this image of 8 bananas, with 1 row and 1/2/4 columns: [https://f2.phage.directory/blogalog/bananas-8.png](https://f2.phage.directory/blogalog/bananas-8.png)
6
7Or this image of a phage plaque assay, with 3x3 grid and high contrast turned on: [https://f2.phage.directory/blogalog/pae7.png](https://f2.phage.directory/blogalog/pae7.png)
8
9This app is an adaptation of Simon Willison's idea, which you can read more about here: [https://simonwillison.net/2024/Aug/26/gemini-bounding-box-visualization/](https://simonwillison.net/2024/Aug/26/gemini-bounding-box-visualization/)
8 const email = await valTownUser.getEmail();
9 const tier = await valTownUser.getTier();
10 const profileImageUrl = await valTownUser.getProfileImageUrl();
11
12 console.log('User Information:');
16 console.log(`Email: ${email}`);
17 console.log(`Tier: ${tier}`);
18 console.log(`Profile Image: ${profileImageUrl || 'Not set'}`);
19
20 console.log('\nEndpoint URLs:');
64```
65
66### getProfileImageUrl()
67Retrieves the URL of the user's profile image.
68- Use case: Showing the user's avatar in a val.
69```ts
70import { valTownUser } from "https://esm.town/v/iamseeley/valTownUser";
71
72export const getProfileImageUrl = () => valTownUser.getProfileImageUrl();
73
74// Example usage:
75const profileImageUrl = await getProfileImageUrl();
76console.log(`Profile image URL: ${profileImageUrl || 'Not set'}`);
77```
78
10* Create a [Val Town API token](https://www.val.town/settings/api), open the browser preview of this val, and use the API token as the password to log in.
11
12<img width=500 src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/7077d1b5-1fa7-4a9b-4b93-f8d01d3e4f00/public"/>
1# ☔️ Umbrella reminder if there's rain today
2
3
4
5## Setup
10
11<div align="center">
12<img src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/67a1d35e-c37c-41a4-0e5a-03a9ba585d00/public" width="500px"/>
13</div>
4
5<div align="center">
6<img src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/67a1d35e-c37c-41a4-0e5a-03a9ba585d00/public" width="700px"/>
7</div>
3This is a lightweight Blob Admin interface to view and debug your Blob data.
4
5
6
7Use this button to install the val:
10* Create a [Val Town API token](https://www.val.town/settings/api), open the browser preview of this val, and use the API token as the password to log in.
11
12<img width=500 src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/7077d1b5-1fa7-4a9b-4b93-f8d01d3e4f00/public"/>
338 ---
339
340 Val Town comes with blob storage built-in. It allows for storing any data: text, JSON, images. You can access it via [\`std/blob\`](https://www.val.town/v/std/blob).
341
342 Blob storage is scoped globally to your account. If you set a blob in one val, you can retrieve it by the same key in another val. It's backed by Cloudflare R2.