在Python中使用GRIP处理图像的分割错误

在Python中使用GRIP处理图像的分割错误,python,python-3.x,opencv,segmentation-fault,grip,Python,Python 3.x,Opencv,Segmentation Fault,Grip,我正在使用Python通过以太网连接从IP摄像机获取图像,然后处理它们以寻找特定目标。我使用生成代码来查找特定的目标区域。(对于那些不熟悉GRIP的人:它基本上为你提供了一个GUI桌面界面,在这里你可以看到一个实时视频提要并改变参数,直到你得到所需的输出。然后你可以自动生成一段代码。我的代码是Python,它将对你在代码中输入的任何图像执行处理“管道”) 在广泛调试我的连接代码之后,我终于获得了一个成功的工作连接,该连接从IP摄像头获取图像并将其发送到GRIP管道。然而,图像的处理失败了,它返回

我正在使用Python通过以太网连接从IP摄像机获取图像,然后处理它们以寻找特定目标。我使用生成代码来查找特定的目标区域。(对于那些不熟悉GRIP的人:它基本上为你提供了一个GUI桌面界面,在这里你可以看到一个实时视频提要并改变参数,直到你得到所需的输出。然后你可以自动生成一段代码。我的代码是Python,它将对你在代码中输入的任何图像执行处理“管道”)

在广泛调试我的连接代码之后,我终于获得了一个成功的工作连接,该连接从IP摄像头获取图像并将其发送到GRIP管道。然而,图像的处理失败了,它返回了一个分割错误,没有显示行号。以下是管道代码(自动生成):

有没有人知道是什么原因造成的,或者如何修复

编辑:原来错误来自
过程
方法的第二行,但我仍然不知道是什么。如果有人看到这里所说的有任何缺陷,请让我知道。

尝试按照建议获取帧。注意:将框架重命名为cap:

cap = cv2.VideoCapture('https://10.17.11.1')

pipeline = GripPipeline()

while True:
    ret, img = cap.read()
    pipeline.process(img)

这与问题无关(祝您调试segfault好运),但staticmethod装饰器的使用是否是关于
opencv
的惯用用法?为什么双下划线名称会损坏?似乎我在每个opencv问题上都看到了这一点,这让我发疯!哦这是生成的代码!怪不得它如此令人讨厌。@juanpa.arrivillaga我不知道,我90%的开发都是用Java完成的,但我们在Raspberry Pi上运行这段代码,所以我正在尝试快速掌握一些Python技能。几乎每次我看Python中的代码示例时,他们都使用了一组不同的约定……生成的代码非常Java风格。在Python中,您几乎总是使用模块级函数而不是静态方法—您可以在类定义之外自由编写函数!这里是狂野的西部!不幸的是,图像必须是numpy数组的形式,否则无法处理。它是numpy数组。你试过建议的代码了吗?如果没有,请尝试。如果失败,请提供错误消息。明白了!我一直忽略了
ret
,没有意识到这会导致我收到返回值的非数字部分。谢谢你的帮助!
import numpy
import math
import cv2
import urllib.request
from enum import Enum
from GripPipeline import GripPipeline
from networktables import NetworkTable

frame = cv2.VideoCapture('https://10.17.11.1')

pipeline = GripPipeline()

def get_image()
    img_array = numpy.asarray(bytearray(frame.grab()))
    return img_array
while True:
    img = get_image()
    pipeline.process(img) #where the Segmentation Fault occurs
cap = cv2.VideoCapture('https://10.17.11.1')

pipeline = GripPipeline()

while True:
    ret, img = cap.read()
    pipeline.process(img)