我是iphone軟件開發的初學者。 我開發了皮膚癌的應用程序,我想從UIImage計算或計算紅色像素,這是iphone camera捕獲的。可以從UIImage計數紅色像素嗎?我如何計算使用objective-C在iphone中的UIImage的紅色像素?
3
A
回答
8
由於這是一個幾乎每週都會被問到的問題,因此我決定做一個小例子項目來說明如何做到這一點。你可以看一下代碼爲:
http://github.com/st3fan/iphone-experiments/tree/master/Miscellaneous/PixelAccess/
最重要的一點是下面的代碼,這需要一個UIImage
然後計算純紅色的像素數。這是一個例子,你可以使用它,修改它自己的算法:
/**
* Structure to keep one pixel in RRRRRRRRGGGGGGGGBBBBBBBBAAAAAAAA format
*/
struct pixel {
unsigned char r, g, b, a;
};
/**
* Process the image and return the number of pure red pixels in it.
*/
- (NSUInteger) processImage: (UIImage*) image
{
NSUInteger numberOfRedPixels = 0;
// Allocate a buffer big enough to hold all the pixels
struct pixel* pixels = (struct pixel*) calloc(1, image.size.width * image.size.height * sizeof(struct pixel));
if (pixels != nil)
{
// Create a new bitmap
CGContextRef context = CGBitmapContextCreate(
(void*) pixels,
image.size.width,
image.size.height,
8,
image.size.width * 4,
CGImageGetColorSpace(image.CGImage),
kCGImageAlphaPremultipliedLast
);
if (context != NULL)
{
// Draw the image in the bitmap
CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, image.size.width, image.size.height), image.CGImage);
// Now that we have the image drawn in our own buffer, we can loop over the pixels to
// process it. This simple case simply counts all pixels that have a pure red component.
// There are probably more efficient and interesting ways to do this. But the important
// part is that the pixels buffer can be read directly.
NSUInteger numberOfPixels = image.size.width * image.size.height;
while (numberOfPixels > 0) {
if (pixels->r == 255) {
numberOfRedPixels++;
}
pixels++;
numberOfPixels--;
}
CGContextRelease(context);
}
free(pixels);
}
return numberOfRedPixels;
}
如何調用一個簡單的例子:
- (IBAction) processImage
{
NSUInteger numberOfRedPixels = [self processImage: [UIImage imageNamed: @"DutchFlag.png"]];
label_.text = [NSString stringWithFormat: @"There are %d red pixels in the image", numberOfRedPixels];
}
在Github上的示例項目包含一個完整的工作示例。
相關問題
- 1. 如何使用紅寶石來計算jpeg中白色像素的分數?
- 2. 計算給定圖像中的紅色像素
- 3. iPhone:如何更改UIImage特定像素的顏色?
- 4. UIImage/CGImage改變我的像素顏色
- 5. ObjectiveC中的計算交點
- 6. 如何使用GLSL計算指定彩色像素的數量?
- 7. 如何使用像素緩衝區在UIImage上應用色相?
- 8. 如何計算MS Access VBA中圖像的黑色像素?
- 9. 如何在swift中找到UIImage中單個像素的顏色
- 10. GDI +:如何用紅色像素替換黑色像素?
- 11. 如何在uiimage中更改單個像素的顏色
- 12. 如何計算opencv中每個blob中的白色像素?
- 13. 在計算圖像中的白色像素的錯誤matlab
- 14. 如何將低於圖像中的黑色像素更改爲使用OpenCV的庫與C紅色像素++
- 15. Matlab圖像 - 如何計算白色像素的數量
- 16. 如何用iPhone計算我的速度?
- 17. 如何使用Python計算圖像上的彩色像素區域?
- 18. 使用PIL/Pillow過濾圖像中的紅色像素
- 19. 我如何更改iphone sdk中的uiimage顏色xcode
- 20. 如何用MATLAB計算二值圖像中的白色像素數量?
- 21. 如何使用BigInterger在我的代碼中計算素數?
- 22. 如何讓像素符合位圖UIImage中的指定顏色?
- 23. iphone:如何從圖像中移除紅色? (RGB顏色)
- 24. 獲取UIImage的像素顏色
- 25. 更改UIImage的像素顏色值
- 26. 僅檢測Java中的紅色像素
- 27. 如何修改iPhone上的UIImage的像素數據?
- 28. 如何將UIImage轉換爲iphone上的8位彩色圖像?
- 29. windows phone 8.1顯示PreviewFrame並計算每幀的紅色像素的平均值
- 30. 如何讓iPhone中的膚色彩色像素?
看到這個問題:http://stackoverflow.com/questions/448125/how-to-get-pixel-data-from-a-uiimage-cocoa-touch-or-cgimage-core-graphics – 2010-02-26 16:39:14
define「red 「#FF0000'純紅色,但'#FF0001'呢?那是紅色的?那麼'#FF0100'呢?或'#FE0000'?或者'#FF1C41'怎麼樣?這仍然是微紅的... – 2010-11-28 23:15:32
@戴夫德隆,感謝您給我的建議,但我找到了它的巨大解決方案。 – Tirth 2010-11-29 04:39:21