python 实现从高分辨图像上抠取图像块


Posted in Python onJanuary 02, 2020

我就废话不多说了,直接上代码吧!

#coding=utf-8
import cv2
import numpy as np
import os
# 程序实现功能:
# 根据patch在高分辨率图像上的索引值,crop出对应区域的图像
# 并验证程序的正确性
'''
对于当前输入的3328*3328的高分辨率特征图,首先resize到640*640
然后根据当前的patch文件名(包含了patch在高分辨率图像上的行索引和列索引)
这个索引值是将高分辨率图像划分成多个没有overlap的256*256的图像块之后的行索引和列索引
行索引range(1,11),列索引range(0,12)
3328=13*256
'''

index='IDRiD_03_3_12.jpg'
raw_img_path='F:\\2\\eye_seg_con\\eye_seg\\joint_data\\raw_image\\train'
patches_path='F:\\2\\eye_seg_con\\eye_seg\\joint_data\\patches\\train'
true_patches=cv2.imread(os.path.join(patches_path,index))[:,:,::-1]

print(os.path.join(raw_img_path,index.split('_')[0]+index.split('_')[1]+'.jpg'))

hr_img=cv2.imread(os.path.join(raw_img_path,index.split('_')[0]+'_'+index.split('_')[1]+'.jpg'))[:,:,::-1]
hr_img=cv2.resize(hr_img,(640,640))# hr_img RGB

'''
640/13=49.23076923076923 记作unit
将640*640的区域平均划分成13*13份,每一份的像素点大小是unit*unit
然后将对应位置(取整)的图像块抠出来,resize成256*256大小
'''
unit=640/13
patch_row_num = int(index[:-4].split('_')[2])
patch_col_num = int(index[:-4].split('_')[3])

row_start=round(patch_row_num*unit)
row_end=round((patch_row_num+1)*unit)
col_start=round(patch_col_num*unit)
col_end=round((patch_col_num+1)*unit)

my_patch=hr_img[row_start:row_end,col_start:col_end,:]
my_patch=cv2.resize(my_patch,(256,256))
my_patch=np.array(my_patch,dtype=np.uint8)

cv2.imshow('true_patches',true_patches[:,:,::-1])
cv2.waitKey(0)

cv2.imshow('my_patch',my_patch[:,:,::-1])
cv2.waitKey(0)

# # hr_img RGB
#
# # cv2.imshow('1',hr_img[:,:,::-1])
# # cv2.waitKey(0)
#
# hr_img2=cv2.imread(os.path.join(raw_img_path,index.split('_')[0]+'_'+index.split('_')[1]+'.jpg'))
# hr_img2=cv2.resize(hr_img2,(640,640))[:,:,::-1]# hr_img2 RGB
# # cv2.imshow('2',hr_img2[:,:,::-1])
# # cv2.waitKey(0)
#
# print(np.sum(hr_img2-hr_img))# 0

# 结论:
# 对于cv2.resize函数而言,无论是先进行BGR的通道转换,再resize,还是先进行resize,再进行BGR通道转换
# 所得到的图像是相同的,即resize和通道维度的变换可交换顺序
# 实际上resize只发生在spatial dimension,而通道变换发生在channels dimension,所以空间维度上的插值变换
# 是在每个通道维度上独立进行的。
# 另外,对于计算机而言,所读取到的彩色图像就是H*W*3的矩阵而已,它本身是没有办法区分究竟是BGR格式还是RGB格式的

以上这篇python 实现从高分辨图像上抠取图像块就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
python学习 流程控制语句详解
Jun 01 Python
Python输出带颜色的字符串实例
Oct 10 Python
windows 10 设定计划任务自动执行 python 脚本的方法
Sep 11 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
python不到50行代码完成了多张excel合并的实现示例
May 28 Python
Pandas读取csv时如何设置列名
Jun 02 Python
python中str内置函数用法总结
Dec 27 Python
Python 调用C++封装的进一步探索交流
Mar 04 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
如何解决.cuda()加载用时很长的问题
May 24 Python
Pandas自定义选项option设置
Jul 25 Python
python base64库给用户名或密码加密的流程
Jan 02 #Python
python文件处理fileinput使用方法详解
Jan 02 #Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 #Python
Pytorch的mean和std调查实例
Jan 02 #Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 #Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 #Python
pytorch实现focal loss的两种方式小结
Jan 02 #Python
You might like
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
JavaScript 事件系统
2010/07/22 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
纯JS实现轮播图
2017/02/22 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
基于Django与ajax之间的json传输方法
2018/05/29 Python
python实现雨滴下落到地面效果
2018/06/21 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
python实现邮件循环自动发件功能
2020/09/11 Python
Python如何在bool函数中取值
2020/09/21 Python
考试不及格检讨书
2014/01/09 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
关于安全的演讲稿
2014/05/09 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
授权收款委托书范本
2014/10/10 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript