python - 如何组合不同通道的图像?
问题描述
我想组合两个不同通道的图像:
import numpy as np
from PIL import Image
list_im = ['1.png', '2.png']
imgs = [ Image.open(i) for i in list_im ]
min_shape = sorted( [(np.sum(i.size), i.size ) for i in imgs])[0][1]
imgs_comb = np.vstack( (np.asarray( i.resize(min_shape) ) for i in imgs ) )
imgs_comb = Image.fromarray( imgs_comb)
imgs_comb.save( '3.png' )
##imgs_comb = np.hstack( (np.asarray( i.resize(min_shape) ) for i in imgs ) )
##imgs_comb = Image.fromarray( imgs_comb)
##imgs_comb.save( '4.png' )
输出:
return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
ValueError: all the input arrays must have same number of dimensions
是否可以先将它们组合起来,然后将它们保存在一张图像中并保持它们的基本“颜色”(灰度和 3 通道)?
解决方案
我发现opencv支持跨通道操作:
import cv2
import numpy as np
img1 = cv2.imread('1.png') #smaller img (size set to this img)
img2 = cv2.imread('2.png')
img2 = cv2.resize(img2, (len(img1[0]),len(img1))) # resize img
hstack = np.concatenate((img1, img2), axis = 0) # combine horizontally
cv2.imwrite('3.png', hstack)
vstack = np.concatenate((img1, img2), axis = 1) # combine vertically
cv2.imwrite('4.png', vstack)
推荐阅读
- vue.js - Vue:如何应用多个全局混合
- selenium - 如何重现 Selenium 错误 - 对远程 WebDriver 的 HTTP 请求在 60 秒后超时
- amcharts - 具有丰富 HTML 内容的工具提示无助于创建所需的 UI?
- python-3.x - 有没有一种方法可以将批处理文件脚本上传到 python 中(并且能够使用它们)
- css - React-Native 中边框半径图像的自定义形状
- mysql - 从派生表优化 SQL 查询
- javascript - 如何通过单击 chrome 中的选项卡在离开站点之前显示警告消息?
- node.js - 将自定义属性保存在用户数据库而不是用户池中
- mysql - 令人惊讶的 sql 查询时间统计
- c++ - C++ 创建一个存储不同类型名的向量