模板匹配、边缘检测—opencv、python—简单密码破译,密码找寻

1、目的

寻找出隐藏在下列两幅图片中的密码
在这里插入图片描述

2、导入库

import matplotlib.pyplot as plt
import matplotlib.image as mping
import math
import cv2
import numpy as np

%matplotlib inline

3、读入上述两幅图片

在这里用opencv读入的是BGR格式,转化为RGB格式

frizzy = cv2.imread('images/frizzy.jpg')
frizzy=cv2.cvtColor(frizzy,cv2.COLOR_BGR2RGB)

froomer = cv2.imread('images/froomer.jpg')
froomer=cv2.cvtColor(froomer,cv2.COLOR_BGR2RGB)

4、将上述两幅图片转化为二值图像

frizzy_copy = np.copy(frizzy)
froomer_copy = np.copy(froomer)


frizzy_gray=cv2.cvtColor(frizzy_copy,cv2.COLOR_RGB2GRAY)
froomer_gray=cv2.cvtColor(froomer_copy,cv2.COLOR_RGB2GRAY)

在这里插入图片描述

5、使用Canny算子检测两幅图片的边缘

frizzy_edges=cv2.Canny(frizzy_gray,100,50)
froomer_edges=cv2.Canny(froomer_gray,100,30)

在这里插入图片描述

6、使用contours函数使得边缘更加清晰

contours, hierarchy = cv2.findContours(frizzy_edges,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)      #找到轮廓的python list
cv2.drawContours(frizzy_edges, contours, -1, (255,0,0), 3)     #通过轮廓的python list画出轮廓

在这里插入图片描述

contours, hierarchy = cv2.findContours(froomer_edges,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)     #找到轮廓的python list
cv2.drawContours(froomer_edges, contours, -1, (255,255,255), 3)      #通过轮廓的python list画出轮廓

在这里插入图片描述
即最后得到下面的两幅图片:
在这里插入图片描述

7、通过与运算得到最后的密码

common_edges = frizzy_edges&froomer_edges

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41729258/article/details/106175230
今日推荐