在裁剪图像时,我遇到了一些错误,例如 "not enough values to unpack"

At the time of cropping image i face some error like "not enough values to unpack"

我正在尝试使用python裁剪图像并绘制matplotlib.pyplot,但它显示错误

import matplotlib.pyplot as plt
import numpy as np
import cv2
image = cv2.imread("tt.jpg")
type(image)
print(image.shape)
W = 100
H = 100
def crop_center(img , cropx , cropy):
    y,x,c = image.shape
    startx = x//2-(cropx//2)
    starty = y//2-(cropy//2)
    return img[starty:starty+cropy , startx:startx+cropx]
croped = crop_center(image,W,H)
print(croped)
print(plt.imshow(croped, cmap='gray'))
plt.show() # with scaled size

** 错误:**

  Traceback (most recent call last):
  File "openimage.py", line 96, in <module>
  croped = crop_center(scaled,W,H)
  File "openimage.py", line 92, in crop_center
  y,x,c = image.shape
  ValueError: not enough values to unpack (expected 3, got 2)

您可以使用此方法裁剪图像。

此代码中的

y_start 表示图像从要裁剪的顶部开始的高度, y_end 表示图像底部,在这种情况下 y_start0并且 y_end100 意味着高度将保持 与原始高度相同

x_startx_end 的工作方式与我上面提到的相同,在这种情况下,它将开始从 30% 裁剪到 60% 意味着裁剪后你将得到 图像的中心部分.

import numpy as np
import cv2
img = cv2.imread('imagename.jpg')
height, width, channels = img.shape
h_p = height/100
w_p = width/100
y_start = 0 # Put your value  
y_end = 100 # Put your value
x_start = 30 # Put your value
x_end = 60 # Put your value
img = img[int((y_start)*h_p):int((y_end)*h_p), int((x_start)*w_p):int((x_end)*w_p)]
cv2.imshow("left", img)
cv2.waitKey(0)