我正在尝试使用openCV通过使用URL获取图像来定位图像的面部标记,下面的代码使用url获取图像并将其从图像转换为列表然后从列表转换为像以前一样的字符串我得到错误'TypeError:期望字符串或Unicode对象,列表找到',
我目前正在:
块引用 :Traceback(最近一次调用最后一次): 文件“C:\ Users \ matth \ Desktop \ testmctest.py”,第52行,in cv2.imshow( '结果',annotate_landmarks(1M,get_landmarks(IM))) 在get_landmarks中输入第31行的文件“C:\ Users \ matth \ Desktop \ testmctest.py” x,y,w,h = rects [0] IndexError:元组索引超出范围
def get_landmarks(im):
rects = cascade.detectMultiScale(im, 1.3,5)
x,y,w,h =rects[0]
rect=dlib.rectangle(x,y,x+w,y+h)
return numpy.matrix([[p.x, p.y] for p in predictor(im, rect).parts()])
def annotate_landmarks(im, landmarks):
im = im.copy()
for idx, point in enumerate(landmarks):
pos = (point[0, 0], point[0, 1])
cv2.putText(im, str(idx), pos,
fontFace=cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,
fontScale=0.4,
color=(0, 0, 255))
cv2.circle(im, pos, 3, color=(0, 255, 255))
return im
URL = "http://static-23.sinclairstoryline.com/resources/media/d368a1cb-f6af-4a04-83d0-ebc66e984ab2-large16x9_BIOPIC.jpg?1456517822862"
from PIL import Image
import urllib2
im = Image.open(urllib2.urlopen(URL))
o = str(im)
img =[unicode(o, encoding="UTF-8")]
string = ''.join(map(str, img))
im=cv2.imread(string)
cv2.imshow('Result',annotate_landmarks(im,get_landmarks(im)))