当前位置: 首页 > 知识库问答 >
问题:

cv2.imshow显示二进制图像

祖利
2023-03-14

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

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)

Edit2:我发现发生这个错误的原因很简单,因为矩阵是np。浮动64。把它转换成np。但是,float32不会更改imshow结果。

共有2个答案

蓝星辰
2023-03-14

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

暴向笛
2023-03-14

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

converted = cv2.cvtColor(hip_dir,cv2.COLOR_BGR2RGB)
 类似资料:
  • 我试图检查通过cv2.imread()实际读取的数据,但每当我这样做时,我得到的是一个全灰色屏幕。我应该得到彩虹的图像。

  • 本文向大家介绍python中plt.imshow与cv2.imshow显示颜色问题,包括了python中plt.imshow与cv2.imshow显示颜色问题的使用技巧和注意事项,需要的朋友参考一下 在用plt.imshow和cv2.imshow显示同一幅图时可能会出现颜色差别很大的现象。 这是因为:opencv的接口使用BGR,而matplotlib.pyplot 则是RGB模式 程序运行结果如

  • 问题内容: 这是有效的.JPEG图像的二进制文件。 http://pastebin.ca/raw/2314500 我试图使用Python将二进制数据保存到图像中。 如何使用extjs 4将这些数据转换为可见的.JPEG图像? 我试过了,但是没有用。 问题答案: 需要将其转换为base64。 JS具有btoa()函数。 例如: 但是我认为您在pastebin中的二进制数据无效-jpeg数据必须以’f

  • 本文向大家介绍PHP:从二进制数据重新创建并显示图像,包括了PHP:从二进制数据重新创建并显示图像的使用技巧和注意事项,需要的朋友参考一下 可以使用image src属性中的数据URI完成此操作。 格式 “ data_uri”函数定义“ contents”,“ base64”,并返回数据及其编码值。通过将图像传递给该函数来调用该函数,从而重新创建它并以二进制数据的形式显示它。 注意 -这可用于避免

  • 问题内容: 我正在从Nodejs服务器接收绑定,现在需要显示图像。 我该如何实现?有什么方法可以将bindata转换为JPEG或任何其他格式?还是可以在服务器中将其转换然后发送该图像以作出反应? 这是我尝试使用图片标签显示二进制数据()的方法: 这是我的详细反应代码段: 这是我的nodejs代码片段: 问题答案: 如果二进制数据表示为 base64 字符串: 如果您只有图片网址,则只需执行以下操作

  • 我的当前程序将向用户输出图像,并根据用户输入,根据需要重新调整图像。 长话短说,我试图在图像文件中找到圆形对象。我将使用Hough圆变换。然而,因为我在图像中的许多圆不是“完美圆”,所以我正在做一个“猜测”圆半径的算法。但是,我希望允许用户根据需要重新调整半径。 有没有办法要求用户输入,然后根据用户输入,重新调整imshow()中的窗口?现在,imshow()拒绝显示实际的窗口,直到我使用cv2.