2016-12-07 150 views
0
import cv2 
import numpy as np 

img = cv2.imread('hand.jpg',0) 

height = np.size(img,0) 
width = np.size(img,1) 

cx = 112 
cy = 131 

j = 0  #initilalise 
tmp=[]  #initilalise 

for i in range(1,height): 
    if img[i,cy]>0: 
     j = j+1 
     tmp.insert(j,i) 
    xr = max(tmp) 
    yr = cy 
print tmp 
print (cr,cy) 

在執行上面的代碼中,我曾遇到一個ValueErrorValueError異常Python中的OpenCV

xr = max(tmp) 
ValueError: max() arg is an empty sequence 

請幫我解決上述問題

+0

由於在錯誤消息中明確指出,您的'tmp'變量是空的。因此你不能在它上面調用'max()'。 –

回答

0
import cv2 
import numpy as np 
import matplotlib.pyplot as pl 

img = cv2.imread('hand.jpg',0) 

height = np.size(img,0) 
width = np.size(img,1) 

cx = 113 
cy = 130 

j1 = 0  #initilalise 
tmp=[]  #initilalise 

for i in range(1,height): 
    if img[i,cy]>0: 
     j1 = j1+1 
     tmp.append(i) 
    if len(tmp) !=0: 
     xr = max(tmp) 
     yr = cy 
print (xr,yr) 

這上面的代碼塊解決了上述問題。

0

這是因爲if分支執行之前max(tmp)被執行。所以,你應該檢查是否TMP是空

if len(tmp) != 0: 
    xr = max(tmp)