opencv,nuppy,python

@eda


Traceback (most recent call last):
  File "D:\pythonproject\identifiyface\main.py", line 54, in <module>
    x=np.concatenate((peterwang,lucydu),axis=0)
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (3,) + inhomogeneous part.

这种错误如何解决

问题点:数据拼接错误
分析思路: np.concatenate 是numpy中对array进行拼接的函数. 拼接前,需要打印两个数组的shape.
axis参数为指定按照哪个维度进行拼接,设置axis=0则代表着按照第一维度进行拼接.
例如:x1为[5,4] x2为[3,4],设置axis=0 拼接后为 [8,4]
若x1和x2的第二维度尺寸不相等,无法拼接。
解决办法:先分析两个数组的维度尺寸是否相等,符不符合拼接条件.

print(peterwang)
print(peterwang.shape)
print(lucydu)
print(lucydu.shape)
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7444954
  • 这篇博客也不错, 你可以看下opencv+python取某区域中心点
  • 您还可以看一下 唐宇迪老师的Opencv计算机视觉实战(Python版)课程中的 卷积神经网络的应用小节, 巩固相关知识点
  • 除此之外, 这篇博客: python opencv numpy旋转图片中的 numpy函数 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    这个错误是因为在使用np.concatenate函数时,尝试将一个sequence类型的列表 peterwanglucydu 分配给数组 x 元素位置,而目标数组 x 已经是一个多维数组。

    要解决这个错误,你可以考虑以下解决方案:

    1. 确保 peterwanglucydu 是正确格式的数组。可以使用 type() 函数来检查它们的类型。如果它们是列表或元组,可能需要先将它们转换为 NumPy 数组。

    2. 检查 peterwanglucydu 的维度是否一致。np.concatenate 函数要求拼接的数组具有相同的维度。

    3. 使用 np.array 函数来创建目标数组 x,并设置其初始形状。例如,如果 peterwanglucydu 都是一维数组,可以使用 np.zeros 函数创建一个初始形状为 (0, peterwang.shape[0]) 的数组。

    以下是可能的代码示例:

    import numpy as np
    
    # 将 peterwang 和 lucydu 转换为 NumPy 数组(如果它们不是数组)
    peterwang = np.array(peterwang)
    lucydu = np.array(lucydu)
    
    # 检查维度是否一致
    if peterwang.shape != lucydu.shape:
        print("Error: Dimensions of peterwang and lucydu do not match.")
        exit()
    
    # 创建目标数组 x
    x = np.zeros((0, peterwang.shape[0]))  # 根据 peterwang 的维度设置 x 的初始形状
    
    # 拼接 peterwang 和 lucydu 到 x
    x = np.concatenate((x, peterwang), axis=0)
    x = np.concatenate((x, lucydu), axis=0)
    
    print(x)
    

    请注意,上述代码仅仅是给出了一个可能的解决方案示例,真正的解决方案可能会根据具体情况有所不同。希望这可以帮助到你解决这个错误。如果对于你的问题还存在疑惑,请提供更多上下文和具体代码,我将尽力提供更准确的解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

opencv 只能识别平面图形。
你给出的数字系列,有不是一个平面的点