переход с c ++ opencv на c # emgu cv?

Я новичок в C # Я хочу перевести этот код с C ++ на C #. Программа состоит в том, чтобы определить, является ли изображение белым или нет, поэтому я пытаюсь получить значение всего пикселя и сравнить его с 0.

     int image_blanche(char * str, double prctage){
Mat img=imread(str);
int compt=0;
for(int i=0;i<img.rows;i++){
for(int j=0;j<img.cols;j++){
if (img.at<uchar>(i,j)==0){
compt=compt+1;
}
}
}

if (compt< img.rows*img.cols*prctage)
{
return 1;
}
else if (compt> img.rows*img.cols*prctage){
return 0;
}
}

я делаю так, но это все еще не работает

      int Image_blanche(String str,int prctge)
{
Image<Bgr, Byte> img = new Image<Bgr, Byte>(str);
int compt = 0;
int i;
int j;
for (  i = 0; i < img.Width; i++)
{
for ( j = 0; j < img.Height; j++)
{
Bgr color = img[i, j];
if ((Math.Abs(color.Green - 0) < 0) &&(Math.Abs(color.Blue - 0) < 0)&&(Math.Abs(color.Red - 0) < 0))
{
compt = compt + 1;
}
}
}

return compt <= img.Width*img.Height*prctge ? 1 : 0;
}

Любая помощь, пожалуйста.

0

Решение

Вы пытались открыть изображение как растровое изображение?

Bitmap img = new Bitmap(file path);

Тогда у вас есть метод

Color c = img.GetPixel(x,y)

Хорошо, если изображение чисто белое, то каждый пиксель должен быть равен 255 (для 8-битного изображения в оттенках серого) или [255 255 255] (для 8-битного цветного изображения). Таким образом, вы можете циклически проходить по строкам и столбцам изображения и подсчитывать значения в каждом пикселе. Получив общее значение, сравните его с общим количеством белых изображений того же размера, то есть ширина * высота * 255 для изображения в оттенках серого или ширина * высота * 255 * 3 для цветного изображения. Вы также можете получить процент белизны на вашем тестовом изображении, разделив счет на общее количество для белого изображения. то есть test_img_total / width * height * 255 * 3

0

Другие решения


По вопросам рекламы [email protected]