python 实现从高分辨图像上抠取图像块
我就废话不多说了,直接上代码吧!
#coding=utf-8 importcv2 importnumpyasnp importos #程序实现功能: #根据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_imgRGB ''' 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_imgRGB # ##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_img2RGB ##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只发生在spatialdimension,而通道变换发生在channelsdimension,所以空间维度上的插值变换 #是在每个通道维度上独立进行的。 #另外,对于计算机而言,所读取到的彩色图像就是H*W*3的矩阵而已,它本身是没有办法区分究竟是BGR格式还是RGB格式的
以上这篇python实现从高分辨图像上抠取图像块就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。