2012-06-22 2 views
0

это моя ссылка на изображение:Как получить измерение длины плеча, руки в java?

http://compsci.ca/v3/download.php?id=9165&sid=8b1ef1788c32286c495e956bc6cd2df3

я есть обнаружить белую строку на теле, и получить длину. моя проблема заключается в том, как обнаружить плечо, затем получить измерение плеча и длины или руки .. пожалуйста, помогите мне :(

это моя работа. Если есть какая-либо коррекция, сделайте это и предложите мне как улучшить свою программу ..

import java.io.*; 

import java.awt.*; 

import javax.imageio.ImageIO; 

import java.awt.image.BufferedImage; 

import javax.swing.*; 

import javax.swing.JOptionPane; 


public class GetPixelColor 
{ 
    private static int maxCnt; 

    public static void main(String args[]) throws IOException 
    { 

     File file= new File("image.jpg"); 
     BufferedImage image = ImageIO.read(file); 
     int array[][] = new int [300][400]; 


      for(int i=0; i<300; i++) 
      { 
       for(int j=0; j<400; j++) 
       { 
        // Getting pixel color by position x=j and y=j 
        int clr= image.getRGB(j,i); 
        int red = (clr & 0x00ff0000) >> 16; 
        int green = (clr & 0x0000ff00) >> 8; 
        int blue = clr & 0x000000ff; 

        //System.out.println(".................................."); 
        //System.out.println("Red Color value = "+ red); 
        //System.out.println("Green Color value = "+ green); 
        //System.out.println("Blue Color value = "+ blue); 
        //System.out.println(".................................."); 

        if((red >= 160 && red <= 200) && (green >= 160 && green <= 190) && (blue >= 160 && blue <= 180))//cari kaler 
        { 
         //if(red > 160 && green > 160 && blue > 180) 
         // System.out.print("{"+j+"||"+i+"[0]}"); 
          array[i][j] = 0; 
          System.out.print("0"); 
         } 
         else 
         { 
          array[i][j] = 1; 
          System.out.print("-"); 
         } 
       } 
       System.out.println(); 
      } 

      System.out.println(array[0].length); 
      System.out.println(array.length); 
      int x2 = 0; 
      int y2 = 0; 
      for (int i = (400-1); i >= 0; i--)// 
      { 
       for(int j = (300-1); j >= 0; j--) 
       { 
        System.out.print(array[j][i]); 
        if(array[j][i] == 0) 
        { 
         //System.out.print("position2 : x="+i+" y="+j); 
         x2 = i; 
         y2 = j; 
         i = -1; 
         break; 

        } 
       } 
       System.out.println(); 
      } 
      JOptionPane.showMessageDialog(null,"coordinate : \n" + "x : " + x2 +"\n y : "+ y2); 
      int x = 0; 
      int y = 0; 
      for (int i = 0; i <400; i++) 
      { 
       for(int j = 0; j < 300; j++) 
       { 
        System.out.print(array[j][i]); 
        if(array[j][i] == 0) 
        { 
         //System.out.print("position1 : x="+i+" y="+j); 
         x = i; 
         y = j; 
         i = 400; 
         break; 
        } 
       } 
       System.out.println(); 
      } 
      JOptionPane.showMessageDialog(null,"coordinate : \n" + "x : " +x+"\n y : "+y); 

      double m = 0.0; 

      m = Math.sqrt(Math.pow(y-y2,2) + Math.pow(x-x2,2)); 
      JOptionPane.showMessageDialog(null,"length of the string : "+m); 
      double ratio = 0; 
      ratio = m/10; 
      JOptionPane.showMessageDialog(null,"ratio per inch : " + ratio); 
     } 

    } 

ответ

0

Вы можете использовать аналогичный маркер на плече, как белая строка на передней панели может быть, в другом цвете. - это делает его легче отличить от белых маркеров в переднем Как только вы обнаружили маркер плеча, вам будет легко рассчитать длину (аналогично тому, что вы сделали для белой строки).

Смежные вопросы