python knnmatch_opencvpython:drawMatchesKnn()始终返回NULL

我想做一个关于logo检测的简单项目。所以我试着跟随opencvpython教程学习特征检测。OpenCV: Feature Matching

我写的代码如下。在ratio = 0.8

logo = cv.imread("T01/CocaCola_logo2.png", cv.IMREAD_GRAYSCALE)

img = cv.imread("T01/CocaCola.png", cv.IMREAD_GRAYSCALE)

orb = cv.ORB_create()

kp_logo, des_logo = orb.detectAndCompute(logo, None)

kp_img, des_img = orb.detectAndCompute(img, None)

FLANN_INDEX_LSH = 6

index_params = dict(algorithm=FLANN_INDEX_LSH,

table_number=6,

key_size=12,

multi_probe_level=1)

search_params = dict(checks=50)

flann = cv.FlannBasedMatcher(index_params, search_params)

match_flann = flann.knnMatch(des_logo, des_img, k=2)

good = []

for p, q in match_flann:

if p.distance > q.distance*ratio:

good.append(p)

try:

img_match = np.empty((max(logo.shape[0], img.shape[0]), logo.shape[1] + img.shape[1], 3), dtype=np.uint8)

cv.drawMatchesKnn(logo, kp_logo, img, kp_img, good,

outImg=img_match, matchColor=None, singlePointColor=(255, 255, 255), flags=2)

cv.imshow("flann matching", img_match)

cv.waitKey(0)

except:

print("...")

此代码无法正常工作。进程总是由drawMatchesKnn()错误处理。在我将try except添加到该函数之前,进程发生了一个系统错误:SystemError:返回了NULL,但没有设置错误

问题的原因是什么?我试着找了很久,但对我来说不容易。在

堆栈跟踪:

回溯(最近一次呼叫):

文件“C:/Users/choib/Desktop/openCVtest3/T01_ORBtest.py“,第73行,英寸

cv.图纸匹配(logo,kp_logo,img,kp_img,good,outImg=img_match,matchColor=None,singlePointColor=(255,255,255),flags=2)

SystemError:返回空值,但未设置错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常表示在编译Python时出现了一些问题。可能有几个原因导致该错误,以下是一些可能的解决方法: 1. 确保已安装所有必要的依赖项:在编译Python之前,请确保您系统上已安装了所需的开发工具和依赖项。在CentOS上,可以使用以下命令安装一些常见的依赖项: ``` sudo yum install gcc openssl-devel bzip2-devel libffi-devel ``` 根据您的系统和Python版本,可能需要安装其他依赖项。请参考Python官方文档或相关资源以获取准确的依赖项列表。 2. 清理并重新编译:如果编译过程中发生错误,可能是由于之前的编译尝试留下了一些残留文件。尝试执行以下命令以清理旧的构建文件,然后重新运行编译过程: ``` make distclean ./configure --enable-optimizations make -j 4 sudo make altinstall ``` 请注意,`make distclean`命令将清除旧的构建文件,并且`make -j 4`命令中的`-j 4`参数指定使用4个线程进行编译。您可以根据系统性能进行调整。 3. 检查系统限制:某些系统设置可能会影响Python的编译过程。请确保操作系统没有设置过严格的限制,例如限制了可用的内存或堆栈大小。您可以尝试更改这些限制,并重新运行编译过程。 4. 更新操作系统:如果您的操作系统版本较旧,可能会导致与Python编译相关的问题。尝试更新操作系统,并确保使用最新的补丁和软件包。 如果上述解决方法无法解决问题,请提供更多详细信息,例如完整的错误消息和您的操作系统和Python版本,以便我能够更好地帮助您。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值