Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 略读中的作物图像?_Python_Image Processing_Scikit Image - Fatal编程技术网

Python 略读中的作物图像?

Python 略读中的作物图像?,python,image-processing,scikit-image,Python,Image Processing,Scikit Image,我正在使用skimage在给定的图像中裁剪一个矩形,现在我将(x1,y1,x2,y2)作为矩形坐标,然后我加载了图像 image = skimage.io.imread(filename) cropped = image(x1,y1,x2,y2) 然而,这是裁剪图像的错误方式,我如何在略读中以正确的方式进行裁剪呢?这似乎是一个简单的语法错误 在Matlab中,你可以使用括号来提取像素或图像区域。但是在Python和numpy.ndarray中,您应该使用括号来分割图像的一个区域,此外,在这

我正在使用skimage在给定的图像中裁剪一个矩形,现在我将(x1,y1,x2,y2)作为矩形坐标,然后我加载了图像

 image = skimage.io.imread(filename)
 cropped = image(x1,y1,x2,y2)

然而,这是裁剪图像的错误方式,我如何在略读中以正确的方式进行裁剪呢?这似乎是一个简单的语法错误

在Matlab中,你可以使用括号来提取像素或图像区域。但是在Python和
numpy.ndarray
中,您应该使用括号来分割图像的一个区域,此外,在这段代码中,您使用了错误的方式来剪切矩形

正确的切割方法是使用
操作符

因此,


您可以继续使用PIL库的图像模块

from PIL import Image
im = Image.open("image.png")
im = im.crop((0, 50, 777, 686))
im.show()

也可以使用
skimage.util.crop()
函数,如下代码所示:

import numpy as np
from skimage.io import imread
from skimage.util import crop
import matplotlib.pylab as plt

A = imread('lena.jpg')

# crop_width{sequence, int}: Number of values to remove from the edges of each axis. 
# ((before_1, after_1), … (before_N, after_N)) specifies unique crop widths at the 
# start and end of each axis. ((before, after),) specifies a fixed start and end 
# crop for every axis. (n,) or n for integer n is a shortcut for before = after = n 
# for all axes.
B = crop(A, ((50, 100), (50, 50), (0,0)), copy=False)

print(A.shape, B.shape)
# (220, 220, 3) (70, 120, 3)

plt.figure(figsize=(20,10))
plt.subplot(121), plt.imshow(A), plt.axis('off') 
plt.subplot(122), plt.imshow(B), plt.axis('off') 
plt.show()
使用以下输出(原始图像和裁剪图像):


您只需按如下所示对图像阵列进行切片,即可使用skimage裁剪图像:

image = image_name[y1:y2, x1:x2]
示例代码:

from skimage import io
import matplotlib.pyplot as plt

image = io.imread(image_path)
cropped_image = image[y1:y2, x1:x2]
plt.imshow(cropped_image)

如果x指的是水平轴,
image[y1:y2,x1:x2]
在这里不是更正确吗?
image
不是
image
in
from PIL import image
from skimage import io
import matplotlib.pyplot as plt

image = io.imread(image_path)
cropped_image = image[y1:y2, x1:x2]
plt.imshow(cropped_image)