php图片识别

/**
 * 电话号码识别.
 * @author by zsc for 2010.03.24
 */
 
class gjPhone{
  protected $imgPath;//图片路径    
  protected $imgSize;//图片大小
  protected $hecData;//分离后数组
  protected $horData;//横向整理的数据
  protected $verData;//纵向整理的数据
 
  function __construct($path){
      $this->imgPath = $path;
  }
/**
 * 颜色分离转换...
 *
 * @param unknown_type $path
 * @return unknown
 */
  public function getHec()
    {   
        $size = getimagesize($this->imgPath);
        $res = imagecreatefrompng($this->imgPath);        
        for($i=0; $i < $size[1]; ++$i)
        {   
            for($j=0; $j < $size[0]; ++$j)
            {
                $rgb = imagecolorat($res,$j,$i);
                $rgbarray = imagecolorsforindex($res, $rgb);               
                if($rgbarray['red'] < 125 || $rgbarray['green']<125
                || $rgbarray['blue'] < 125)
                {
                    $data[$i][$j]=1;
                }else{
                    $data[$i][$j]=0;
                }
            }
        }
        $this->imgSize = $size;
        $this->hecData = $data;
    }
/**
 * 颜色分离后的数据横向整理...
 *
 * @return unknown
 */
public function magHorData()
{   
 
    $data = $this->hecData;
    $size = $this->imgSize;    
    $z = 0;
    for($i=0; $i<$size[1]; ++$i)   
    { 
        if(in_array('1',$data[$i])){
            $z++;
            for($j=0; $j<$size[0]; ++$j)
            {   
                if($data[$i][$j] == '1'){                    
                   $newdata[$z][$j] = 1;
                }else{
                   $newdata[$z][$j] = 0; 
                }
            }           
       }    
 
    }
    return $this->horData = $newdata;
} 
/**
 * 整理纵向数据...
 *
 * @return unknown
 */
public function magVerData($newdata){
    for ($i=0;$i<132;++$i){
        for($j=1;$j<13;++$j){
            $ndata[$i][$j] = $newdata[$j][$i];
        }
    }
 
 
    $sum = count($ndata);
    $c = 0;
    for ($a=0;$a<$sum;$a++){
        $value = $ndata[$a];
        if(in_array(1,$value)){            
              $ndatas[$c] = $value;
              $c++;
        }elseif(is_array($ndatas)){
          $b = $c-1;
          if(in_array(1,$ndatas[$b])){
              $ndatas[$c] = $value;
              $c++;
          }
        }         
    }
 
    return $this->verData = $ndatas;
 
}
/**
 * 显示电话号码...
 *
 * @return unknown
 */
public function showPhone($ndatas){
    $phone = null;
    $d = 0;
    foreach ($ndatas as $key => $val){
        if(in_array(1,$val)){
            foreach ($val as $k => $v){
               $ndArr[$d].=$v;
            }
        }        
        if(!in_array(1,$val)){
            $d++;
        }
    }
   foreach ($ndArr as $key01 =>$val01){
        $phone .= $this->initData($val01);
   }   
   return $phone;
}
/**
 * 分离显示...
 *
 * @param unknown_type $dataArr
 */
function drawWH($dataArr){
    if(is_array($dataArr)){
        foreach ($dataArr as $key => $val){
            foreach ($val as $k => $v){
                if($v == 0){
                    $c .= "<font color='#FFFFFF'>".$v."</font>";
                }else{
                  $c .= $v;
                }
            }
            $c .= "<br/>";
        }    
    }
    echo $c;
}
    /**
     * 初始数据...
     *
     * @param unknown_type $numStr
     * @return unknown
     */
    public function initData($numStr){
        $result = null;
        $data = array(
            0=>'000011111000001111111110011000000011110000000001110000000001110000000001110000000001011000000011011100000111000111111100000001110000',
            1=>'011000000000011000000000111111111111111111111111',
            2=>'001000000011011000000111110000001101110000011001110000011001110000110001111001100001011111100001000110000001',
            3=>'001000000010011000000011110000000001110000000001110000110001110000110001011001110011011111011111000110001100',
            4=>'000000001100000000111100000001111100000011101100000111001100001100001100011000001100111111111111111111111111000000001100000000000100',
            5=>'111111000001111111000001110001000001110001000001110001100001110001100001110000110011110000111111000000001100',
            6=>'000011111000001111111110011000110011110001100001110001100001110001100001110001100001010001110011010000111111000000001100',
            7=>'110000000000110000000111110000111111110001110000110111000000111100000000111000000000111000000000',
            8=>'000100011110011111111111110011100001110001100001110001100001110001100001110011100001011111111111000100011110',
            9=>'001111000000011111100001110000110001110000110001110000110001110000110001011000100001011111100111000111111110000001110000',
        );
        foreach ($data as $key => $val){
           similar_text($numStr,$val,$pre);
           if($pre>95){//相似度95%以上
               $result = $key;
               break;
           }
        }
        return $result;
    }
}
 
$imgPath = "http://image.58.com/showphone.aspx?t=v55&v=66E4A4C51145047C25B95A16435D988F6";
$gjPhone = new gjPhone($imgPath);
//进行颜色分离
$gjPhone->getHec();
//画出横向数据
$horData = $gjPhone->magHorData();
echo "===============横向数据==============<br/><br/><br/>";
$gjPhone->drawWH($horData);
//画出纵向数据
$verData = $gjPhone->magVerData($horData);
echo "<br/><br/><br/>===============纵向数据==============<br/><br/><br/>";
$gjPhone->drawWH($verData);
 
//输出电话
$phone = $gjPhone->showPhone($verData);
echo "<br/><br/><br/>===============电话==============<br/><br/><br/>".$phone;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的。 如果要使用 zphp 识别图片,你需要先安装 GD 库。可以使用以下命令安装: ``` sudo apt-get install php-gd ``` 然后,你就可以使用 PHP 的 `getimagesize` 函数来获取图片的大小信息,以及 `imagecreatefromstring` 函数来将图片的二进制数据转换为一个图像资源。 ```php $data = file_get_contents('image.jpg'); $size = getimagesize('image.jpg'); $image = imagecreatefromstring($data); ``` 之后,你就可以使用 PHP 的图像处理函数对图像进行操作了。 希望这能帮到你。 ### 回答2: ZPHP是一种高级编程语言,常用于开发Web应用程序。如果我们想要使用ZPHP识别图片,我们可以借助一些图像处理库和算法。 首先,我们需要选择一个可以处理图像的库,例如OpenCV或PIL(Python Imaging Library)。这些库提供了各种功能,包括图像加载、图像处理、特征提取等。 其次,我们需要了解如何使用这些库来进行图像识别。一种常见的方法是使用机器学习算法,例如卷积神经网络(CNN)。我们可以通过训练一个CNN模型来对目标图片进行分类,从而实现识别。 在ZPHP中,我们可以使用这些库的API接口来调用相关函数和算法。我们需要将图像加载到程序中,并将其转换为适合处理的格式。然后,我们可以调用识别函数,将图像输入模型中,获得识别结果。 最后,我们需要对识别结果进行处理和展示。可以将结果进行格式化,例如将识别结果显示在网页上。可以根据识别结果进行后续操作,例如自动分类、存储等。 总之,使用ZPHP进行图像识别需要选择适合的图像处理库和算法,并了解其使用方法和接口。通过调用相关函数和算法,可以实现图像的加载、处理和识别,并对识别结果进行处理和展示。 ### 回答3: 使用zphp识别图片的代码可以通过以下几个步骤完成。 首先,需要安装好zphp的环境,并导入相关的库文件。可以使用Composer来安装zphp及其相关依赖包。 接下来,需要引入zphp的命名空间,并实例化一个Zphp对象。例如: use Zphp\Zphp; $zphp = new Zphp(); 然后,我们可以通过调用Zphp对象的recognition方法来进行图片识别。该方法需要传入待识别图片的路径参数,并返回识别结果。例如: $imagePath = 'path/to/image.jpg'; $result = $zphp->recognition($imagePath); 最后,我们可以将识别结果进行处理或输出。根据具体需求,可以选择将识别结果保存到数据库、打印输出到终端或者展示在网页上等。 综上所述,使用zphp识别图片的代码包括初始化Zphp对象、调用recognition方法进行图片识别以及处理、输出识别结果的步骤。具体的代码可以根据需求进行定制和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值