import re
from PIL import Image
from colour_demosaicing import demosaicing_CFA_Bayer_bilinear as demosaic
import numpy as np
BAYER_STEREO ='gbrg'
BAYER_MONO ='rggb'defload_image(image_path, model=None, debayer=True):"""Loads and rectifies an image from file.
Args:
image_path (str): path to an image from the dataset.
model (camera_model.CameraModel): if supplied, model will be used to undistort image.
Returns:
numpy.ndarray: demosaiced and optionally undistorted image
"""if model:
camera = model.camera
else:
camera = re.search('(stereo|mono_(left|right|rear))', image_path).group(0)if camera =='stereo':
pattern = BAYER_STEREO
else:
pattern = BAYER_MONO
img = Image.open(image_path)if debayer:
img = demosaic(img, pattern)if model:
img = model.undistort(img)return np.array(img).astype(np.uint8)
play_images.py文件
import argparse
import os
import re
import matplotlib.pyplot as plt
from datetime import datetime as dt
from image import load_image
from camera_model import CameraModel
import cv2 as cv
parser = argparse.ArgumentParser(description='Play back images from a given directory')
parser.add_argument('--dir',type=str, default='C:\\Users\\52xj\\Downloads\\sample_small\\stereo\\centre\\',help='Directory containing images.')# parser.add_argument('--dir', type=str, default='C:\\Users\\52xj\Downloads\\2015-05-29-09-36-29_stereo_left_07\\2015-05-29-09-36-29\\stereo\\left\\',help='Directory containing images.')
parser.add_argument('--models_dir',type=str, default="C:\\Users\\52xj\\Downloads\\Compressed\\robotcar-dataset-sdk-master\\robotcar-dataset-sdk-master\\models",help='(optional) Directory containing camera model. If supplied, images will be undistorted before display')
parser.add_argument('--scale',type=float, default=1.0,help='(optional) factor by which to scale images before display')
args = parser.parse_args()
camera = re.search('(stereo|mono_(left|right|rear))', args.dir).group(0)
timestamps_path = os.path.join(os.path.join(args.dir, os.pardir, camera +'.timestamps'))ifnot os.path.isfile(timestamps_path):
timestamps_path = os.path.join(args.dir, os.pardir, os.pardir, camera +'.timestamps')ifnot os.path.isfile(timestamps_path):raise IOError("Could not find timestamps file")
model =Noneif args.models_dir:
model = CameraModel(args.models_dir, args.dir)
current_chunk =0
timestamps_file =open(timestamps_path)for line in timestamps_file:
tokens = line.split()
datetime = dt.utcfromtimestamp(int(tokens[0])/1000000)
chunk =int(tokens[1])
filename = os.path.join(args.dir, tokens[0]+'.png')ifnot os.path.isfile(filename):if chunk != current_chunk:print("Chunk "+str(chunk)+" not found")
current_chunk = chunk
continue
current_chunk = chunk
# 保存转换后的彩色图片
save_img_name = filename.split("\\")[-1]
img = load_image(filename, model)
img_rgb = cv.cvtColor(img, cv.COLOR_BGR2RGB)
cv.imwrite("../result/"+save_img_name,img_rgb)
plt.imshow(img)
plt.show()