gpt4 book ai didi

python:不支持 OpenCV 图像深度 (CV_64F)

转载 作者:太空宇宙 更新时间:2023-11-03 21:18:21 25 4
gpt4 key购买 nike

因此,我尝试使用以下代码显示只有黑色和白色的二进制图片:

import cv2
import numpy as np

x_img = cv2.imread("lenac.tif")

x_img_g = cv2.cvtColor(x_img, cv2.COLOR_BGR2GRAY)

y = x_img_g > 128

cv2.imshow("", y*1.0)
cv2.waitKey(0)
cv2.destroyAllWindows()

但是我收到了这个错误:

>Traceback (most recent call last):
File "ex5.py", line 11, in <module>
cv2.imshow("", y*1.0)
cv2.error: OpenCV(4.0.0) c:\projects\opencv-
python\opencv\modules\imgproc\src\color.hpp:261: error: (-2:Unspecified
error) >in function '__cdecl cv::CvtHelper<struct
cv::Set<1,-1,-1>,struct cv::Set<3,4,-1>,struct
cv::Set<0,2,5>,2>::CvtHelper(const class cv::_InputArray &,const class
cv::_OutputArray &,int)'
>Unsupported depth of input image:
> 'VDepth::contains(depth)'
> where
> 'depth' is 6 (CV_64F).

最佳答案

试试 cv2.imshow("", y.astype('float32'))cv2.imshow("", y.astype('uint8') * 255)

CV_64F 表示 numpy 数组 dtypefloat64(64 位 float )。

opencv imshow 仅适用于 float32(32 位浮点),其中像素值的范围是 0.0-1.0uint8 (无符号 8 位),范围为 0-255

由于 y 是一个 bool,将其转换为数字意味着将 True 转换为 1

对于 float32,这很好,因为 1 是 imshow 范围的最大值

如果您使用 uint8,这意味着您正在尝试显示值 1/255 的像素(因为 uint8 的最大 imshow 范围> 是 255),几乎看不到,因此您可以乘以 255 使这些像素达到最大并显示为亮白色像素

关于python:不支持 OpenCV 图像深度 (CV_64F),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55128386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com