Python 3.x 无法从形状广播输入数组
我正在尝试从.mp4文件中读取视频 我发现了一个错误: 显示第271行的文件“demoprotoupsilon.py” 播放视频(年龄) 播放视频中第217行的文件“demoprotoupsilon.py” bg[y1:y2,x1:x2]=帧 ValueError:无法将输入数组从形状(360480,3)广播到形状(360480,4) 源代码:Python 3.x 无法从形状广播输入数组,python-3.x,Python 3.x,我正在尝试从.mp4文件中读取视频 我发现了一个错误: 显示第271行的文件“demoprotoupsilon.py” 播放视频(年龄) 播放视频中第217行的文件“demoprotoupsilon.py” bg[y1:y2,x1:x2]=帧 ValueError:无法将输入数组从形状(360480,3)广播到形状(360480,4) 源代码: def PlayVideo(age): print("toto"); birthyear = datetime.datetime.n
def PlayVideo(age):
print("toto");
birthyear = datetime.datetime.now().year - age
videoFilePath = f"media/video/decades/{int(round(birthyear, -1))}.mp4"
print(videoFilePath)
vid = cv2.VideoCapture(videoFilePath)
bg = GetDisplayImgContent()
if vid.isOpened():
print("in vidopen")
while vid.isOpened():
print("in while")
ret, frame = vid.read()
if ret:
print("img OK")
#frame = cv2.bitwise_and( frame, frame)
#cv2.add(bg, frame)
origVidImgHeight, origVidImgWidth = frame.shape[:2]
print(frame.shape)
#orig_mask = frame[:,:,2]
#orig_mask_inv = cv2.bitwise_not(orig_mask)
xVidPosition = int((screenW / 3)*2)
yVidPosition = int((screenH / 4)*3)
x1 = int(xVidPosition - (origVidImgWidth / 2))
x2 = int(xVidPosition + (origVidImgWidth / 2))
y1 = int(yVidPosition - (origVidImgHeight / 2))
y2 = int(yVidPosition + (origVidImgHeight / 2))
roi = bg[y1:y2, x1:x2]
#roi_bg = cv2.bitwise_and( roi, roi, mask = orig_mask_inv)
#roi_fg = cv2.bitwise_and( frame, frame, mask = orig_mask)
#dst = cv2.add(roi_bg, roi_fg)
bg[y1:y2, x1:x2] = frame
SetDisplayImg(bg, "")
else:
break
vid.release()
cv2.destroyAllWindows()
有什么想法吗?你能做些工作缩小范围吗?开始删除/简化一些代码,直到您有了重现问题所需的最少数量?还有,什么是
bg
?它是GetDisplayImgContent()
的返回值,但未提供该值。#获取图像内容以显示def GetDisplayImgContent():全局显示imgContent返回显示imgContent#设置图像以文件名def SetDisplayImg(img,imgName)显示:全局显示imgcontent全局显示imgName显示imgName=imgName显示imgcontent=img