2015-12-15 38 views
-5

當運行該代碼段在python/Linux的:語法錯誤

import numpy as numpy 
import cv2 
import os 

os.system('clear') 
cap = cv2.VideoCapture('vid_1.mp4') 

q = 0 
while(cap.isOpened()): 
    ret, frame == cap.read() 
    if ret == True: 
     q += 1 
     print("Frame No: " + q) 


    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    cv2.imshow('frame',gray) 

    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

     cap.release() 
     cv2,destroyAllWindows() 

我遇到下列錯誤:

print("Frame No: " + q) 
        ^
IndentationError: unindent does not match any outer indentation level 

此外,使用os.system( '清晰' )似乎不清除屏幕。我假設基本失蹤了,請問這是什麼原因?由於

+2

您粘貼的代碼無效,因爲'while'塊沒有縮進。 –

+0

對不起,我沒有縮進代碼,而把它放入問題部分。現在完成了。感謝提醒 – YAS

回答

1
if ret == True: 
    q += 1 
    print("Frame No: " + q) 

看來,該行代碼縮進只有兩個空格,而其他線路都在縮進四個空格。

if ret == True: 
    q += 1 
    print("Frame No: " + q) 

將這項工作?

+0

我可以知道在我的代碼中有多少應該是縮進,如果等等? – YAS

+0

任何數量都可以。只要確保每行(如果需要)縮進相同的數量。在您的代碼中,某些行縮進了2個空格,但其他行則縮進了4個空格。如果您使用的是IDLE,則默認情況下應該每次以4個空格標籤。 @YAS –

1

enter image description here

你混合製表符和空格,這混淆了Python。使用一個或另一個,而不是兩個。空間是可取的。

+0

當然,我的原代碼已被編輯。問題依然存在。你能告訴我有關Python中的縮進嗎? – YAS

+0

問題解決了! ** ret,frame == cap.read()**應該已經改變爲** ret,frame = cap.read()**和** print(「Frame No:」+ q)** to **打印(「幀號:」,q); ** – YAS