图像读取和图像显示
以下一段代码是有关MATLAB中如何进行图像读取和图像显示
1 | clear; |
图像裁剪与拼接
图像裁剪首先要确定裁剪的范围,即限定好左右上下的坐标值
这是一个使用python进行批量剪裁的例子: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33# -*- coding: utf-8 -*-
"""
Created on Wed Apr 8 15:20:49 2020
@author: inkbottle
"""
from PIL import Image
import os
# 定义待批量裁剪的图像地址
IMAGE_INPUT_PATH = 'E:/实验记录/20190119/T1-A90-P0.1-02/图片平移下'
# 定义裁剪后的图像存放地址
IMAGE_OUTPUT_PATH = 'E:/实验记录/20190119/T1-A90-P0.1-02/图片平移x'
# 定义左,上,右和下像素坐标
BOX_LEFT, BOX_UP, BOX_RIGHT, BOX_DOWN = 0, 0, 168, 487
for each_image in os.listdir(IMAGE_INPUT_PATH):
# 每个图像全路径
image_input_fullname = IMAGE_INPUT_PATH + '/' + each_image
# PIL库打开每一张图
img = Image.open(image_input_fullname)
# 从此图像返回一个矩形区域。 盒子是一个4元组定义左,上,右和下像素坐标。
box = (BOX_LEFT, BOX_UP, BOX_RIGHT, BOX_DOWN)
# 进行ROI裁剪
roi_area = img.crop(box)
# 裁剪后每个图像全路径
image_output_fullname = IMAGE_OUTPUT_PATH + '/' + each_image
# 保存处理后的图像
roi_area.save(image_output_fullname)
print('{0} crop Done.'.format(each_image))1
2
3im=[img1;img2];假如要将图像进行左右拼接,其中img1在左,img2在右
im=[img1,img2];假如要将图像进行上下拼接,其中img1在上,img2在下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31clear;clc;
picture=struct(...
'file_path',{'E:\实验记录\20190119\T1-A90-P0.1-02\图片平移s\'},...%文件路径
'file_path2',{'E:\实验记录\20190119\T1-A90-P0.1-02\图片平移x\'},...%文件数据存储路径
'file_path3',{'E:\实验记录\20190119\T1-A90-P0.1-02\图片拼接\'},...%文件数据存储路径
'file_name',{'T1-A90-P0.1-020'},...%文件名前缀
'start_number',{1513},...%图片起始编号
'end_number',{1713},...%图片终止编号
'smoothing_size',{5}...%平滑处理值
);
filepath=picture.file_path;filepath2=picture.file_path2;filepath3=picture.file_path3;
for num=picture.start_number:picture.end_number
%读入原图 (上 下)
img1=imread([filepath picture.file_name num2str(num) ' 拷贝' '.png']);
img2=imread([filepath2 picture.file_name num2str(num) ' 拷贝' '.png']);
im=[img1;img2];%1全图+2的后面部分,上下拼接[img1;img2],左右拼接[img1,img2]
imwrite(im,[filepath3 picture.file_name num2str(num) ' 拷贝' '.png']); %可直接保存,尺寸与分辨率均与原图一致
num
end
img1=imread([filepath3 picture.file_name '1513 拷贝' '.png']);im1=img1;
for num=picture.start_number:16:picture.end_number
%读入原图 (上 下)
numm=num+16;
if numm<picture.end_number
img2=imread([filepath3 picture.file_name num2str(numm) ' 拷贝' '.png']);
im1=[im1,img2];%1全图+2的后面部分,上下拼接[img1;img2],左右拼接[img1,img2]
end
num
end
imwrite(im1,[filepath3 picture.file_name ' 全拼接' '.png']); %可直接保存,尺寸与分辨率均与原图一致