Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   [решено] подсчитать площадь произвольной фигуры (http://forum.oszone.net/showthread.php?t=104451)

Surround 06-04-2008 10:30 775909

подсчитать площадь произвольной фигуры
 
подскажите пожалуйста, в помощью чего можно посчитать площадь произвольной криволинейной фигуры, скажем, изображенной на фотке?

mrcnn 06-04-2008 11:03 775918

Определенные интегралы

Coutty 06-04-2008 11:28 775931

Могу предложить такой вариант:
1. В фотошопе обводим фигуру чёрным цветом (и делаем заливку, разумеется).
2. Сохраняем этот чёрный контур в монохромном gif-файле.
3. Используем скрипт:
HTML код:

<html><head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>Площадь</title>
<script>
if (window.CanvasRenderingContext2D) {
var ctx;
function init() {
  ctx = canv.getContext('2d');
  if(!canv.getContext) return;
var img = new Image();
img.onload = function() {
canv.width = img.width;
canv.height = img.height;
  ctx.drawImage(this, 0, 0, img.width, img.height);
black = 0;
white = 0;
  for (w = 0; w < img.width; w++) {
    for (h = 0; h < img.width; h++)
      {
      if (ctx.getImageData(w,h,1,1).data[0] == 0)
        black++;
      else
        white++;
      }
  }
alert("Чёрных точек: " + black + "; других: " + white + "; всего: " + (black+white));
}
img.src = "1.gif";
}
}
</script>

</head> <body>
<center>Скрипт считает количество чёрных точек на изображении. Поместите изображение 1.gif в папку со скриптом и нажмите кнопку "Подсчитать". На подсчёт может уйти много времени в зависимости от размеров изображения и производительности компьютера.
<br />
<input type="button" onClick="init();" value="Подсчитать" /><br /><canvas id="canv" width="1" height="1">
Для работы скрипта требуется Firefox 2.
</canvas><br />
</body></html>

Сохраните это в виде html-страницы. Файл 1.gif с фигурой кладём рядышком. Кликаем по кнопочке на странице. Оно считает и выводит количество чёрных и белых пикселей.
Работает только в Firefox'е 2 и, быть может, в Safari, но я не уверен.

Наверняка есть способ считать напрямую по картинке, но мне известен только этот:)

Surround 06-04-2008 12:51 775961

mrcnn, если б были известны уравнения кривых...
Coutty, попробуем...

Surround 06-04-2008 13:38 775976

Coutty, да, как под ие там, оперу никак... ток конкретный файрфокс ((

Coutty 06-04-2008 14:18 775999

Surround, Firefox поддерживает canvas.getImageData(), Опера и IE - нет. С этим и ограничение.
Можно сделать на другом языке. Пожалуйста - ваше право. Я всего лишь концепт предложил. Который, кстати, работает в FF ;)

lxa85 06-04-2008 19:36 776129

Я думал предстоит считать площадь поверхности. Например стены, стола, двери автомобиля, или иной объемной плоскости. (к словам не докапываться, вы поняли о чем речь) А фигура оказалось плоской...

Surround 07-04-2008 21:25 776960

решил проблему следующим образом:
PHP код:

<?php  $file "1.gif";  
$im = @imagecreatefromgif($file);  
$w=imagesx($im); 
$h=imagesy($im);  
$s=0;  
for(
$i=1;$i<=$h;$i++)  {      
   for(
$j=1;$j<=$w;$j++) {
      if (
imagecolorat($im$j$i)==0$s++;      
   } 
}
print 
"number of black px: ";  print $s;  ?>

а пиксель - это 0.0009см2

dascon 13-11-2008 10:34 951399

Цитата:

а пиксель - это 0.0009см2
это смотря какое разрешение (dpi)


Время: 23:07.

Время: 23:07.
© OSzone.net 2001-