weixin_45017322 2023-11-10 11:40 采纳率: 50%
浏览 24
已结题

python3 opencv函数vconcat抛出异常

    h_list = []
    for i in range(0, len(img_list), 3):
        new_img = cv2.hconcat(img_list[i:i + 3])  
        h_list.append(new_img)
    new_img = cv2.vconcat(h_list)   #竖屏

OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\core\src\matrix_operations.cpp:113: error: (-215:Assertion failed) src[i].dims <= 2 && src[i].cols == src[0].cols && src[i].type() == src[0].type() in function 'cv::vconcat'

python3.6
各位大giegie;如上;opencv在使用vconcat函数时出现问题;
初步排查以为是我的视频路径以及视频名称引起;后发现不是;改成英文照样出现该报错;
有没有遇见这个问题并解决了的,小生百拜且想观摩一番

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-10 14:22
    关注

    【以下回答由 GPT 生成】

    问题分析:

    根据错误信息,可以知道错误的原因是在使用cv2.vconcat函数时,输入的图像不满足要求,出现了维度不匹配的情况。具体错误信息为:(-215:Assertion failed) src[i].dims <= 2 && src[i].cols == src[0].cols && src[i].type() == src[0].type()。根据错误信息和代码,可以猜测出可能出错的地方在于cv2.hconcat函数的使用。

    解决方案:

    经过对问题的分析,我发现了两个可能的问题,一是每个图像的维度不匹配,二是每个图像的类型(格式)不匹配。以下是根据分析给出的解决方案:

    1. 检查图片的维度:确保img_list中的每个图像的维度是一致的,即列数相同。你可以使用shape属性来检查图像的维度,例如:img.shape,其中img是一个图像的变量。如果发现有维度不一致的情况,可以调整图像的大小或者裁剪(使用resize函数或者切片操作)以确保图像的维度一致。
    2. 检查图片的类型:确保img_list中的每个图像的类型(格式)是一致的,即像素值的数据类型相同。你可以使用dtype属性来检查图像的类型,例如:img.dtype,其中img是一个图像的变量。如果发现有类型不一致的情况,可以使用astype函数来进行类型转换,例如:img.astype(np.float32)

    以下是修改后的代码:

    import cv2
    import numpy as np
    
    h_list = []
    for i in range(0, len(img_list), 3):
        if img_list[i].shape[1] == img_list[i+1].shape[1] == img_list[i+2].shape[1]:
            new_img = cv2.hconcat(img_list[i:i+3])  
            h_list.append(new_img.astype(np.float32))
        else:
            print("图像维度不匹配")
            break
    
    if len(h_list) == len(img_list)//3:
        new_img = cv2.vconcat(h_list)
    else:
        print("图像类型不匹配")
    

    请注意,以上解决方案是基于对问题的分析和猜测得出的,如果还是出现问题,可能需要对更多的相关信息进行分析,或者查阅OpenCV官方文档以了解更多细节。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 已采纳回答 11月29日
  • 创建了问题 11月10日