簡體   English   中英

如何從幀的 ndarray 訪問單個像素陣列,或者是否有更好的方法來存儲幀並訪問它們?

[英]How can I access the individual pixel arrays from an ndarray of frames or is there a better way to store the frames and access them?

我試圖從視頻中獲取 25 幀並將它們存儲在一個數組中,以便我可以稍后處理這些幀(提取背景)。 我正在使用 OpenCV 加載和存儲視頻中的幀(不知道任何其他方式)。 問題是我似乎無法弄清楚如何遍歷存儲在 ndarray 中的各個數組。 有可能這樣做嗎? 如果不是,有什么更好的方法來存儲幀以便以后訪問它們? 注意:我知道已經有一個 OpenCV 函數可以減去背景,但是對於我為大學構建的應用程序,我不允許使用它。 這也是我第一次用 python 編程,所以任何建議,在哪里尋找信息都是最受歡迎的。 這是我嘗試做的:

frames=[]
vidcap = cv2.VideoCapture(video_source)
for fid in range(0,25):
    vidcap.set(cv2.CAP_PROP_POS_FRAMES, fid)
    ret, frame = vidcap.read()
    frames.append(frame)

問題在這里:

width,height = frames[0].size
for row in range(0,height):
    for col in range(0,width):
        for frameNo in range(0,frames.size):
            median_matr.append(frames[0][row,col])

我得到的錯誤是這樣的:

width,height = frames[0].size TypeError: 'int' 對象不可迭代

這里的問題是frames[0].size 是一個整數。 您正在嘗試在行中同時分配寬度和高度

width,height = frames[0].size

但由於 Python 只有一個整數用於賦值,因此無法處理這行代碼。

我的意思是,我的總體建議實際上是,“去獲得一個集成的視覺環境,這樣你就可以在這里設置一個斷點並調試正在發生的事情。” 潛在的問題是您試圖分配一些不可分配的東西。 我建議在 PyCharm、Visual Studio 或其他一些允許您深入了解變量的可視化調試器中運行這段代碼,它將准確地顯示正在發生的事情,而不是要求您提前了解所有變量屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM