Stego / app.py
YassineYousfi
cv2 you suck
aeb01c6
raw
history blame
1.37 kB
import gradio as gr
import stc
import numpy as np
import imageio
from scipy import signal
import cv2
from PIL import Image
title = "Steganography"
description = "Wow this works!"
def HILL(input_image, operation, message, key):
input_image.seek(0)
buffer = input_image.read()
I = cv2.imdecode(np.frombuffer(buffer, np.uint8), 1)
I = cv2.cvtColor(I,cv2.COLOR_BGR2GRAY)
cv2.imwrite('tmp/file.png',I)
if operation == 'decode':
stc.extract('tmp/file.png', key, 'tmp/output.txt')
return 'tmp/output.txt'
else:
H = np.array(
[[-1, 2, -1],
[ 2, -4, 2],
[-1, 2, -1]])
L1 = np.ones((3, 3)).astype('float32')/(3**2)
L2 = np.ones((15, 15)).astype('float32')/(15**2)
costs = signal.convolve2d(I, H, mode='same')
costs = abs(costs)
costs = signal.convolve2d(costs, L1, mode='same')
costs = 1/costs
costs = signal.convolve2d(costs, L2, mode='same')
costs[costs == np.inf] = 1
stc.embed('tmp/file.png', costs, message, key, 'tmp/stego.png')
return 'tmp/stego.png'
iface = gr.Interface(HILL,
["file", gr.inputs.Radio(["encode", "decode"]), "text", "text"],
"file",
title=title,
description=description)
iface.launch()