Python ValueError: Expected 1D or 2D array, got 3D array instead

编程入门 行业动态 更新时间:2024-10-27 07:24:33

Python <a href=https://www.elefans.com/category/jswz/34/1753470.html style=ValueError: Expected 1D or 2D array, got 3D array instead"/>

Python ValueError: Expected 1D or 2D array, got 3D array instead

Python计算相机响应函数并存储至txt文件时发生错误,源代码如下:

# 估计相机响应函数曲线
calibrateDebevec = cv2.createCalibrateDebevec()
responseDebevec = calibrateDebevec.process([img1, img2, img3], times=np.array([1, 2, 4], dtype=np.float32))
np.savetxt('response_curve.txt', responseDebevec)

显示错误:

Traceback (most recent call last):File "D:\HApp\Deep\Pycharm-Community\PycharmProjects\pythonProject17\RANDOM_test1111\matttt.py", line 27, in <module>np.savetxt('response_curve.txt', responseDebevec)File "<__array_function__ internals>", line 180, in savetxtFile "D:\HApp\Deep\anaconda3\envs\python38_64\lib\site-packages\numpy\lib\npyio.py", line 1397, in savetxtraise ValueError(
ValueError: Expected 1D or 2D array, got 3D array instead

这个错误是因为 np.savetxt() 函数只接受1D或2D数组作为输入,而 responseDebevec 是一个3D数组。

responseDebevec 是一个由多个曝光时间下的每个像素的响应值组成的数组,它的维度是(图像高度,图像宽度,曝光时间数目)。

要将 responseDebevec 保存为文本文件,你需要将其转换为2D数组。可以使用 np.reshape() 函数将 responseDebevec 转换为2D数组。修改代码如下:

# 将 responseDebevec 转换为2D数组
response_2d = responseDebevec.reshape(-1, responseDebevec.shape[-1])# 将2D数组保存为文本文件
np.savetxt('response_curve.txt', response_2d)

结果正确。

D:\HApp\Deep\Pycharm-Community\PycharmProjects\pythonProject17\RANDOM_test1111\matttt.py Process finished with exit code 0

成功获得所需存储的txt文件。

 

更多推荐

Python ValueError: Expected 1D or 2D array, got 3D array instead

本文发布于:2024-03-13 04:08:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1733155.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ValueError   Python   array   Expected

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!