2017-02-23 36 views
0

У меня есть UIImageView в моем проекте Xcode. Я пытаюсь найти способ, которым я могу обнаружить НЕКОТОРЫЕ цвета (например, некоторые оттенки красного) на изображении. Кажется, я не могу найти способ сделать это. Кто-нибудь знает, как это можно достичь?Поиск определенного значения цвета в UIImage

Я видел различные способы, как найти «средний цвет» на фотографии. Мне интересно, есть ли способ конкретно «обнаружить» определенный цвет, который может быть в изображении.

Например, на этом изображении есть способ, которым я могу обнаружить, что на фотографии есть красный цвет. Blue and Red Rectangles

Благодаря

+0

Вы действительно не дали достаточно подробно. Например, какой код вы пробовали? Больше, что * конкретно * вам нужно? Вы просите «очистить» изображение и получить «средний» цвет? Или над определенным CGRect? Или я должен спрашивать «что такое красное»? Я еще не вижу причины, чтобы отметить это «слишком неопределенным», но @ Pickle2113, может ** вы ** видите, насколько плохо (до сих пор) вы задали свой вопрос? – dfd

+0

Вам нужно будет пройти через каждый пиксель на изображении и сравнить его с цветом, который вы ищете. Существует не простой способ сделать это с UIImage, но попробуйте здесь http://stackoverflow.com/questions/40158320/swift-3-get-color-of-pixel-in-uiimage-better-uiimageview –

+0

Это делает по крайней мере, немного больше смысла? Если не скажите мне, и я попытаюсь снова добавить дополнительную информацию. Сожалею. Я определенно новичок здесь, и я просто ищу какую-то помощь. – Pickle2113

ответ

0

Попробуйте

расширение UIImage { функ getPixelColor (поз: CGPoint) -> UIColor {

 let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage)) 
     let data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData) 

     let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4 

     let r = CGFloat(data[pixelInfo])/CGFloat(255.0) 
     let g = CGFloat(data[pixelInfo+1])/CGFloat(255.0) 
     let b = CGFloat(data[pixelInfo+2])/CGFloat(255.0) 
     let a = CGFloat(data[pixelInfo+3])/CGFloat(255.0) 

     return UIColor(red: r, green: g, blue: b, alpha: a) 
    } 

}