python-3.x - 尝试检测时orb检测崩溃
问题描述
我正在尝试使用 open cv 创建一个基本的图像检测器。我正在使用 ORB,我尝试打开图像,然后尝试检测图像中的关键点。这是我的代码
import cv2
from cv2 import ORB
image1 = cv2.imread("original.jpg", cv2.IMREAD_GRAYSCALE)
orb = ORB()
# find the keypoints with ORB
kp = orb.detect(image1, None)
但是,当我运行我的代码时,程序崩溃并出现以下错误
Process finished with exit code -1073741819 (0xC0000005)
我搜索这个错误,我发现这是一个内存访问冲突,但我不知道哪里有可能是冲突?
解决方案
我得到了同样的错误。经过一番搜索,我得到了它ORB_create()
而不是ORB()
修复它。
资料来源:
outImage 错误修复,
https://github.com/opencv/opencv/issues/6487
代码:
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('extra/sample.jpg',0)
## ERROR
#orb = cv2.ORB()
## FIX
orb = cv2.ORB_create()
# find the keypoints with ORB
kp = orb.detect(img,None)
# compute the descriptors with ORB
kp, des = orb.compute(img, kp)
## ERROR
#img2 = cv2.drawKeypoints(img,kp,color=(0,255,0), flags=0)
## Use This or the one below, One at a time
#img2 = cv2.drawKeypoints(img, kp, None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
img2 = cv2.drawKeypoints(img, kp, outImage = None, color=(255,0,0))
plt.imshow(img2),plt.show()
推荐阅读
- javascript - js对特殊字符的utf字符串进行条件测试
- r - 如果循环 - 参数长度为零 - 错误
- c# - 错误 CS0029:无法将类型“System.DateTime”隐式转换为“int”(CS0029)(DeclaringConstructor)
- reactjs - 物品清单,批量操作样本
- kubernetes - 如何在 values.yaml 中选择入口控制器
- asp.net-web-api2 - ASP.NET Core Web API 中是否存在像 AcceptRequestType 这样的东西?
- javascript - 避免将旧版 JavaScript 提供给现代浏览器
- c++ - 错误 C2248:“CObject::CObject”:当我在 MFC 中调用 hDC.SelectObject 函数时,无法访问在“CObject”类中声明的私有成员
- linux - 具有不同用户的外部驱动器的权限
- c++ - 如何修复(避免)“无调试信息”警告?