【问题标题】:Extracting individual frames from an image从图像中提取单个帧
【发布时间】:2013-05-08 19:25:03
【问题描述】:

我目前是 python 新手,我想从图像中分别提取 R、G 和 B 帧。

比如存储我的图片的变量是img

我想知道的;

我如何制作Rimg = img (:,:,1) Gimg = img (:,:,2) Bimg = img (:,:,3) 当然,这些是 MATlab 伪代码,而 Rimg、Gimg 和 Bimg 只是变量。

【问题讨论】:

  • 它们被称为颜色通道。您可能会发现这样更容易搜索。

标签: python opencv python-2.7 numpy


【解决方案1】:

Numpy 风格:

Bimg = img[:,:,0]
Gimg = img[:,:,1]
Rimg = img[:,:,2]

OpenCV 风格:

B,G,R = cv2.split(img)

【讨论】:

  • 谢谢,我最终在 numpy stype 中完成了 :) 顺便说一句,优秀的博客对我了解 python 有很大帮助!
【解决方案2】:

其他答案是正确的,但这是一个足够常见的操作,单行可能是惯用的:

# Let `im` be a numpy array
r,g,b = im.transpose((2,0,1))

transpose 运算符更改周围的轴,使第一个轴成为通道轴。然后您可以使用标准的 Python 多重赋值来分配给rgb

【讨论】:

  • 啊,这种方式是一种很好且有效的方式,谢谢!
【解决方案3】:

假设您使用 Python 中的许多图像库(OpenCVMahotasscikits.imagePIL)将数据加载为NumPyndarray,那么语法基本上与Matlab 将工作:

Rimg = img[:,:,0] 
Gimg = img[:,:,1] 
Bimg = img[:,:,2]

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2014-02-27
    • 2020-10-18
    相关资源
    最近更新 更多