该项目已移到另外一个库进行后续开发 https://github.com/hakaboom/image_registration
Image registration algorithm. Includes SIFT, ORB, SURF, AKAZE, BRIEF, matchTemplate
同时包含cuda加速(ORB, SURF, matchTemplate)
- 开发时使用的是python 3.8
- opencv需要自己安装或自行编译,读取的到cv2模块就行
pip3 install py-image-registration
- create
from image_registration import ORB, SIFT, RootSIFT, SURF, BRIEF, AKAZE, CUDA_SURF, CUDA_ORB, match_template
orb = ORB()
sift = SIFT()
# Other
# orb = ORB(nfeatures=1000, nlevels=9)
# 提取器的参数可以根据opencv文档调整
- MatchTemplate
模板匹配
from image_registration import match_template
from baseImage import Image, Rect
im_source = Image('test.png')
im_search = Image('star.png')
tpl = match_template()
result = tpl.find_best(im_source=im_source, im_search=im_search)
# expect output
# {
# 'rect': Rect, # 返回一个baseImage.Rect类的识别范围
# 'confidence': 0.99 # 返回识别结果的置信度
# }
# Other
# tpl.find_best(im_source=im_source, im_search=im_search, threshold=0.8, rgb=False)
# threshold: 匹配度 0~1
# rgb: 是否判断rgb颜色
tpl.find_all(im_source=im_source, im_search=im_search)
# expect output
# {
# {
# 'rect': Rect, # 返回一个baseImage.Rect类的识别范围
# 'confidence': 0.99 # 返回识别结果的置信度
# },
# {
# 'rect': Rect
# 'confidence': 0.95
# },
# ...
# }
# Other
# tpl.find_all(im_source=im_source, im_search=im_search, threshold=0.8, max_count=20, rgb=False)
# threshold: 匹配度 0~1
# max_count: 最多匹配数量
# rgb: 是否判断rgb颜色
- keypoint detector and descriptor extractor
基于特征点的匹配
from image_registration import ORB, SIFT, RootSIFT, SURF, BRIEF, AKAZE, CUDA_SURF, CUDA_ORB
orb = ORB()
sift = SIFT()
im_source = Image('test.png')
im_search = Image('star.png')
orb.find_best(im_source=im_source, im_search=im_search)
orb.find_all(im_source=im_source, im_search=im_search)
# 返回结果MatchTemplate
- NoModuleError
模块未找到, 检查opencv库是否安装正确
- CreateExtractorError
创建特征提取器失败, 检查传入参数以及opencv库是否安装正确
- NoEnoughPointsError
当特征提取器提取特殊数量少于2时弹出异常
- CudaSurfInputImageError
图像大小不符合cuda_surf的要求时弹出异常opencv_surf.cuda
- CudaOrbDetectorError
提取特征时出现的错误,需要调整orb的初始参数(scaleFactor, nlevels, firstLevel)
- HomographyError
An error occurred while findHomography
- MatchResultError
An error occurred while result out of screen
- PerspectiveTransformError
An error occurred while perspectiveTransform