OpenCV2生成帧均值数组后,PIL转换报错的问题咨询
问题:PIL无法处理计算均值后的图像数组?
我找到一个创建帧数组的不错示例,但不知道如何正确在PIL中使用它。为演示问题,我编写了以下代码:
import numpy as np import cv2 from PIL import Image, ImageTk nframes = 10 frame = cv2.imread('test.jpg') (x,y,d)=frame.shape frames = np.empty((nframes,x, y, d)) for k in range(nframes): frames[k,:,:,:] = frame frame_avg=np.int8(np.mean(frames,0)) frame_avg.shape cv2.imwrite('test_avg.jpg',frame_avg) Image.fromarray(frame) Image.fromarray(frame_avg)
我读取了图片test.jpg并将其重复10次存入数组frames,计算均值后保存为test_avg.jpg,该图片显示正常。将原帧转换为PIL图像可以正常运行,但最后一行代码抛出如下错误:
---> 20 Image.fromarray(frame_avg) /usr/local/lib/python3.10/dist-packages/PIL/Image.py in fromarray(obj, mode) 3313 typekey_shape, typestr = typekey 3314 msg = f"Cannot handle this data type: {typekey_shape}, {typestr}" -> 3315 raise TypeError(msg) from e 3316 else: 3317 rawmode = mode TypeError: Cannot handle this data type: (1, 1, 3), |i1
请问我哪里出错了?
顺颂时祺,
克里斯托夫
内容的提问来源于stack exchange,提问作者Christof Bodner
相关产品推荐
相关产品推荐

