TypeError:使用 OpenCV 在 Python 中旋转图像时,参数 'mat' 的预期 cv::UMat



我试图使用python旋转图像,我认为旋转图像的逻辑是正确的,但是每当我尝试使用opencv显示旋转图像时,我都会收到以下错误:

TypeError:预期的CV :: UMAT参数'MAT'

我是Python的新手,并首次与OpenCV合作,所以我对此没有很多想法。旋转图像的类型是numpy.ndarray,我认为OPENCV在nd.array

上起作用

这是我的代码:

import cv2
import numpy as np
def rotateToNinety(imageProcessing):
    imageProcessing = imageProcessing[::-1]
    rotatedImage = np.array([[[None for z in range(3)] for x in range(len(imageProcessing))]for y in range(len(imageProcessing[0]))])
    for i in range(len(imageProcessing[0])):
        for j in range(len(imageProcessing)):
            for k in range(3):
                rotatedImage[i][j][k] = imageProcessing[j][i][k]
    return rotatedImage

image = cv2.imread("download (2).jpg",1)
print("Original Image".center(50,"="))
print(image)
cv2.imshow("Original",image)
cv2.waitKey(0)
print(type(image))

rotated_90 = rotateToNinety(image)
print("Rotated Image".center(50,"="))
print(rotated_90)
print(type(rotated_90))
cv2.imshow("rotated",rotated_90)
cv2.waitKey(0)
cv2.destroyAllWindows()

我有同样的问题并使用了:

image=np.uint8(image)

其中图像是您的cv.imread((对象。

在您的情况下尝试更换

def rotateToNinety(imageProcessing):
    imageProcessing = imageProcessing[::-1]
    rotatedImage = np.array([[[None for z in range(3)] for x in range(len(imageProcessing))]for y in range(len(imageProcessing[0]))])
    for i in range(len(imageProcessing[0])):
        for j in range(len(imageProcessing)):
            for k in range(3):
                rotatedImage[i][j][k] = imageProcessing[j][i][k]
    return rotatedImage

def rotateToNinety(imageProcessing):
    h,w,c = imageProcessing.shape
    rotatedImage = np.zeros((h,w,c), dtype=np.uint8)
    imageProcessing = imageProcessing[::-1]
    for i in range(h):
        for j in range(w):
            for k in range(3):
                rotatedImage[i][j][k] = imageProcessing[j][i][k]
    return rotatedImage

在您的情况下,您将列与行混合。

哦,尝试使用np.zeros((height, width, num_channels))尽可能创建空白图像。

检查您的image是否为numpy。如果不是,请将其转换为numpy:

image = np.array(image)
cv2.imshow('show', image)
cv2.waitKey(0)

相关内容

最新更新