cv2.threshold() error (-210)



我是Python新手。

我想用傅里叶变换来定义文本旋转

import cv2
import numpy as np
import matplotlib.pyplot as plot
img = cv2.imread ('Text_rot.bmp', cv2.CV_LOAD_IMAGE_GRAYSCALE)
afterFourier =  np.log (np.abs(np.fft.fft2 (img)))
ret1, th1 = cv2.threshold (afterFourier, 127, 255, cv2.THRESH_BINARY)

但是这个代码失败了:

ret1, th1 = cv2.threshold (afterFourier, 127, 255, cv2.THRESH_BINARY)
error: ......srcopencvmodulesimgprocsrcthresh.cpp:783: error: (-210) 

为什么会导致"-210"错误?

OpenCV错误码可以在types_c.h中查找。

错误码-210定义为:

CV_StsUnsupportedFormat= -210, /**< the data format/type is not supported by the function*/

因此,您需要在将图像传递给cv2.threshold之前将其强制转换为uint8数据类型。这可以使用astype方法在numpy中完成:

afterFourier = afterFourier.astype(np.uint8)

这将截断afterFourier中的所有float值为8位值,因此您可能需要在此之前对数组进行一些缩放/舍入,这取决于您的应用程序。

相关内容

  • 没有找到相关文章

最新更新