如何将1通道numpy矩阵转换为4通道单色图像

德拉利

我正在使用numpy和cv2进行pyqt项目。基本上,我想使用二进制numpy蒙版(1024, 1024)创建4通道单色图像(1024, 1024, 4),其中蒙版中的所有1均为粉红色,而所有0均不可见。然后,我转换图像并将其显示为QScene中的叠加层,以突出显示另一幅图像中的某些像素。

我目前的方法可以完成任务,但是速度太慢,并且我可以确定numpy提供了一些更方便的方法。

color = (255, 0, 238, 100)
r = (mask * color[0]).reshape((w*h))
g = (mask * color[1]).reshape((w*h))
b = (mask * color[2]).reshape((w*h))
a = (mask * color[3]).reshape((w*h))

rgba = np.dstack((r, g, b, a)).reshape((w, h, 4))
transposed = np.transpose(rgba, axes=[1, 0, 2])

有没有更好的方法来显示蒙版覆盖?我不坚持使用numpy,但是,设置颜色非常重要,因为我将需要几种颜色。

迪卡卡(Divakar)

是的!使用NumPy broadcasting清理它,并one-liner像这样-

transposed = mask.T[...,None]*color

解释:

  1. 使用mask.T做最后的np.transpose操作。
  2. [...,None]在转置数组上使用,基本上将其所有尺寸推到前面,并创建一个单例调光(用调暗length=1)作为最后一个轴。为了引入这个新轴,我们使用了np.newaxis-的别名None因此,我们将沿着与元素对齐的最后一个转置数组实现广播color
  3. 最后,我们自己执行逐元素乘法,实际上这将是一个broadcasted运算。

您可以在开始时执行新轴零件的创建,然后使用np.transposenp.swapaxes,这将更接近您的原始代码。因此,或者我们可以有:

transposed = mask[:,:,None].transpose(1,0,2)*color

和,

transposed = mask[:,:,None].swapaxes(0,1)*color

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将1通道numpy矩阵转换为4通道单色图像

来自分类Dev

将1通道图像转换为3通道图像

来自分类Dev

将1通道图像转换为3通道图像

来自分类Dev

在C中,如何将1通道PCM转换为2通道PCM?

来自分类Dev

MATLAB:将3通道24位bmp图像转换为1通道16位bmp图像

来自分类Dev

如何不使用cv2.cvtColor()将3通道图像转换为1通道图像?

来自分类Dev

如何将3通道numpy数组另存为图像

来自分类Dev

Python枕头:如何从1通道图像生成3通道图像?

来自分类Dev

OpenCV将图像读取为3通道图像,而PIL读取与1通道图像相同的图像

来自分类Dev

如何从PNG图像中删除第4通道

来自分类Dev

如何在OpenCV(CV_8UC4)的4通道图像矩阵中布置数据?

来自分类Dev

pytorch中使用4通道图像进行分类

来自分类Dev

从三通道图像中获取第二通道作为Numpy数组

来自分类Dev

将4通道RGB-D图像输入LSTM

来自分类Dev

从3通道彩色图像的原始数据加载Opencv矩阵

来自分类Dev

使用FFMPEG将16通道音频输入源拆分为4个独立的4通道音频供流

来自分类Dev

1通道位图到SDL_Texture

来自分类Dev

从2创建1通道的ALSA设备

来自分类Dev

1通道位图到SDL_Texture

来自分类Dev

在张量流中将1通道蒙版应用于3通道张量

来自分类Dev

如何从CIImage中读取CVPixelBuffer为4通道浮点格式?

来自分类Dev

如何使4通道“ 3.1环绕” WDM与Winamp一起使用?

来自分类Dev

双通道RAM与四通道RAM

来自分类Dev

ffmpeg 6通道DTS到6通道AAC

来自分类Dev

三通道内存与单通道或双通道内存有何不同?

来自分类Dev

如何使用ALSA或PulseAudio将立体声源重新映射到8通道PCM并降低音量?

来自分类Dev

为什么默认的FCN infer.py脚本仅输出1通道Mat,如何获得RGB输出?

来自分类Dev

使用C#创建3通道位图?

来自分类Dev

从阵列创建或重塑OpenCV 3通道垫

Related 相关文章

  1. 1

    如何将1通道numpy矩阵转换为4通道单色图像

  2. 2

    将1通道图像转换为3通道图像

  3. 3

    将1通道图像转换为3通道图像

  4. 4

    在C中,如何将1通道PCM转换为2通道PCM?

  5. 5

    MATLAB:将3通道24位bmp图像转换为1通道16位bmp图像

  6. 6

    如何不使用cv2.cvtColor()将3通道图像转换为1通道图像?

  7. 7

    如何将3通道numpy数组另存为图像

  8. 8

    Python枕头:如何从1通道图像生成3通道图像?

  9. 9

    OpenCV将图像读取为3通道图像,而PIL读取与1通道图像相同的图像

  10. 10

    如何从PNG图像中删除第4通道

  11. 11

    如何在OpenCV(CV_8UC4)的4通道图像矩阵中布置数据?

  12. 12

    pytorch中使用4通道图像进行分类

  13. 13

    从三通道图像中获取第二通道作为Numpy数组

  14. 14

    将4通道RGB-D图像输入LSTM

  15. 15

    从3通道彩色图像的原始数据加载Opencv矩阵

  16. 16

    使用FFMPEG将16通道音频输入源拆分为4个独立的4通道音频供流

  17. 17

    1通道位图到SDL_Texture

  18. 18

    从2创建1通道的ALSA设备

  19. 19

    1通道位图到SDL_Texture

  20. 20

    在张量流中将1通道蒙版应用于3通道张量

  21. 21

    如何从CIImage中读取CVPixelBuffer为4通道浮点格式?

  22. 22

    如何使4通道“ 3.1环绕” WDM与Winamp一起使用?

  23. 23

    双通道RAM与四通道RAM

  24. 24

    ffmpeg 6通道DTS到6通道AAC

  25. 25

    三通道内存与单通道或双通道内存有何不同?

  26. 26

    如何使用ALSA或PulseAudio将立体声源重新映射到8通道PCM并降低音量?

  27. 27

    为什么默认的FCN infer.py脚本仅输出1通道Mat,如何获得RGB输出?

  28. 28

    使用C#创建3通道位图?

  29. 29

    从阵列创建或重塑OpenCV 3通道垫

热门标签

归档