oriImg = img # 保存原图副本 img = cv2.GaussianBlur(img, (3, 3), 0) # 高斯模糊 # print(img) gaussianImg = img # 保存副本 img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转灰度图 # imshow("gray",img) kernel = ones((20, 20), uint8) imgOpen = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) # 开操作,突出黑 # imshow("open",imgOpen) img = cv2.addWeighted(img, 1, imgOpen, -1, 0) # 图像融合 # imshow("add",img) ret, img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # 二值化 img = cv2.Canny(img, 100, 200) # canny算法查找边缘 # imshow("canny",img) kernel = ones((4, 19), uint8) img = cv2.morphologyEx(img, MORPH_CLOSE, kernel) # 闭操作,横向涂抹 # imshow("close",img) # kernel = ones((4, 25), uint8) img = cv2.morphologyEx(img, MORPH_OPEN, kernel) # 开操作,去除细线 # imshow("open2",img)
时间: 2023-12-04 13:02:08 浏览: 92
这段代码主要是对一张图像进行图像处理,包括高斯模糊、转灰度图、开操作、图像融合、二值化、Canny算法查找边缘、闭操作和开操作。其中,闭操作和开操作是形态学操作,用于对图像进行膨胀和腐蚀处理。在这段代码中,调用了cv2.morphologyEx()函数进行闭操作和开操作,但是代码中缺少了对cv2模块的导入,因此MORPH_CLOSE和MORPH_OPEN无法识别。需要在代码开头添加以下代码:
```python
import cv2
from numpy import ones, uint8
```
这样就可以正确地调用cv2模块和相关函数,并完成图像处理。
相关问题
修改代码,获取“绩效监测”表:ori_excel = openpyxl.load_workbook(ori_excel_path,data_only=True)#读取数据源表格 ori_sheet = ori_excel.active#获取第一个sheet
修改后的代码如下:
```python
ori_excel = openpyxl.load_workbook(ori_excel_path, data_only=True) # 读取数据源表格
ori_sheet = ori_excel["绩效监测"] # 获取“绩效监测”表
```
这样就可以直接获取到“绩效监测”表了。
# 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()
这段代码是一个 Python 脚本,用于实现 CTF 相关的盲水印技术。它使用 OpenCV 库和 NumPy 库来处理图像和数据,可以将一个原始图像和一个待盲水印的图像作为输入,输出一个包含水印信息的图像。具体来说,它实现了以下步骤:
1. 读取原始图像和待盲水印的图像。
2. 对两个图像进行 FFT 变换,得到频域图像。
3. 从频域图像中计算出水印信息。
4. 将水印信息随机嵌入到一个和原始图像大小一样的图像中。
5. 将嵌入了水印信息的图像保存到指定路径。
其中,alpha 参数是控制水印强度的一个系数,可以通过命令行参数指定。如果执行该脚本时没有指定参数,将使用默认值 ALPHA = 5。
阅读全文