CenterCrop图像裁剪原理
CenterCrop模式解決的就是:
? 我們按照Image與ImageView的寬高比差值,分兩種情況進(jìn)行討論。
? 假設(shè)原始圖片高h(yuǎn),寬w , Imageview的高y,寬x ,比較兩者高寬比。裁剪出的圖稱為Image1:
? 1、 當(dāng) y / x - h / w > 0 時(shí)
? 說(shuō)明Imageview的高寬比大于圖片的高寬比,如圖所示:
左圖實(shí)線標(biāo)示的是圖片Image的高和寬,右圖是Imageview。 我們需要從Image的中間按照比例y/x裁剪出一幅圖Image1來(lái),如圖中虛線所示。
? 顯而易見(jiàn),Image1的寬度是w1,高度是h 。
? Image1的高寬比必須和Imageview的高寬比相同,即 y / x = h / w1 , 計(jì)算出 w1 = (h * x )/ y
?
?2、當(dāng) y / x - h / w <= 0時(shí)
? 說(shuō)明Imageview的高寬比小于圖片的高寬比,如圖所示:
顯而易見(jiàn),Image1高度為h1, 寬度為w ,依據(jù) y / x = h1 / w , 計(jì)算出 h1 = (w * y) / x
pytorch官方文檔說(shuō)明:
?
現(xiàn)在通過(guò)一個(gè)案例進(jìn)行介紹:
代碼:
import torchvision.transforms import PIL.Image as Image import torchvision.transforms#讀入圖片 image=Image.open("/home/alisa/PycharmProjects/attack/target_attack/1/train_target.png") print(image.size, image.format, image.mode)#生成一個(gè)CenterCrop類的對(duì)象,用來(lái)將圖片從中心裁剪成224*224 crop_obj = torchvision.transforms.CenterCrop((224, 224)) image = crop_obj(image) #將裁剪之后的圖片保存下來(lái) image.save("/home/alisa/PycharmProjects/attack/target_attack/1/train_target2.png", format='PNG')效果:
總結(jié)
以上是生活随笔為你收集整理的CenterCrop图像裁剪原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 面试官问:跨域请求如何携带cookie?
- 下一篇: 如何使用 Node 后端创建 React