folder = argv[1]
query = cv2.imread(join(folder,"tattoo_seed.jpg"), 0)
然后输入python “你python代码存在的位置” “你扫描图片或视频的位置”
我输入的是
python “D:\opencv bob\pycv-master\chapter6\scan_for_matches.py” “D:\opencv bob\pycv-master\chapter6\anchors”
最后按下回车键,代码开始运行,代码运行结果就是相似的纹身输出is a match;不相似的输出is not a match。
接下来贴出我的代码,有兴趣的同学可以拿走:`
from os.path import join
from os import walk
import numpy as np
import cv2
from sys import argv
# create an array of filenames
folder = argv[1]
query = cv2.imread(join(folder,"tattoo_seed.jpg"), 0)
# create files, images, descriptors globals
files = []
images = []
descriptors = []
for (dirpath, dirnames, filenames) in walk(folder):
files.extend(filenames)
for f in files:
if f.endswith("npy") and f != "tattoo_seed.npy":
descriptors.append(f)
print (descriptors)
# create the sift detector
sift = cv2.xfeatures2d.SIFT_create()
query_kp, query_ds = sift.detectAndCompute(query, None)
# create FLANN matcher
FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks = 50)
flann = cv2.FlannBasedMatcher(index_params, search_params)
# minimum number of matches
MIN_MATCH_COUNT = 10
potential_culprits = {
}
print (">> Initiating picture scan...")
for d in descriptors:
print( "--------- analyzing %s for matches ------------" % d)
matches = flann.knnMatch(query_ds, np.load(join(folder, d)), k =2)
good = []
for m,n in matches:
if m.distance < 0.7*n.distance:
good.append(m)
if len(good) > MIN_MATCH_COUNT:
print ("%s is a match! (%d)" % (d, len(good)))
else:
print( "%s is not a match" % d)
potential_culprits[d] = len(good)
max_matches = None
potential_suspect = None
for culprit, matches in potential_culprits.iteritems():
if max_matches == None or matches > max_matches:
max_matches = matches
potential_suspect = culprit
print ("potential suspect is %s" % potential_suspect.replace("npy", "").upper())
在代码里有cv2.xfeatures2d.SIFT_create()这个函数,
如果在这发生报错,可以看看我的另一篇博客,有解决办法。over!
Win10 软件推荐,持续更新
凭证号和凭证类型反写系统应用框架中基类CoreBillBase提供了reverseSave()方法, 业务需要根据需要覆写此方法,在方法内部实现业务单据特有的反写逻辑; @Override public void reverseSave(Context ctx, IObjectPK srcBillPK,CoreBillBaseInfo srcBillVO, BOTBillOperStateEnum bOTBillOperStateEnum,BOTRelationInfo bOTRel
洗牌目的在逻辑回归算法数据预处理的过程中,有时会遇到标签值分布不均衡的情况,我们在做切分数据集操作时,则需要打乱样本顺序,也叫洗牌。再用洗完牌的数据切分训练集、测试集。随机种子在numpy库中,我们可以np.random.seed()函数设定随机种子,来生成特定顺序的序列 ,而在seed()函数中传入的参数(整数),帮助我们设定生成随机数的规则,如下:for i in range(3):...
# -*- coding: UTF-8 -*-from docx import Documentfrom docx.shared import Ptimport requestsfrom docx.oxml.ns import qndocument = Document()document.styles['Normal'].font.name = u'宋体'document.st...
python解析http request字符串
(一)原因:联通公网DNS外网无法访问对外提供DNS服务器; 外网无法访问邮件系统域名;公网DNS服务器1(10.60.2.29)53端口无法访问;防火墙策略配置不完整;(二)问题处理过程:接到问题报告,外网无法访问邮件系统域名;通过外网nslookup mail.xx.com.cn,只能到联通DNS,提示找不到mail.xx.com.cn。查询出外网Radware(1...
最近准备仔细看看innodb 异步I/O的实现,而在LINUX平台下Innodb中一般我们使用的都是libaio叫做LINUX NATIVE AIO,这有别于POSIX实现的AIO,因为以前对异步I/O并不熟悉,因为在很多LINUX 系统编程书籍上都没有介绍,而网上也是资料不多。当然其好处还是非常明显的,能够在使用O_DIRECT 打开文件的情况下,保证性能而不是消耗CPU资源在等待I/O落盘上,...
因为没有密码认证会不安全,这里我们加上密码认证。先介绍一下密码认证的两个配置。主要是两个参数:requirepass:外面服务、客户端来连接redis的密码。masterauth:redis从去连接redis主使用的密码。这个意思是说,如果你在主上设置了requirepass参数,你就需要再从上设置masterauth参数,并和主密码指定成一样的。这样从才能继续去同步主的数据。...
该楼层疑似违规已被系统折叠隐藏此楼查看此楼代码如下,我按老师所说就是先从左边数有多少个空格和星星,再数右边有空格和星星。然而我用Eclipse写的这个说有错误,不太懂如何修改。另外,就是想要加入一个功能假如是负数就输出Invalid number是正数就继续该怎么添加呢。麻烦各位大神了!package school;import java.util.Scanner;public class Is...
由于课题的原因,又要搞搞java。好久没开eclipse了,觉得好陌生,尤其是当要用this的时候,你抖抖索索鬼使神差地敲了个self上去。。啰嗦完毕,java画了个界面,核心算法是用matlab写的,所以必须调用matlab代码。网上找了些资料,似乎很少有针对matlab 2010a版本的,总结了下,方法如下:首先请保证java已正确安装并且设置了环境变量。关于环境变量的设置,网上一堆介绍,比如...