回答
我想你的意思是如果接近圖像邊界的像素的顏色是白色的。 否則你的配方太模糊。
您可以檢查這一點,周圍的邊框的像素是白色的(你可以考慮首先做一些平滑淬火噪聲)
你可以讓我知道如何做到這一點? – thatsmeuc
你不能只是讀邊界像素,將給予圖標的誤導結果在邊界附近有一個盒子,例如當答案應該是白色時,LoveFilm徽標將返回紅色。計數最重複的顏色也會引起誤解,例如在MSDN徽標的情況下,背景是透明的(邊框),但最重複的顏色可能是深藍色(我沒有計數)。
也許藍色是背景色,而你的大腦只是不能解釋正確的圖像:)(+1) –
jpeg不能透明,即使它不是白色,也是透明的:) –
Aye,JPEGs沒有alpha信息,它們只是圖像的例子,儘管大多數人會知道(或者很容易找到)這些圖像支持了我的觀點,即一條規則可能不適合所有場景。 – joocer
你應該嘗試使用與getPixel功能,你可以在這裏找到一些文檔:
GetPixel Function
你只需要選擇的座標,以獲得一個RGB值。
然後,您可以嘗試使用盡可能多的座標,因爲您希望具有很多價值。
只要檢查你的值,以知道它是否是白色的。
嘗試這樣:
public bool IsBackgroundWhite(Bitmap theImageBitmap)
{
Bitmap bmp = new Bitmap(theImageBitmap);
int weight = 0;
for (int x=0;x<bmp.Width;x++) {
weight += GetWeight(bmp.GetPixel(x,0));
weight += GetWeight(bmp.GetPixel(x,bmp.Height-1));
}
for (int y=0;y<bmp.Height;y++) {
weight += GetWeight(bmp.GetPixel(0,y));
weight += GetWeight(bmp.GetPixel(bmp.Width-1,y));
}
if (weight > 255)
return true;
return false;
}
private int GetWeight(Color c)
{
if (c.R >= 200 && c.B >= 200 && C.G >= 200)
{
int n1 = 255 - c.R;
int n2 = 255 - c.G;
int n3 = 255 - c.B;
return (int)((n1+n2+n3)/3)
}
}
- 1. CSS:背景顏色的背景圖像
- 2. 檢查背景顏色或圖像
- 3. 背景圖像覆蓋背景顏色
- 4. 背景顏色在背景圖像
- 5. PHP背景圖像顏色
- 6. Sikuli,Java&Selenium - 如何檢測圖像背景顏色變化?
- 7. 更新圖像的顏色或圖像的背景顏色
- 8. 如何用背景圖像爲背景顏色重新添加背景顏色?
- 9. JQuery SlideUp - 背景顏色背後圖像
- 10. 檢查的背景顏色
- 11. 在圖像上的CSS顏色背景
- 12. 背景顏色覆蓋我的圖像
- 13. 的UIView更改背景顏色圖像
- 14. 更改TTThumbsViewController的背景顏色/圖像
- 15. 顯示圖像的背景顏色 - CSS
- 16. 更改Images.xcassets圖像的背景顏色?
- 17. css透明圖像的背景顏色
- 18. 背景顏色背景圖像之間的圖層文本
- 19. 測試ActionBar背景顏色
- 20. 與懸停的背景顏色的背景圖像
- 21. 背景顏色圖像分割 - OpenCV Android
- 22. html背景圖像和顏色
- 23. CSS - 圖像到背景顏色
- 24. 透明圖像 - 背景顏色
- 25. 使圖像比背景顏色更高
- 26. 背景圖像和顏色一起
- 27. UWP:設置背景顏色和圖像?
- 28. CSS背景顏色與圖像
- 29. CSS背景顏色和PNG圖像
- 30. 背景圖像顏色變化ie8
可以讀取圖像中的每個像素,並檢查其顏色更重複......不是最好的,但可能解決您的問題 – ivowiblo
同上@ivowiblo,雖然它是可能只是爲了讀取邊緣像素。 –