如果在我的python3.6(和OpenCV 4.0)中有... elif ...,我有一些简单的方法,但是无论我做什么,我都会不断收到奇怪的错误消息。
我需要根据边界框裁剪一些图片。
# the image to be cropped loads here:
tobecropped= cv2.imread(img)
images.append(tobecropped)
(imageheight, imagewidth) = tobecropped.shape[:2]
# sample bounding box:
y = 833 # center vertically
x = 183 # center horizontally
width = 172
height = 103
# calculation of cropping values adding 10% extra:
y1 = y-(height/2*1.1)
y2 = y+(height/2*1.1)
x1 = x-(width/2*1.1)
x2 = x+(width/2*1.1)
# return values to int:
y1 = int(y1)
y2 = int(y2)
x1 = int(x1)
x2 = int(x2)
# move the cropping inside the original image:
If (y1 < 0): y_movedown()
Elif (y2 > imageheight): y_moveup()
Elif (x1 < 0) : x_moveright()
Elif (x2 > imagewidth): x_moveleft()
# actually cropping the image:
cropped = tobecropped[y1:y2, x1:x2]
cv2.imshow("cropped", cropped)
# functions to move the complete bounding box inside the image boundaries:
def y_movedown():
y2=y2-y1
y1=0
print("moved down!")
def y_moveup():
y1=y1-(y2-imageheight)
y2=imageheight
print("moved up!")
def x_moveright():
x2=x2-x1
x1=0
print("moved right!")
def x_moveleft():
x1=x1-(x2-imagewidth)
x2=imagewidth
print("moved left!")
错误消息如下:
File "image_import2.py", line 121
If (y1 < 0): y_movedown()
^
SyntaxError: illegal target for annotation
有人看到我在做什么错吗?找不到任何提及这样的错误...
答案 0 :(得分:1)
看看这些行:
If (y1 < 0): y_movedown()
Elif (y2 > imageheight): y_moveup()
Elif (x1 < 0) : x_moveright()
Elif (x2 > imagewidth): x_moveleft()
If
,Elif
是带标题的单词,当它们应小写时,也是如此:
if (y1 < 0): y_movedown()
elif (y2 > imageheight): y_moveup()
elif (x1 < 0) : x_moveright()
elif (x2 > imagewidth): x_moveleft()
相反。