繁体   English   中英

使用边界框坐标的语法错误裁剪图像

[英]syntax error- cropping image using bounding box coordinates

我想使用最后四个数字(代表边界框的中心和尺寸)来获得坐标,并从具有相同名称(.jpg 格式)的图像中裁剪边界框。

我写了以下代码:

import os
from PIL import Image
from os import listdir

directory = "/home/masoud/masoud/crop/obj"

for file in os.listdir(directory): 
    if file.endswith(".txt"):
        with open(os.path.join(directory, file), 'r') as f:
        
            for line in f:  # changed to file handle
                line = line.rstrip() # remove trailing '\n'
                nums = line.split()
                four_nums = nums[1:5]  
                # print(four_nums)
        image_name = os.path.splitext(os.path.join(directory, file)[0]+'.jpg'

        img = Image.open(os.path.join(directory, image_name))
                    width, height = img.size
        #             # Setting the points for cropped image 
                    left = width * (nums[1]- nums[3]/2)
                    top = height * (nums[2]- nums[4]/2)
                    right = width * (nums[1]+ nums[3]/2)
                    bottom = height * (nums[2]+ nums[4]/2)

        #             # Cropped image of above dimension 
        #             # (It will not change orginal image) 
                    im_cropped = img.crop((left, top, right, bottom)) 

                    im_cropped.show()
                    im_cropped.save('/home/masoud/masoud/crop/cropped-images', 'JPEG')

    else:
        continue

和 txt 文件内容如下所示:

0 0.3547 0.5096 0.7293 1.0258

但我收到以下语法错误。

File "/home/masoud/masoud/crop/crop.py", line 18
    img = Image.open(os.path.join(directory, image_name))
      ^
SyntaxError: invalid syntax
[Finished in 0.4s with exit code 1]
[cmd: ['/home/masoud/anaconda3/bin/python3', '-u', '/home/masoud/masoud/crop/crop.py']]
[dir: /home/masoud/masoud/crop]
[path: /home/masoud/bin:/home/masoud/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin]

目录也如下所示:

目录

您应该使用一些 IDE 进行语法检查,例如 PyCharm CE,而不是第 18 行,但第 17 行是问题所在:您缺少右括号“)”

image_name = os.path.splitext(os.path.join(directory, file)[0]+'.jpg'

我假设你想要:

image_name = os.path.splitext(os.path.join(directory, file))[0]+'.jpg'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM