参考这篇https://blog.csdn.net/c_qianbo/article/details/53364189
但是有些错误,
(1).首先 ,出现了无法读入图片,是因为cv2 的函数改了,
将cv2.CV_LOAD_IMAGE_UNCHANGED改为cv2.IMREAD_ANYCOLOR;
(2).也有在27行报错说“too many indices for array”的错误,但是将循环内的内容拿出来后,随便赋一个值测试时并没有错,最后不知道什么原因就解决了,还是没有弄明白;
(3).最后保存图片时,图存的图片仍然是3通道图片并没有变化;保存原图片的格式是jpg的,但是将保存格式变为png时就解决了。
最后改正后代码如下:
# -*- coding: UTF-8 -*-
import numpy as np
import os, os.path
import cv2
# 通过txt文件中的路径读取RGB图片
train_file = open('nonsmokeRGB.txt')
input_data_train = train_file.readlines()
train_file.close()
# 通过txt文件中的路径读取视差图
disp_file = open('nonsmokeDark.txt')
input_data_disp = disp_file.readlines()
disp_file.close()
for i, name in enumerate(input_data_train):
# 去掉末尾的换行符,name = input_data_train[i]
input_data_train[i] = input_data_train[i].strip()
input_data_disp[i] = input_data_disp[i].strip()
print i
rgb = cv2.imread(input_data_train[i], cv2. IMREAD_ANYCOLOR)
disp = cv2.imread(input_data_disp[i],cv2. IMREAD_ANYCOLOR)
rgb = np.array(rgb)
disp = np.array(disp)
rgbd = np.zeros((100, 100, 4), dtype=np.uint8)
rgbd[:, :, 0] = rgb[:, :, 0]
rgbd[:, :, 1] = rgb[:, :, 1]
rgbd[:, :, 2] = rgb[:, :, 2]
rgbd[:, :, 3] = disp
# input_data_train[i] = os.path.split(input_data_train[i])
filename = 'D:\pythonWorkSpace\Ex_1\RGBD\onsmoke\%s' % i +'.png'
print filename
# # 保存的RGBD图片文件名为RGB图片的文件名
cv2.imwrite(filename, rgbd)
print ("success")