Основываясь на частотной области, цифровые слепые водяные знаки
Документация:
pip install blind-watermark
или установка последней версии разработки:
git clone git@github.com:guofei9987/blind_watermark.git
cd blind_watermark
pip install .
Встроить водяной знак:
blind_watermark --embed --pwd 1234 examples/pic/ori_img.jpeg "watermark text" examples/output/embedded.png
Извлечь водяной знак:
blind_watermark --extract --pwd 1234 --wm_shape 111 examples/output/embedded.png
Исходное изображение + водяной знак = изображение с водяным знаком
!origin_image (docs/исходное изображение.jpeg) + '@guofei9987 开源万岁!' = !изображение с водяным знаком (docs/изображение с водяным знаком.jpg)
См. пример кода (/examples/example_str.py).
Встроить водяной знак
from blind_watermark import WaterMark
bwm1 = WaterMark(password_img=1, password_wm=1)
bwm1.read_img('pic/ori_img.jpg')
wm = '@guofei9987 开源万岁!'
bwm1.read_wm(wm, mode='str')
bwm1.embed('output/embedded.png')
len_wm = len(bwm1.wm_bit)
print('Put down the length of wm_bit {len_wm}'.format(len_wm=len_wm))
Извлечь водяной знак
bwm1 = WaterMark(password_img=1, password_wm=1)
wm_extract = bwm1.extract('output/embedded.png', wm_shape=len_wm, mode='str')
print(wm_extract)
Output:
@guofei9987 开源万岁!
Атака | Изображение после атаки | Извлечённый водяной знак |
---|---|---|
Поворот на 45 градусов | !поворот на 45 градусов (docs/поворот на 45 градусов.jpg) | '@guofei9987 开源万岁!' |
Случайный снимок экрана | !случайный снимок экрана (docs/случайный снимок экрана_восстановление.jpg) | '@guofei9987 开源万岁!' |
Множественное перекрытие | !множественное перекрытие (docs/множественное перекрытие.jpg) | '@guofei9987 开源万岁!' |
Горизонтальное вырезание | !горизонтальное вырезание (docs/горизонтальное вырезание_заполнение.jpg) | '@guofei9987 开源万岁!' |
Вертикальное вырезание | !вертикальное вырезание (docs/вертикальное вырезание_заполнение.jpg) | '@guofei9987 开源万岁!' |
Масштабирование | !масштабирование (docs/масштабирование.jpg) | '@guofei9987 开源万岁!' |
Добавление соли и перца | !добавление соли и перца (docs/добавление соли и перца.jpg) | '@guofei9987 开源万岁!' |
Изменение яркости | !изменение яркости (docs/изменение яркости.jpg) | '@guofei9987 开源万岁!' |
Пример кода (/examples/example_str.py):
Встроить:
from blind_watermark import WaterMark
bwm1 = WaterMark(password_wm=1, password_img=1)
# read original image
bwm1.read_img('pic/ori_img.jpg')
# read watermark
bwm1.read_wm('pic/watermark.png')
# embed
bwm1.embed('output/embedded.png')
Извлечение:
bwm1 = WaterMark(password_wm=1, password_img=1)
# notice that wm_shape is necessary
bwm1.extract(filename='output/embedded.png', wm_shape=(128, 128), out_wm_name='output/extracted.png', )
Атака | Изображение после атаки | Извлечённое изображение водяного знака |
---|---|---|
Поворот на 45 градусов | !поворот на 45 градусов (docs/поворот на 45 градусов.jpg) | !поворот на 45 градусов_извлечённое изображение водяного знака (docs/поворот на 45 градусов_извлечённое изображение водяного знака.png) |
Случайный снимок экрана | !случайный снимок экрана (docs/случайный снимок экрана_восстановление.jpg) | !случайный снимок экрана_извлечённое изображение водяного знака (docs/случайный снимок экрана_восстановленное_извлечённое изображение водяного знака.png) |
Множественное перекрытие | !множественное перекрытие (docs/множественное перекрытие.jpg) | !множественное перекрытие_извлечённое изображение водяного знака (docs/множественное перекрытие_извлечённое изображение водяного знака.png) |
Пример кода (/examples/example_bit.py)
Например, если вы хотите встроить следующие двоичные данные длиной 6:
wm = [True, False, True, True, True, False]
Встраивание водяного знака
# Помимо встраивания изображений, можно также встраивать битовые данные
from blind_watermark import
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )