Python cv2.imshow显示二进制图像

Python cv2.imshow显示二进制图像,python,opencv,opencv3.0,Python,Opencv,Opencv3.0,我有一个代码,其中矩阵hip_dir表示RGB图像。如果我检查它的形状,python将返回(1080119203)。如果我写 cv2.imwrite('hip_dir.jpg',hip_dir) 我在文件夹中保存了正确的图像。然而,当我 cv2.imshow('img0',hip_dir) cv2.waitKey(0) cv2.destroyAllWindows() 我得到了同样的图像,黑色和白色(有一些蓝色像素,但是,使这更奇怪) 如何正确使用imshow 编辑: 使用命令cv2.cvtC

我有一个代码,其中矩阵hip_dir表示RGB图像。如果我检查它的形状,python将返回(1080119203)。如果我写

cv2.imwrite('hip_dir.jpg',hip_dir)
我在文件夹中保存了正确的图像。然而,当我

cv2.imshow('img0',hip_dir)
cv2.waitKey(0)
cv2.destroyAllWindows()
我得到了同样的图像,黑色和白色(有一些蓝色像素,但是,使这更奇怪)

如何正确使用imshow

编辑:

使用命令cv2.cvtColor会导致以下错误:

error: OpenCV(4.1.0) c:\projects\opencv- 
python\opencv\modules\imgproc\src\color.simd_helpers.hpp:94: error:         
(-2:Unspecified error) in function '__cdecl cv::impl::`anonymous-namespace'::CvtHelper<struct cv::impl::`anonymous namespace'::Set<3,4,-1>,struct cv::impl::A0xe227985e::Set<3,4,-1>,struct cv::impl::A0xe227985e::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)
错误:OpenCV(4.1.0)c:\projects\OpenCV-
python\opencv\modules\imgproc\src\color.simd\u helpers.hpp:94:错误:

函数“\uu cdecl cv::impl::`anonymous namespace'::CvtHelperOpenCV中的(-2:未指定错误)要求图像为BGR格式,请尝试应用

converted=cv2.cvtColor(hip\u dir,cv2.COLOR\u BGR2RGB)

OpenCV希望图像为BGR格式,请尝试应用

converted=cv2.cvtColor(hip\u dir,cv2.COLOR\u BGR2RGB)

伙计们,我发现了问题所在:在imshow命令中显示RGB颜色的正确方法是强制图像的对应矩阵采用np.uint8格式。我测试了其他格式,但没有一种工作正常。但是我不知道为什么。

所以伙计们,我发现了错误:在imshow命令中显示RGB颜色的正确方法是强制图像的对应矩阵为np.uint8格式。我测试了其他格式,但没有一种工作正常。我不知道为什么。

在你的问题中添加你的图像(正确和“不满意”的版本)总是很受欢迎的,而且在问图像处理问题时,很可能会得到有用的答案……添加你的图像(正确和“不满意”的版本)在询问图像处理问题时,您的问题总是值得赞赏的,并且更有可能得到有用的答案…感谢您的回答,但它会引发错误(在问题中编辑)。感谢您的回答,但它会引发错误(在问题中编辑)。原因是uint8图像期望值为0..255。浮点类型的图像期望值介于0和1之间。如果浮点图像的值大于1,则假定它们都为1。结果是一个二进制图像,0=黑色,1-255=白色。原因是uint8图像期望值为0..255。浮点类型的图像期望值介于0和1之间。如果浮点图像的值大于1,则假定它们都为1。结果是一个二进制图像,0=黑色,1-255=白色。