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中的代码编码格式转换问题
Jun 10 Python
python实现在windows服务中新建进程的方法
Jun 30 Python
简介Django中内置的一些中间件
Jul 24 Python
Python实现针对给定单链表删除指定节点的方法
Apr 12 Python
详解python3中zipfile模块用法
Jun 18 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
Aug 09 Python
Python使用Turtle库绘制一棵西兰花
Nov 23 Python
python实现猜数游戏
Mar 27 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 Python
python用Configobj模块读取配置文件
Sep 26 Python
matplotlib阶梯图的实现(step())
Mar 02 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
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
python开发之函数定义实例分析
2015/11/12 Python
浅谈Django REST Framework限速
2017/12/12 Python
python实现自动发送报警监控邮件
2018/06/21 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
Python中pass语句的作用是什么
2016/06/01 面试题
中级会计职业生涯规划范文
2014/01/16 职场文书
初中校园广播稿
2014/02/02 职场文书
思想品德课教学反思
2014/02/10 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏