- 已知一个二维码,和一个混合二维码,求影藏二维码,我知道是特征识别匹配,求转换数组,把原二维码仿射了,之后再把原二维码和混二维码异或看看得到什么,结果原二维码仿射后已经狠离谱了,再异或跟离谱,我又求逆数组,把混合的二维码逆了一下,再和原二维码异或,反正也不对,就是不能得到隐藏二维码
import cv2
import numpy as np
s = cv2.imread(r"C:\Users\zxl03\Desktop\opencv\source.png")
f = cv2.imread(r"C:\Users\zxl03\Desktop\opencv\flag_is_not_here.jpg")
s = cv2.resize(s,(200,200))
f = cv2.resize(f,(200,200))
orb = cv2.ORB_create(nfeatures=100)
kp1,des1 = orb.detectAndCompute(f,None)
kp2,des2 = orb.detectAndCompute(s,None)
bf = cv2.BFMatcher(cv2.NORM_HAMMING)
matches = bf.knnMatch(des1,des2,k=2)
good = []
for m,n in matches:
if m.distance < 0.9*n.distance:
good.append(m)
matches = good
matches = sorted(matches,key=lambda x:x.distance)
pts1 = np.float32([kp1[m.queryIdx].pt for m in matches[:3]]).reshape(-1,2)
pts2 = np.float32([kp2[m.trainIdx].pt for m in matches[:3]]).reshape(-1,2)
M = cv2.getAffineTransform(pts1,pts2)
r = cv2.warpAffine(f,M,(200,200))
xor = cv2.bitwise_xor(r,s)
cv2.imshow("r",r)
cv2.imshow("xor",xor)
cv2.waitKey(0)

