2016-12-07 82 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)