matlab-python代码对大的图片裁剪,随机裁剪,按概率裁剪

matlab版本

可以从csv文件读取图片类别,先裁成1000*1000,再下采样成299*299
clear;
path  = 'E:\BaiduNetdiskDownload\rockData';%'C:\Users\Administrator\Desktop\6models\0bilater_result';
output_path = 'E:\BaiduNetdiskDownload\rockData\rock-pre\';
path_temp      = fullfile(path, '*'); %各种路径
%M = csvread('E:\BaiduNetdiskDownload\B题样例数据\rock_label_1.csv',0,0);
T = readtable('E:\BaiduNetdiskDownload\rockData\rock_label.csv');
C = table2cell(T);
n_pc_dir       = dir(path_temp);
kernal_size = 298; %裁剪成299的图片
im_num         = length(n_pc_dir);
for s=3:im_num
    data = imread(fullfile(path, n_pc_dir(s).name));
    center = (size(data)/2);
    center = center(1:2);
    xmin = floor(center(1)-kernal_size*2-kernal_size/2);
    ymin = floor(center(2)-kernal_size*2-kernal_size/2);
    for i=0:2  %按中心裁剪,裁9张
        xmin = xmin + kernal_size;
        ymin = floor(center(2)-kernal_size*2-kernal_size/2);
        for j=0:2
            ymin = ymin + kernal_size;
            crop_image = imcrop(data, [ymin,xmin, kernal_size, kernal_size]); % 使用 imcrop() 函数来裁剪图片,第二个参数的格式为 [XMIN YMIN WIDTH HEIGHT]
%             imwrite(crop_image, [fullfile(output_path, n_pc_dir(s).name(1:end-6)) '-' num2str(i*3+j+1) '.bmp']); % 保存文件
            name{9*(s-3)+i*3+j+1,1} = [n_pc_dir(s).name(1:end-6) '-' num2str(i*3+j+1)];
            idx = find([T{:,1}] == str2num(n_pc_dir(s).name(1:end-6)));
            name{9*(s-3)+i*3+j+1,2} = C(idx,2);
        end
    end
    %filename_noise = n_pc_dir(s).name(1:end-4);
end
nameT = cell2table(name);
writetable(nameT,'E:\BaiduNetdiskDownload\rockData\rock_label_pre.csv'); %可以将每个图片的类别放到csv中

python版本

可以按照概率裁剪图片,裁到中间的概率高
import os
import cv2
import random
from PIL import Image
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import torch
# import torchvision.transforms as transforms

def image_downsample(path, output_path_down, output_path_crop, cutNum, crop_size,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值