使用 OpenCV 退出代码 -1073741819 (0xC0000005)

Posted

技术标签:

【中文标题】使用 OpenCV 退出代码 -1073741819 (0xC0000005)【英文标题】:Exit code -1073741819 (0xC0000005) with OpenCV 【发布时间】:2020-10-31 23:20:28 【问题描述】:

我正在 Python 中尝试一个非常简单的 OpenCV 示例,但它完全不适合我:

import cv2
import matplotlib.pyplot as plt

if __name__ == '__main__':
    img1 = plt.imread('../data/input/frame000013.png')
    img2 = plt.imread('../data/input/frame000014.png')
    img1_gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    sift = cv2.SIFT()
    print(sift)
    kp = sift.detect(img1_gray, None)
    print(kp)

如果我尝试使用 PyCharm 运行它,我会收到以下错误:

Process finished with exit code -1073741819 (0xC0000005)

如果我尝试通过终端执行它,它似乎并没有越过kp = sift.detect(img1_gray, None) 行,也没有真正到达第二个print 语句,没有提供任何错误通知。

我使用:Windows 10、Python 3.8、opencv-python&opencv-contrib-python4.4.0.44。

【问题讨论】:

像这样混合库绝不是一个好主意... cv2.SIFT don't exist ...,对于 OpenCV 4.4.0.44 ,语法是 sift = cv2.SIFT_create() 【参考方案1】:

如果你看documentation,应该是SIFT_create()

sift = cv2.SIFT_create()
print(sift)
kp = sift.detect(img1_gray, None)

但是,你为什么要阅读带有plt.imread 的图像?

我问的原因是,您正在使用BGR2GRAY 转换为灰度。但是plt.imreadRGB 格式返回图像。因此,如果你打算使用plt.imread

import cv2
import numpy as np
import matplotlib.pyplot as plt


def rgb2gray(rgb):
    return np.dot(rgb[..., :3], [0.2989, 0.5870, 0.1140]).astype(np.uint8)


if __name__ == '__main__':
    img1 = plt.imread('../data/input/frame000013.png')
    img2 = plt.imread('../data/input/frame000014.png')
    img1_gray = rgb2gray(img1)
    sift = cv2.SIFT_create()
    print(sift)
    kp = sift.detect(img1_gray, None)
    print(kp)

或者如果你选择cv2.imread:

import cv2
import matplotlib.pyplot as plt

if __name__ == '__main__':
    img1 = cv2.imread('../data/input/frame000013.png')
    img2 = cv2.imread('../data/input/frame000014.png')
    img1_gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    sift = cv2.SIFT_create()
    print(sift)
    kp = sift.detect(img1_gray, None)
    print(kp)

【讨论】:

以上是关于使用 OpenCV 退出代码 -1073741819 (0xC0000005)的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 OpenCV 库运行示例代码后,进程以退出代码 -1073741515 (0xC0000135) 完成

OpenCV程序在退出时崩溃linux(使用cvtColor)

mac本使用opencv打开摄像头导致python意外退出?

Visual Studio 中 Opencv 的介绍性示例程序以代码 -1 退出。没理由

OpenCV 2.4.10 + Qt Creator 3.2.0 & Qt5.4.0 MingW 64bits Windows 7 - “退出代码 -1073741515”

将 opencv 库添加到 QT 创建者并出现错误:链接器命令失败,退出代码为 1