我通過C#中的網絡攝像頭捕獲了幾張圖像。我想對這些圖像做一些處理。我想從不是黑色的圖像中刪除像素。替換圖像中的特定顏色像素
請告訴我如何刪除不是黑色的像素或區域,並將其替換爲白色。
例子:
而且我希望把它轉換喜歡:
我通過C#中的網絡攝像頭捕獲了幾張圖像。我想對這些圖像做一些處理。我想從不是黑色的圖像中刪除像素。替換圖像中的特定顏色像素
請告訴我如何刪除不是黑色的像素或區域,並將其替換爲白色。
例子:
而且我希望把它轉換喜歡:
最簡單的方法可能是遍歷每個像素並驗證它是否處於「可接受」的顏色範圍內。
例如:
var YourImage = (Bitmap)Image.FromFile("LicensePlate.png");
for (var x = 0; x < YourImage.Width; x++)
for (var y = 0; y < YourImage.Height; y++) {
var pixel = YourImage.GetPixel(x, y);
if (pixel.r > 200 && pixel.g > 200 && pixel.b > 200)
YourImage.SetPixel(x, y, Color.White);
}
上面的代碼將替換不是黑色與白色像素的區域。
這將是slooooooow。 GetPixel/SetPixel方法非常慢。 – paghdv
嘗試(在.NET中的OpenCV)使用Emgu CV,特別是看到License Plate Recognition in CSharp例。
對於OpenCV EmguCV封裝器是一個很好的開始,牌照應該讓你通過大多數情況。如果你想要更強大的東西(改變照明),我會建議你添加狼的二值化。我不知道它是否在EmguCV中實現,但有C++代碼可用於http://liris.cnrs.fr/christian.wolf/software/binarize/ ,這將很容易適應使用EmguCV的c#。
但邊界也是黑色的,你將如何在圖像上分離黑色實體的*語義*。我會建議看看:http://opencv.org/和相對.net包裝上網 – Tigran