gpt4 book ai didi

python OpenCV 段错误(核心已转储)

转载 作者:太空宇宙 更新时间:2023-11-03 21:52:08 26 4
gpt4 key购买 nike

我正在使用 Python 编写代码并使用我的网络摄像头进行测试。

(ASUS KV55J | Ubuntu 14.04 | python 2.7.6(默认,2015 年 6 月 22 日,17:58:13)[GCC 4.8.2] | OpenCV version '2.4.8')

我可以成功地显示来 self 的网络摄像头的图像(非常简单的代码)但是当我尝试将鼠标回调设置为鼠标经过图像时(也是一个非常简单的代码)有一个大问题,之后出现段错误几帧(大约需要 10/20 秒才能失败,但如果我评论回调它将起作用,直到按下“Ctrl-c”)。

有人知道为什么会这样吗?

我运行它并得到这个错误(即使我没有移动鼠标或按任何东西):

ncc@ncc-K55VJ:~/Desktop/testes_python/gui$ python a_teste_capture.py 
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
Left mouse button pushed
Left mouse button pushed
Left mouse button pushed
Left mouse button pushed
Left mouse button pushed
Segmentation fault (core dumped)

我一开始的最简单的代码是:

import cv, cv2

def click_and_take_frame(event, x, y, flags, param):

if event == cv2.EVENT_LBUTTONDOWN:
print 'Left mouse button pushed'


def main_function():
camera_device=cv2.VideoCapture(0)
frame_name="Segmentation fault (core dumped) TEST WINDOW"
cv2.namedWindow(frame_name, cv2.WINDOW_AUTOSIZE)

while 1:
(grabbed1, frame1) = camera_device.read()
frame1= cv2.cvtColor(frame1, cv2.CV_8U)
cv2.imshow(frame_name, frame1)
cv2.setMouseCallback(frame_name, click_and_take_frame)
key = cv2.waitKey(1) & 0xFF

cv2.destroyAllWindows() # Closes displayed windows


if __name__ == '__main__':
import sys

main_function()

最佳答案

根据我过去的经验,当您的机器资源过载时会发生此错误。

在你的情况下,有两件事可以做到这一点

  • while 1 即使没有框架也是一个无限循环。您可以通过将 (grabbed1, frame1) = camera_device.read() 移到 while 循环之外并使用 while grabbed1: 来纠正此问题,如果 frame 是 True ,它只会运行循环。您可以阅读有关此 here 的更多信息。
  • 您的点击监听器处于无限循环中。将监听器放在循环中是没有意义的。您可以将 cv2.setMouseCallback(frame_name, click_and_take_frame) 移到 while 循环之上,这样您就不会再浪费资源了。

关于python OpenCV 段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37954736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com