“`html
Swift 2025 程式教學:CIColorKernel 顏色過濾
過濾顏色
在本教學中,我們將學習如何使用 CIColorKernel
來過濾顏色。這個方法可以用於綠幕效果或其他需要顏色處理的應用。
以下代碼將圖片中 RGB 值小於 0.2 的顏色改為黑色,其餘顏色改為白色。
kernel vec4 thresholdFilter(__sample textureColor) {
if (textureColor.r < 0.2 && textureColor.g < 0.2 && textureColor.b < 0.2) {
textureColor.rgb = vec3(0.0, 0.0, 0.0);
} else {
textureColor.rgb = vec3(1.0, 1.0, 1.0);
}
return textureColor;
}
擴展 UIImage 的顏色過濾功能
我們將為 UIImage
添加一個擴展,實現自定義的顏色過濾功能。
extension UIImage {
/// 應用自定義的顏色過濾
func applyCustomCIFilter() -> UIImage {
guard let ciInputImage = CIImage(image: self) else { return UIImage() }
let replaceGrayKernel = CIColorKernel(source:
"""
kernel vec4 thresholdFilter(__sample textureColor) {
if (textureColor.r < 0.2 && textureColor.g < 0.2 && textureColor.b < 0.2) {
textureColor.rgb = vec3(0.0, 0.0, 0.0);
} else {
textureColor.rgb = vec3(1.0, 1.0, 1.0);
}
return textureColor;
}
"""
)
let ciImageFiltered = replaceGrayKernel?.apply(
extent: ciInputImage.extent,
arguments: [ciInputImage])
return UIImage(ciImage: ciImageFiltered!)
}
}
證件過濾的應用案例
這種顏色過濾技術特別適合於自動識別(OCR)系統,能夠更好地處理和識別文本和圖案。
其他應用與最佳實踐
除了用於綠幕和OCR,這種顏色過濾技術還可以應用於創建特殊效果的圖像處理。您可以根據需要調整閾值以實現不同的過濾效果。
Q&A(常見問題解答)
Q1: CIColorKernel 的性能如何?
A1: CIColorKernel 在處理大量圖像時表現良好,但性能會根據圖像大小和過濾的複雜度而異。建議在實際使用中進行測試以優化性能。
Q2: 如何調整過濾效果?
A2: 您可以通過修改 thresholdFilter
函數中的閾值(如0.2)來調整過濾效果,從而改變哪些顏色被轉換為黑色或白色。
Q3: 這個技術可以用於 iOS 應用嗎?
A3: 是的,這個技術完全可以用於 iOS 應用,您只需將上述代碼整合到您的 iOS 項目中即可。
“`
—