python - 如何将numpy数组更改为灰度opencv图像

标签 python arrays opencv numpy

如何在 python 中将 numpy 数组转换为灰度 opencv 图像? 经过一些处理后,我得到了一个具有以下属性的数组:最大值为:0.99999999988, 最小值为 8.269656407e-08,类型为:<type 'numpy.ndarray'> .我可以使用 cv2.imshow() 将其显示为图像功能,但我无法将其传递给 cv2.AdaptiveTreshold()功能,因为它有错误的类型:

error: (-215) src.type() == CV_8UC1 in function cv::adaptiveThreshold

如何将这个 np.array 转换为正确的格式?

最佳答案

正如断言所述,adaptiveThreshold()需要单 channel 8 位图像。

假设您的浮点图像范围从 0 到 1(看起来是这种情况),您可以通过乘以 255 并转换为 np.uint8 来转换图像:

float_img = np.random.random((4,4))
im = np.array(float_img * 255, dtype = np.uint8)
threshed = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 3, 0)

关于python - 如何将numpy数组更改为灰度opencv图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124458/

相关文章:

python - 如何以编程方式清除 Maya 脚本编辑器?

javascript - 如何删除 for 循环中的最后一个逗号?

arrays - 如何从多维数组计算一维索引?例如二维到一维 : y * xTot + x = i. 但更大

Python opencv 角落

python-3.x - 在自动调整大小的窗口中选择ROI

Python 请求 - 为以后的 url 使用保存 cookie

python - 如何在两个不同的内存位置创建 str "1"?

python - 使用 glibc 2.14 的 Anaconda3 中的 Centos 6.6 段错误

python - 带有 bool 语句的 Numpy 向量化函数赋值

opencv - 在OpenCV中以改变的原点执行剪切