要怎么把五个单通道影像合并成一張五通道的影像
网上查了一下好像是imread,imwrite只支援到四通道,但似乎也没看见其他教学
感谢各位
import cv2
import numpy as np
import os
img1 = cv2.imread("C:/Labbb/mergetestttttt/auto_correlation/auto_correlation_reverse1/0301(46).JPG", cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread("C:/Labbb/mergetestttttt/energy/energy1/0301(46).JPG", cv2.IMREAD_GRAYSCALE)
img3 = cv2.imread("C:/Labbb/mergetestttttt/entropy/entropy_reverse1/0301(46).JPG", cv2.IMREAD_GRAYSCALE)
img4 = cv2.imread("C:/Labbb/mergetestttttt/homogeneity/homogeneity1/0301(46).JPG", cv2.IMREAD_GRAYSCALE)
img5 = cv2.imread("C:/Labbb/mergetestttttt/temp/0301temprature.png", cv2.IMREAD_GRAYSCALE)
img_merge = cv2.merge([img1, img2, img3, img4, img5])
output_path = "C:/Labbb/mergetestttttt/merge/merge1"
filename = "0301(46).png"
cv2.imwrite(os.path.join(output_path, filename), img_merge)
会报以下错误
error
OpenCV(4.5.5) D:\Build\OpenCV\opencv-4.5.5\modules\imgcodecs\src\loadsave.cpp:737: error: (-215:Assertion failed) image.channels() == 1 || image.channels() == 3 || image.channels() == 4 in function 'cv::imwrite_'
File "C:\Labbb\mergetestttttt\merge.py", line 20, in <module>
cv2.imwrite(os.path.join(output_path, filename), img_merge)
cv2.error: OpenCV(4.5.5) D:\Build\OpenCV\opencv-4.5.5\modules\imgcodecs\src\loadsave.cpp:737: error: (-215:Assertion failed) image.channels() == 1 || image.channels() == 3 || image.channels() == 4 in function 'cv::imwrite_'
可以使用OpenCV的merge函数来将五个单通道影像合并成一个五通道影像。以下是一个示例代码:
import cv2
import numpy as np
# 读入五个单通道影像
img1 = cv2.imread('img1.png', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('img2.png', cv2.IMREAD_GRAYSCALE)
img3 = cv2.imread('img3.png', cv2.IMREAD_GRAYSCALE)
img4 = cv2.imread('img4.png', cv2.IMREAD_GRAYSCALE)
img5 = cv2.imread('img5.png', cv2.IMREAD_GRAYSCALE)
# 将单通道影像合并成一个五通道影像
merged = cv2.merge((img1, img2, img3, img4, img5))
# 保存五通道影像
cv2.imwrite('merged.png', merged)
在以上代码中,首先使用cv2.imread
函数读入五个单通道影像,然后使用cv2.merge
函数将这些影像合并成一个五通道影像,最后使用cv2.imwrite
函数保存合并后的影像。注意,在使用cv2.merge
函数时,需要将五个单通道影像作为一个元组传递给函数。