Switch to rawpy/PIL and simplify

This commit is contained in:
Ian Gulliver
2024-08-11 14:28:00 -07:00
parent 81a9fd5fb8
commit 35d78bf37e
2 changed files with 57 additions and 59 deletions

View File

@@ -6,18 +6,11 @@ from PIL import Image, ImageOps
path = 'data/RAW/SC1/BR1'
filename = os.path.join(path, '00570/back.orf')
raw = rawpy.imread(filename).postprocess()
rgba = Image.fromarray(raw).convert('RGBA')
raw = rawpy.imread(filename)
rgb_image = raw.postprocess()
h, _, _ = rgba.convert('HSV').split()
mask = ImageOps.invert(Image.eval(h, lambda x: 255 if 50 < x < 90 else 0))
image = Image.fromarray(rgb_image).convert('RGBA')
hsv_image = image.convert('HSV')
h, s, v = hsv_image.split()
green_mask = Image.eval(h, lambda x: 255 if 50 < x < 90 else 0)
green_mask = ImageOps.invert(green_mask)
rgba_image = image.copy()
rgba_image.putalpha(green_mask)
rgba_image.save('output.png', 'PNG')
rgba.putalpha(mask)
rgba.save('output.png', 'PNG')

View File

@@ -1,15 +1,18 @@
import os
import base64
import io
import os
import shutil
from openai import OpenAI
from wand.image import Image
import rawpy
from PIL import Image
client = OpenAI()
# List all files and directories in the specified path
path = 'data/RAW/SC1/BR1'
pending = os.path.join(path, 'pending')
pending = os.path.join(path, '00570')
bitting = None
@@ -20,53 +23,55 @@ for file in sorted(os.listdir(pending)):
print(file)
filename = os.path.join(pending, file)
with Image(filename=filename) as img:
img.format = 'jpg'
img.resize(512, 384)
blob = img.make_blob()
blob_b64 = base64.b64encode(blob).decode('utf-8')
raw = rawpy.imread(filename).postprocess()
rgb = Image.fromarray(raw).convert('RGB')
smaller = rgb.resize((512, 384))
chat_completion = client.chat.completions.create(
messages=[
{
'role': 'user',
'content': [
{
'type': 'text',
'text': 'If this is a picture of a white card with black lettering on it, respond with just the 5 digit number written on the card. If this is a picture of a key, respond with "front" if you can see the engravings "SC1" & "USA", and "back" if you cannot.'
},
{
'type': 'image_url',
'image_url': {
'url': f'data:image/jpeg;base64,{blob_b64}'
}
buf = io.BytesIO()
smaller.save(buf, format='JPEG')
blob_b64 = base64.b64encode(buf.getvalue()).decode('utf-8')
chat_completion = client.chat.completions.create(
messages=[
{
'role': 'user',
'content': [
{
'type': 'text',
'text': 'If this is a picture of a white card with black lettering on it, respond with just the 5 digit number written on the card. If this is a picture of a key, respond with "front" if you can see the engravings "SC1" & "USA", and "back" if you cannot.'
},
{
'type': 'image_url',
'image_url': {
'url': f'data:image/jpeg;base64,{blob_b64}'
}
]
}
],
model='gpt-4o',
)
}
]
}
],
model='gpt-4o',
)
content = chat_completion.choices[0].message.content
content = chat_completion.choices[0].message.content
print(content)
print(content)
match content:
case 'front':
assert bitting is not None, 'key image before card image'
dest = os.path.join(path, bitting, 'front.orf')
assert not os.path.exists(dest), 'key image already exists'
shutil.move(filename, dest)
match content:
case 'front':
assert bitting is not None, 'key image before card image'
dest = os.path.join(path, bitting, 'front.orf')
assert not os.path.exists(dest), 'key image already exists'
shutil.move(filename, dest)
case 'back':
assert bitting is not None, 'key image before card image'
dest = os.path.join(path, bitting, 'back.orf')
assert not os.path.exists(dest), 'key image already exists'
shutil.move(filename, dest)
case 'back':
assert bitting is not None, 'key image before card image'
dest = os.path.join(path, bitting, 'back.orf')
assert not os.path.exists(dest), 'key image already exists'
shutil.move(filename, dest)
case _:
bitting = content
os.makedirs(os.path.join(path, bitting), exist_ok=True)
dest = os.path.join(path, bitting, 'card.orf')
assert not os.path.exists(dest), 'card image already exists'
shutil.move(filename, dest)
case _:
bitting = content
os.makedirs(os.path.join(path, bitting), exist_ok=True)
dest = os.path.join(path, bitting, 'card.orf')
assert not os.path.exists(dest), 'card image already exists'
shutil.move(filename, dest)