简体   繁体   English

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

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

I want to achieve coordinates using the last four numbers (which represent center and dimensions of bounding box) and crop the bounding box from the image with the same name (.jpg format).我想使用最后四个数字(代表边界框的中心和尺寸)来获得坐标,并从具有相同名称(.jpg 格式)的图像中裁剪边界框。

I have written the following code:我写了以下代码:

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

and txt files contents looks like below:和 txt 文件内容如下所示:

0 0.3547 0.5096 0.7293 1.0258

but I am getting the following syntax error.但我收到以下语法错误。

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]

also directories look like this:目录也如下所示:

directories目录

You should use some IDE having a syntax check, like PyCharm CE, not the line 18, but line 17 is the problem: You are missing the closing bracket ")"您应该使用一些 IDE 进行语法检查,例如 PyCharm CE,而不是第 18 行,但第 17 行是问题所在:您缺少右括号“)”

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

i assume you want:我假设你想要:

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