Мне нужно изменить размер изображения с помощью билинейной фильтрации, но я не уверен, как это можно сделать в Swift. В Python PIL, а также Opencv позволяет нам выбирать метод интерполяции при изменении размера (https://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.imresize.html). Я надеялся имитировать процесс в iOS для модели coreML
Я искал методы изменения размера, но это то, что я смог найти в блоге:
extension UIImage {
func resizeUI(size:CGSize) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(size, true, self.scale)
self.drawInRect(CGRect(origin: CGPointZero, size: size))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resizedImage
}
Однако, похоже, вы не можете выбирать методы интерполяции.
Спасибо.
EDIT:
Я нашел imageBySamplingLinear
, но этот метод не позволяет изменить размер изображения с помощью метода интерполяции. Он просто берет изображение текущего размера и интерполирует его?
https://developer.apple.com/documentation/coreimage/ciimage/2867346-imagebysamplinglinear?language=objc
В то время как реальный алгоритм изменяет размер изображения, используя интерполяцию:
https://rosettacode.org/wiki/Bilinear_interpolation#Python