你为自己创造了不必要的生活。如果要将图像加载为灰度,并将其与OpenCV一起使用,则应该执行以下操作:
im = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
就这样。无需使用PIL(速度较慢),无需使用 cvtColor() 因为你已经浪费了所有在BGR读取它的记忆。
cvtColor()
如果您绝对想要使用PIL读取它(出于某些奇怪的原因),请使用:
import numpy as np from PIL import Image # Read in and make greyscale PILim = Image.open('image.jpg').convert('L') # Make Numpy/OpenCV-compatible version openCVim = np.array(PILim)
顺便说一句,如果你想从OpenCV / Numpy图像返回PIL图像,请使用:
PILim = Image.fromarray(openCVim)
由于您已经加载了图像,因此您应该使用图像转换功能:
im_template = cv2.cvtColor(a, cv2.COLOR_RGB2GRAY) im_source = cv2.cvtColor(b, cv2.COLOR_RGB2GRAY)