使用opencv python将转置矩阵合并回图像

时间:2018-07-23 18:31:26

标签: python python-2.7 numpy opencv transpose

使用cv2.imread(exmaple)加载图像后,我可以看到照片并使用它。我想使用B矩阵将图像拆分为b,g,r,对其进行转置,并在所有其他通道均为零时再次合并。我收到此错误:

bluet = cv2.merge((mtrxz,mtrxz,bt))
     

cv2.error:...... \ modules \ core \ src \ convert.cpp:296:error:(-215)mv [i] .size == mv [0] .size && mv [i ] .depth()==函数cv :: merge的深度


这是我的代码:

def colors():
    img = cv2.imread('img.jpg')
    b,g,r = cv2.split(img)
    mtrxz = np.zeros(b.shape,np.uint8)

    bt = np.transpose(b)
    bluet = cv2.merge((mtrxz,mtrxz,bt))

已经尝试:
1.使用bluet = cv2.merge((mtrxz,mtrxz,bt))进行显示,并且可以使用
2.打印 bt ,然后查看矩阵

1 个答案:

答案 0 :(得分:0)

我从您的代码中看到,您没有检查矩阵尺寸,因此换位一个通道(b)与另一个通道不匹配。 为了更加清楚,这里是一个示例:

t0。
img.shape =(256x100)x 3
t1。
    转置(b)=> bt.shape = 100x256
t2。
    合并(256x100)x2 &&(100x256)=>错误!

我也尝试换位零矩阵,它对我有用。这里是一个例子:

import cv2
import numpy as np

img = cv2.imread('img.jpg')
b,g,r = cv2.split(img)
mtrxz = np.zeros(b.shape,np.uint8)

bt = np.transpose(b)
#bluet = cv2.merge((mtrxz,mtrxz,bt))
bluet = cv2.merge((np.transpose(mtrxz),np.transpose(mtrxz),bt))

希望这会有所帮助