如何使用Python PIL或CV裁剪图像?

时间:2018-02-14 08:18:59

标签: python image python-imaging-library

我的所有图像都有感兴趣的区域,这些区域以溺爱的白线为界。 我想只裁剪那些部分。

我有一个想法,找到左上角的最小(x,y)并找到右下角的最大值(x,y)并裁剪区域?

我们可以从PIL库中获取Pixel值

3 个答案:

答案 0 :(得分:0)

使用opencv2轻松裁剪图像。试试这个链接

http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_basic_ops/py_basic_ops.html

ball = img[280:340, 330:390]

因为Image是一个2D数组,你可以用上面的行进行裁剪。

答案 1 :(得分:0)

读取PIL中的像素值

from PIL import Image
im = Image.open(imagename)
pix = im.load()
print (pix[0,0])

这将返回第一行中的第一个像素。

如果你想阅读所有像素,你可以做这样的事情。

x, y = im.size

for i in x:
    for j in y:
        print (pix[i,j])

答案 2 :(得分:0)

from PIL import Image
from IPython.display import display, HTML
from IPython.display import Image as displayImage 
img=Image.open('image.png')
imag_rgb = img.convert('RGB')
width, height = imag_rgb.size
print (width, height)
for pixel_x in range(width):
 for pixel_y in range(height):
  r, g, b = rgb_img.getpixel((pixel_x, pixel_y))
  if(r == 255 and g == 255 and b == 255):
   min_pixel_x = pixel_x
   min_pixel_y = pixel_y
   max_pixel_x = pixel_x
   max_pixel_y = pixel_y                
   print (pixel_x, pixel_y)
    cropped_image = img.crop((min_pixel_x, min_pixel_y,max_pixel_x + 1, max_pixel_y + 1))
#### +1 because of first x,y is 0,0
display(cropped_image)