# coding=utf-8 import cv2 import numpy as np import random import os from argparse import ArgumentParser ALPHA = 5 def build_parser(): parser = ArgumentParser() parser.add_argument('--original', dest='ori', required=True) parser.add_argument('--image', dest='img', required=True) parser.add_argument('--result', dest='res', required=True) parser.add_argument('--alpha', dest='alpha', default=ALPHA) return parser def main(): parser = build_parser() options = parser.parse_args() ori = options.ori img = options.img res = options.res alpha = options.alpha if not os.path.isfile(ori): parser.error("original image %s does not exist." % ori) if not os.path.isfile(img): parser.error("image %s does not exist." % img) decode(ori,img,res,alpha) def decode(ori_path, img_path, res_path, alpha): ori = cv2.imread(ori_path) img = cv2.imread(img_path) ori_f = np.fft.fft2(ori) img_f = np.fft.fft2(img) height, width = ori.shape[0], ori.shape[1] watermark = (ori_f - img_f) / alpha watermark = np.real(watermark) res = np.zeros(watermark.shape) random.seed(height + width) x = range(height/2) y = range(width) random.shuffle(x) random.shuffle(y) for i in range(height/2): for j in range(width): res[x[i]][y[j]] = watermark[i][j] cv2.imwrite(res_path,res,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) if __name__ == '__main__': main()
时间: 2024-04-21 16:29:26 浏览: 21
这段代码是一个 Python 脚本,用于实现 CTF 相关的盲水印技术。它使用 OpenCV 库和 NumPy 库来处理图像和数据,可以将一个原始图像和一个待盲水印的图像作为输入,输出一个包含水印信息的图像。具体来说,它实现了以下步骤:
1. 读取原始图像和待盲水印的图像。
2. 对两个图像进行 FFT 变换,得到频域图像。
3. 从频域图像中计算出水印信息。
4. 将水印信息随机嵌入到一个和原始图像大小一样的图像中。
5. 将嵌入了水印信息的图像保存到指定路径。
其中,alpha 参数是控制水印强度的一个系数,可以通过命令行参数指定。如果执行该脚本时没有指定参数,将使用默认值 ALPHA = 5。
相关问题
#coding=utf-8 from requests_html import HTMLSession session = HTMLSession() import time import csv import os 什么意思
这段代码的作用是导入所需的模块和库,以及设置Python源文件的编码格式为UTF-8。
- `from requests_html import HTMLSession` 导入了名为`HTMLSession`的类,该类可以用于进行HTTP请求和解析HTML内容。
- `session = HTMLSession()` 创建了一个`HTMLSession`的实例对象,用于发送HTTP请求和处理响应。
- `import time` 导入了Python内置的`time`模块,用于进行时间相关的操作,如暂停程序执行。
- `import csv` 导入了Python内置的`csv`模块,用于读写CSV文件。
- `import os` 导入了Python内置的`os`模块,用于与操作系统进行交互,如文件操作和路径操作。
最后一行 `#coding=utf-8` 是一个注释,它表示该源文件的编码格式是UTF-8。这是一种常见的编码格式,用于支持多种语言和字符集。在Python 3中,通常不需要显式地声明编码格式,因为默认编码格式就是UTF-8。但是在旧版本的Python或特定环境中,可能需要添加这样的注释来确保正确的编码处理。
# coding=utf-8 import math # 输入正整数a和b a = float(input()) b = float(inp
考虑到一些人正在寻找工作时遇到的问题,我想分享一些建议。首先,坚持不懈地寻找机会。不要因为第一次被拒绝而放弃,继续寻找适合自己的工作。其次,不要停止学习和提升自己。不断提升自己的技能和知识,可以增加找到工作的机会。此外,积极参与社交活动,扩大社交圈子,可能会通过熟人介绍找到工作机会。另外,保持积极的心态,不要被困难打败。不管遇到多大的挫折,都要坚持下去。最后,制定一个明确的求职计划,包括目标、时间安排和行动计划。有一个清晰的目标,会更有动力去实现。希望这些建议会对正在找工作的人有所帮助。祝愿大家找到心仪的工作,实现自己的职业目标。