我通过应用CIFilters将彩色的NSImage转换为仅黑白(不是灰度)的NSImage。但是,由于原始图像中的边缘模糊,导致生成的图像失真。
我是新手,如果有人可以帮助我了解我要去哪里,或者从彩色图像中获得清晰的黑白图像的最佳方法是什么,那将是很棒的事情
我尝试应用CICategorySharpen过滤器,但返回的图像为nil,Xcode中止。当我排除CICategorySharpen时,转换后的图像会失真。到目前为止,Apple文档并不是很有用。我在网上看到了一些位图图像处理方法,似乎不太有效。
//url of NSImage
let ciImage = CIImage(contentsOf: url)!
// Sharpen the image - currently returns nil and Xcode aborts
let sharpImage = CIFilter(name: "CICategorySharpen", parameters: [kCIInputImageKey: ciImage] )?.outputImage
// Convert image into grayscale
let grayImage = CIFilter(name: "CIPhotoEffectNoir", parameters: [kCIInputImageKey: sharpImage])?.outputImage
// Convert into black and white
let bAndWParams: [String: Any] = [kCIInputImageKey: grayImage,
kCIInputContrastKey: 50.0,
kCIInputBrightnessKey: 10.0]
let blackAndWhiteImage = (CIFilter(name: "CIColorControls", parameters: bAndWParams)?.outputImage)!
//Convert back into NSImage
let rep = NSCIImageRep(ciImage: blackAndWhiteImage)
let nsImage = NSImage(size: rep.size)
nsImage.addRepresentation(rep)
预期:无论使用原始图像的质量如何,应用CI滤镜后都可获得清晰,清晰的黑白图像。
实际: 1.如果没有CICategorySharpen,则转换后的黑白图像会失真。 2.当我添加CICategorySharpen时,Xcode中止。