当前位置: 首页 > 后端技术 > Python

新项目findimage

时间:2023-03-26 13:29:24 Python

ofimagematching(findasmallimageinalargeimage)在分析aircv源码的时候有很多不满意,不更新维护,也没人理会提交PR。只需创建一个新项目。目前PyPi库已经提交,可以安装,名称如下:pipinstallfindimagefindimage不是图片搜索,它不能从一堆图片中找到相似的,而是定位一个小图片的位置来自大图像的给定模板。findimage与原来的aircv相比,有以下改进:支持直接输入灰度图(虽然在函数中调用opencv时,都是使用灰度图完成的,原来的aircv项目要求传入的图像必须包含bgr三个通道,否则会报错)支持透明背景图片优化find_all_template方法的性能,将floodFill方法替换为numpy切片赋值,避免重叠,整体搜索时间缩短约1/4课程菜单截图如下如下:我们要找到#的位置,可以提供一个小模板图片:然后调用find_template方法:fromcv2importcv2fromfindimageimportfind_templateimage_origin=cv2.imread('seg_course_whole_page.png')image_template=cv2.imread('seg_sharp.png')match_result=find_template(image_origin,image_template)得到的match_result标识了中心的位置源图像中第一个#的点,矩形区域四个角的坐标和匹配度。{"result":(x,y),#tuple,表示识别结果的圆心"rectangle":[#二位数组,表示识别结果矩形的四个角[left,top],[left,bottom],[right,top],[right,bottom]],"confidence":percentage#识别结果的匹配度,在-1和1之间,匹配度越大匹配度越高,如果为1,则表示按像素严格匹配}我们可以使用这个结果来识别源图像上的匹配位置:img_result=image_origin.copy()rect=match_result['rectangle']cv2.rectangle(img_result,(rect[0][0],rect[0][1]),(rect[3][0],rect[3][1]),(0,0,220),2)cv2的结果。imwrite('result.png',img_result)如下图所示: