当前位置: 首页 > 面试题库 >

Python OpenCV-imshow不需要从BGR转换为RGB

常波
2023-03-14
问题内容

我相信,OpenCV会按BGR 色彩空间 顺序读取图像,我们通常必须像这样将其转换回RGB:

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

但是,当我尝试简单地读取图像并显示它时,颜色看起来很好(无需将BGR转换为RGB):

img_bgr = cv2.imread(image_path)
cv2.imshow('BGR Image',img_bgr)
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
cv2.imshow('RGB Image',img_rgb )
cv2.waitkey(0)

那么,是imshow()在功能内自动更改顺序(从BGR到RGB)还是一直是BGR?


问题答案:

BGR和RGB不是颜色空间,它们只是不同颜色通道顺序的约定。cv2.cvtColor(img, cv2.COLOR_BGR2RGB)不执行任何计算(例如说HSV的转换),它只是在顺序之间切换。任何排序都是有效的-
实际上,三个值(红色,绿色和蓝色)堆叠形成一个像素。您可以按照自己喜欢的方式安排它们,只要您告诉显示器您给了它什么顺序即可。

OpenCV的imreadimwrite并且imshow实际上所有与BGR秩序工作,所以没有必要当你阅读的图像改变顺序cv2.imread,然后想表现出来cv2.imshow

尽管在整个OpenCV中始终使用BGR,但大多数其他图像处理库都使用RGB排序。如果您想使用html" target="_blank">matplotlibimshow但要使用OpenCV读取图像,则需要将BGR转换为RGB。



 类似资料:
  • 我已经在我的计算机上实现了一个数据结构,现在我正试图将它移植到我的android应用程序中。我打开一个原始的资源并获取一个,但我需要获取一个: 上面的代码引发以下异常,因为InputStream无法强制转换为FileInputStream,但这正是我需要的: 我所有的代码都是使用这个和一个FileInputStream构建的,所以我想继续使用它。从然后将其转换为? 在一些相关的帖子中,我无法为我的

  • 问题内容: 我最近在Android Studio中将我的android SDK和构建工具更新为API 26,当我执行以下操作时,我直接注意到Android Studio将我的视图演员标记为“冗余”: 经过一些研究,我发现自SDK 26起,使用Java 8功能来返回相同的对象类型,但是我想知道的是,删除所有强制类型转换是否完全安全。这会在Android 26之前的版本上引起任何问题吗?有关此方面的更

  • 你知道怎么解决这个问题吗?它来自Oracle端(我对此表示怀疑)还是来自SAS端(但有什么变化?) 谢谢你的帮助,我希望我已经给你提供了足够的信息

  • 我使用的是openCV 3.1.0(我试过2.4.9,有同样的问题)。我想输出一个HSV mat到JPEG: 问题是,当我使用执行时,我的程序将失败: OpenCV错误:断言失败(scn==3&(dcn==3 dcn==4)&(depth==CV_8U depth==CV_32F)),位于cvtColor文件/home/pi/OpenCV/src/opencv-3.1.0/modules/imgp

  • 问题内容: “在删除不可见的类之前,需要触发重排,以使过渡按预期进行。” 我的问题是: 1)为什么需要触发回流? 2)我知道我们应该避免使用重排,如果确实如此,那么为什么作者建议使用重排以使过渡正常工作? 3)除了使用回流以外,还有其他方法可以使过渡工作吗? 谢谢。 问题答案: (有效地:“为什么我不能 轻易 在属性中使用过渡”) 简短答案 : CSS过渡依赖于元素的 开始 或 静态 属性。将元素

  • 我发现了这个美丽的小数到小数的函数:https://gist.github.com/natecook1000/9ecc976aaac9a035bddf 我已经操纵了我的应用程序的必要性,并希望在制作Kotlin版本的帮助上面。我确实尝试过自己进行转换,但我是一名新手,在科特林只呆了3周。我没有足够的经验来匹配不同语言之间的语法和语义,我自己也做不到。感谢您的帮助:) 我将上面的内容更改为输出16英

  • 我尝试将h264附件B转换为AVCC:我从附件流中提取了SPS和PPS,并创建了额外的数据。然后在流中查找0x00 0x00 0x00 0x00 0x01(这应该是每个Nal的开始),并继续查找另一个0x00 0x00 0x00 0x01(这将是Nal的结束),然后减去值以获得Nal长度,然后将第一个0x00 0x00 0x00 0x00 0x01替换为0x00 0x00 0x00 0x00[Nu