我正在做一个项目,我刚刚开始使用Python编程。我在用Pycharm。我想从视频中提取帧,得到每个帧中的熵,然后保存它们。
我遵循了本教程:https://scikit-image.org/docs/dev/api/skimage.filters.rank.html#skimage.filters.rank.entropy
到目前为止,这是我的代码:
import cv2
from skimage.filters.rank import entropy
from skimage.morphology import disk
filename = 'C:/Users/myname/Downloads/testvideo.mp4'
video = cv2.VideoCapture(filename)
if not video.isOpened():
print("Error opening video file")
i = 0
while video.isOpened():
ret, frame = video.read()
if not ret:
break
img = entropy(frame, disk(5))
cv2.imwrite('frame' + str(i) + '.jpg', img)
i = i + 1
video.release()
cv2.destroyAllWindows()
打开视频并保存帧非常好,直到我尝试将熵应用到它,帧。
我尝试过这样的方法:
img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
它工作得非常好,并将一个帧转换为灰度,并保存了它们,但似乎存在熵问题,或者更确切地说,是磁盘(5)。
显示的错误是:
ValueError:图像维数和邻域维数不匹配
当我试图从教程网站运行代码时,我也会遇到同样的错误。有人能帮我吗,拜托?非常感谢!
发布于 2022-05-19 14:33:09
从skimage中的源代码中删除
footprint = np.ascontiguousarray(img_as_ubyte(footprint > 0))
if footprint.ndim != image.ndim:
raise ValueError('Image dimensions and neighborhood dimensions'
'do not match')
出现了例外情况。足迹=磁盘(N)。n=5在你的案子里。
因此,您可以检查目标图像(img.ndim)的数字,并将其与2(磁盘(5)的数字)进行比较。如果不相等,可以使用img = np.squeeze(img)来更改图像的ndim。
https://stackoverflow.com/questions/67117592
复制相似问题