Compare commits
5 Commits
40b657d45c
...
pi
Author | SHA1 | Date | |
---|---|---|---|
6edf6e5815 | |||
6a550d5847 | |||
7dba63c954 | |||
d261d8e46f | |||
59307bff41 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,2 +1,6 @@
|
||||
*.jpeg
|
||||
*.jpg
|
||||
*.png
|
||||
imageserver/images/
|
||||
imageserver/models
|
||||
__pycache__
|
40
imageserver/client.py
Normal file
40
imageserver/client.py
Normal file
@@ -0,0 +1,40 @@
|
||||
# import aiohttp
|
||||
# import aiofiles
|
||||
import asyncio
|
||||
import requests
|
||||
from io import BytesIO
|
||||
from PIL import Image
|
||||
import shutil
|
||||
from random import randint
|
||||
|
||||
def main():
|
||||
print("Starting")
|
||||
|
||||
img = Image.new('RGB', (25, 25), color = (randint(0, 255), randint(0, 255), randint(0, 255)))
|
||||
img = Image.open("/home/jimmy/image.png")
|
||||
byte_io = BytesIO()
|
||||
img.save(byte_io, 'png')
|
||||
byte_io.seek(0)
|
||||
|
||||
r = requests.post(url='http://localhost:8000?text=cartoon',
|
||||
files={
|
||||
'my_file': (
|
||||
'1.png',
|
||||
byte_io,
|
||||
'image/png'
|
||||
),
|
||||
},
|
||||
stream=True
|
||||
)
|
||||
print(r.status_code)
|
||||
|
||||
if r.status_code == 200:
|
||||
byte_io = BytesIO(r.content)
|
||||
img = Image.open(byte_io)
|
||||
img.show()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
||||
|
@@ -14,8 +14,8 @@ from PIL import Image
|
||||
|
||||
load_dotenv()
|
||||
|
||||
# pipe = StableDiffusionImg2ImgPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", num_inference_steps=100, revision="fp16", torch_dtype=torch.float16, use_auth_token=getenv("TOKEN"))
|
||||
# pipe.to("cuda")
|
||||
pipe = StableDiffusionImg2ImgPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", num_inference_steps=100, revision="fp16", torch_dtype=torch.float16, use_auth_token=getenv("TOKEN"))
|
||||
pipe.to("cuda")
|
||||
|
||||
class Text(BaseModel):
|
||||
text: str
|
||||
@@ -25,39 +25,44 @@ class Text(BaseModel):
|
||||
app = FastAPI()
|
||||
|
||||
@app.post("/",
|
||||
# responses = {
|
||||
# 200: {
|
||||
# "content": {"image/png": {}}
|
||||
# }
|
||||
# },
|
||||
# response_class=Response
|
||||
responses = {
|
||||
200: {
|
||||
"content": {"image/png": {}}
|
||||
}
|
||||
},
|
||||
response_class=Response
|
||||
)
|
||||
def root(text: str):
|
||||
async def root(text: str, my_file: UploadFile = File(...)):
|
||||
prompt = text.replace('+', ' ')
|
||||
print(prompt)
|
||||
#request_object_content = file.read()
|
||||
# img = Image.open(io.BytesIO(request_object_content))
|
||||
request_object_content = await my_file.read()
|
||||
img = Image.open(io.BytesIO(request_object_content))
|
||||
|
||||
height_orig = img.height
|
||||
width_orig = img.width
|
||||
aspect_ratio = width_orig / height_orig
|
||||
width_new = 512
|
||||
height_new = int(width_new / aspect_ratio)
|
||||
img = img.resize((width_new, height_new), 0)
|
||||
try:
|
||||
resp = pipe(prompt, image=img)
|
||||
print(resp)
|
||||
image = resp.images[0]
|
||||
except RuntimeError as e:
|
||||
print(e)
|
||||
raise HTTPException(status_code=202, detail="Busy")
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=504, detail=str(e))
|
||||
if resp["nsfw_content_detected"] == [True]:
|
||||
raise HTTPException(status_code=418, detail="NSFW")
|
||||
|
||||
imgByteArr = io.BytesIO()
|
||||
image.save(imgByteArr, format="PNG")
|
||||
imgByteArr = imgByteArr.getvalue()
|
||||
running = False
|
||||
return Response(content=imgByteArr, media_type="image/png")
|
||||
|
||||
|
||||
# height_orig = img.height
|
||||
# width_orig = img.width
|
||||
# aspect_ratio = width_orig / height_orig
|
||||
# width_new = 512
|
||||
# height_new = int(width_new / aspect_ratio)
|
||||
# img = img.resize((width_new, height_new), 0)
|
||||
|
||||
# try:
|
||||
|
||||
# resp = pipe(prompt, init_image=img)
|
||||
# print(resp)
|
||||
# image = resp.images[0]
|
||||
# except RuntimeError as e:
|
||||
# print(e)
|
||||
# raise HTTPException(status_code=202, detail="Busy")
|
||||
# except:
|
||||
# raise HTTPException(status_code=504)
|
||||
|
||||
# imgByteArr = io.BytesIO()
|
||||
# image.save(imgByteArr, format="PNG")
|
||||
# imgByteArr = imgByteArr.getvalue()
|
||||
# running = False
|
||||
# return Response(content=imgByteArr, media_type="image/png")
|
||||
|
80
pi.py
Normal file → Executable file
80
pi.py
Normal file → Executable file
@@ -4,19 +4,33 @@ import cv2
|
||||
from gpiozero import LED, Button
|
||||
from picamera2 import Picamera2
|
||||
from time import sleep
|
||||
import asyncio
|
||||
import requests
|
||||
from io import BytesIO
|
||||
from PIL import Image
|
||||
import shutil
|
||||
from random import randint
|
||||
import numpy as np
|
||||
import sys
|
||||
import pyautogui
|
||||
|
||||
red = LED(19)
|
||||
blue = LED(26)
|
||||
green = LED(13)
|
||||
button = Button(5)
|
||||
button2 = Button(2)
|
||||
button3 = Button(3)
|
||||
|
||||
|
||||
# Grab images as numpy arrays and leave everything else to OpenCV.
|
||||
x = 1920
|
||||
y = 1080
|
||||
x = 512
|
||||
y = 512
|
||||
|
||||
|
||||
print(pyautogui.size())
|
||||
|
||||
x, y = pyautogui.size()
|
||||
|
||||
cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
|
||||
#cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
|
||||
cv2.resizeWindow("window", x, y)
|
||||
picam2 = Picamera2()
|
||||
|
||||
capture_config = picam2.create_preview_configuration(main={"size": (x, y),
|
||||
@@ -24,25 +38,69 @@ capture_config = picam2.create_preview_configuration(main={"size": (x, y),
|
||||
picam2.configure(capture_config)
|
||||
picam2.start()
|
||||
|
||||
cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
|
||||
# cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
|
||||
while True:
|
||||
|
||||
# cv2.resizeWindow("window", x, y)
|
||||
while True:
|
||||
im = picam2.capture_array()
|
||||
|
||||
|
||||
cv2.imshow("window", im)
|
||||
if cv2.waitKey(40) & 0xFF == ord('a') or button.value:
|
||||
if cv2.waitKey(40) & 0xFF == ord('q'):
|
||||
sys.exit()
|
||||
if button2.value:
|
||||
break
|
||||
|
||||
while button.value:
|
||||
pass
|
||||
|
||||
while not button.value:
|
||||
sleep(0.1)
|
||||
color_converted = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
|
||||
img=Image.fromarray(color_converted)
|
||||
|
||||
while not button.value:
|
||||
pass
|
||||
byte_io = BytesIO()
|
||||
img.save(byte_io, 'png')
|
||||
byte_io.seek(0)
|
||||
|
||||
print("-------------------Generating Image----------------------")
|
||||
r = requests.post(url='http://192.168.1.100:8000?text=into cyborg robot ',
|
||||
files={
|
||||
'my_file': (
|
||||
'1.png',
|
||||
byte_io,
|
||||
'image/png'
|
||||
),
|
||||
},
|
||||
stream=True
|
||||
)
|
||||
print(r.status_code)
|
||||
|
||||
if r.status_code == 200:
|
||||
byte_io = BytesIO(r.content)
|
||||
img = Image.open(byte_io)
|
||||
|
||||
# img.show()
|
||||
height_orig = img.height
|
||||
width_orig = img.width
|
||||
aspect_ratio = width_orig / height_orig
|
||||
width_new = x
|
||||
height_new = int(width_new / aspect_ratio)
|
||||
img = img.resize((width_new, height_new), 0)
|
||||
|
||||
numpy_image=np.array(img)
|
||||
opencv_image=cv2.cvtColor(numpy_image, cv2.COLOR_RGB2BGR)
|
||||
|
||||
cv2.imshow("window", opencv_image)
|
||||
print("---------------------------------Image Generated-----------------------------")
|
||||
|
||||
|
||||
|
||||
|
||||
print("--------------------Sleeping-------------------------")
|
||||
sleep(10)
|
||||
print("--------------------Slept----------------------------")
|
||||
|
||||
sleep(1)
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user