【问题标题】:convert from imageproc module image of rasbperry pi into ( numpy array or cvmat )从 rasbperry pi 的 imageproc 模块图像转换为(numpy 数组或 cvmat)
【发布时间】:2023-03-29 02:35:02
【问题描述】:

rasbperry pi 中的 imageproc 模块非常高效,但我无法使用 opencv 由于与 imageproc 模块相关的图像类型不同。

所以,我寻求一种方法来启用图像类型的 opencv(cvmat 用于 cv,numpyarray 用于 cv2,..)与 rasbperry pi imageproc 模块 提前致谢

【问题讨论】:

    标签: python opencv raspberry-pi


    【解决方案1】:

    您首先必须将imgproc 输出转换为numpy.array。之后,您几乎可以直接将数组与cv2 一起使用。

    如果我们假设您在img 中有您的imgproc 图像,那么:

    import numpy
    
    img_array = numpy.array([ [ img[x,y] for x in range(img.width) ] for y in range(img.height) ] , dtype='uint8')
    

    很遗憾,imgproc 中没有更快的数据访问方法,您将不得不一一进行。但是在这个缓慢的循环之后,您可以直接使用img_arraycv2


    如果由于段错误(它真的不应该)而崩溃(它不应该),那么imgproc 中可能会出现严重错误。最好的猜测是img[x,y] 指向imgproc 创建的图像之外。为了调试它,让我们将命令拆分为更可口的部分。

    # dimensions ok?
    w = img.width
    h = img.height
    print w,h
    
    # can we fetch pixels at the extremes?
    upperleft = img[0,0]
    lowerright = img[w-1, h-1]
    print upperleft, lowerright
    
    # the loop without conversion to array
    img_l = [ [ img[x,y] for x in range(w) ] for y in range(h) ]
    print len(img_l)
    
    # convert the image into an array
    img_array = numpy.array(img_l, dtype='uint8')
    print img_array.shape
    

    这会在哪里崩溃?请注意,print 语句对于所有平台上的段错误并不完全可靠,但它表明代码至少已经运行了那么远。

    如果代码在访问img 尺寸或像素时崩溃,则问题可能出在图像捕获代码中。如果您在问题中显示一个最小示例,则问题更容易调试。

    【讨论】:

    • 这很有趣。它在哪里崩溃?如果从代码中删除上面的行 (img_array = ...),它还会崩溃吗?您是否验证过您的 OpenCV 可以正常工作?如果您编辑您的问题以使其包含崩溃代码的最小示例,这将有所帮助。
    • 如果我删除这一行,它不会崩溃而且我确信 opencv 可以正常工作那么我该怎么办?谢谢
    猜你喜欢
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多