Yolov5检测并生成文本及标签文件

检测目标文件夹

python detect.py --source **path/**/ --weights **.pt --img 640

生成文本文件

加 --save-txt 参数即可

python detect.py --source **path/**/ --weights **.pt --img 640 --save-txt

文本文件转成数组

function fnTxt2Arr($fn,$iW,$iH){
  $tStr = read2Str($fn); 
  $arr = explode("\r\n",$tStr);
  $arr = array_filter($arr);//清除空字符
  for($i=0;$i      $arrT = explode(" ",$arr[$i]);
     $tArr[$i]["labId"] = $arrT[0];//种类标签序号
     $tArr[$i]["xMax"] = ($arrT[1]*$iW*2 + $arrT[3]*$iW  )/2;
     $tArr[$i]["xMin"] = $arrT[1]*$iW*2 - $tArr[$i]["xMax"];
     $tArr[$i]["yMax"] = ($arrT[2]*$iH*2 + $arrT[4]*$iH  )/2;
     $tArr[$i]["yMin"] = $arrT[2]*$iH*2 - $tArr[$i]["yMax"];
  }
  return $tArr;
}   

返回种类标签,xmax,xmin,ymax,ymin的数组。

数组转成json字符串

function fnTxt2json($arr){//文本文件转成json
global $yEnArr, $arrImg, $arrColor;
   for($i=0;$i        $t1Arr[0]["x"] = $arr[$i]["xMin"];
       $t1Arr[0]["y"] = $arr[$i]["yMin"];
       $t1Arr[1]["x"] = $arr[$i]["xMax"];
       $t1Arr[1]["y"] = $arr[$i]["yMin"];
       $t1Arr[2]["x"] = $arr[$i]["xMax"];
       $t1Arr[2]["y"] = $arr[$i]["yMax"];
       $t1Arr[3]["x"] = $arr[$i]["xMin"];
       $t1Arr[3]["y"] = $arr[$i]["yMax"];
       $jArr[$i]["content"] = $t1Arr;
       $t2Arr["xMin"] = $arr[$i]["xMin"];
       $t2Arr["yMin"] = $arr[$i]["yMin"];
       $t2Arr["width"] = $arr[$i]["xMax"] - $arr[$i]["xMin"];
       $t2Arr["height"] = $arr[$i]["yMax"] - $arr[$i]["yMin"];
       $jArr[$i]["rectMask"] = $t2Arr;
       
       $t3Arr["labelName"] = trim($yEnArr[$arr[$i]["labId"]]);
       $tId = array_search($yEnArr[$arr[$i]["labId"]],$arrImg);
       $t3Arr["labelColor"] = $arrColor[$tId];
       $t3Arr["labelColorRGB"] = "undefined,undefined,undefined" ;
       $t3Arr["visibility"] = false; ;
       $jArr[$i]["labels"] = $t3Arr;
       
       $t4Arr["x"] = ($arr[$i]["xMin"] + $arr[$i]["xMax"])/2 ;
       $t4Arr["y"] = ($arr[$i]["yMin"] + $arr[$i]["yMax"])/2 ;
       $jArr[$i]["labelLocation"] = $t4Arr;
       $jArr[$i]["contentType"] = "rect";
   }  
  return json_encode($jArr);
}  

数组生成xml文件

function fn2xml($arr,$imgFile,$iW,$iH,$fn,$arrCh,$arrEn){
   global $yEnArr;
   $arrsT = explode("/",$imgFile); 
   $jpgName = str_replace(".txt",".jpg",$arrsT[count($arrsT)-1]);
   $tStr =     "\r\n";
   $tStr .= "    VOC2007\r\n";
   $tStr .= "    ".$jpgName."\r\n";
   $tStr .= "    ".$jpgName."\r\n";
   $tStr .= "    \r\n";
   $tStr .= "        Unknown\r\n";
   $tStr .= "    \r\n";
   $tStr .= "    \r\n";
   $tStr .= "        ".$iW."\r\n";
   $tStr .= "        ".$iH."\r\n";
   $tStr .= "        3\r\n";
   $tStr .= "    
\r\n";
   $tStr .= "    0\r\n";
   for($i=0;$i      $tStr .= "    \r\n";
     $tStr .= "        ".trim($yEnArr[$arr[$i]["labId"]])."\r\n";
     $tStr .= "        Unspecified\r\n";
     $tStr .= "        0\r\n";//是否分割 isP
     $tStr .= "        0\r\n";//困难字段 isD
     $tStr .= "        \r\n";
     $tStr .= "            ".round($arr[$i]["xMin"],1)."\r\n";//舍去取整
     $tStr .= "            ".round($arr[$i]["yMin"],1)."\r\n";
     $tStr .= "            ".round($arr[$i]["xMax"],1)."\r\n";//进1取整
     $tStr .= "            ".round($arr[$i]["yMax"],1)."\r\n";
     $tStr .= "        
\r\n";
     $tStr .= "    
\r\n";       
     $labStr .= $yEnArr[$arr[$i]["labId"]].",";//标签的昆虫名称
   }
   $tStr .=     "
";
   $xmlFName= str_replace(".txt",".xml",$imgFile);
   $fp = fopen("$xmlFName", "w"); //打开文件指针,创建文件
   if(!is_writable($xmlFName) ){ die("文件:" .$xmlFName. "不可写,请检查!" );}
   fwrite($fp,$tStr);
   fclose($fp); 
   varTxt($imgFile,$labStr,$fn);//昆虫标签写入指定文本文件
}

Notepad++比较文本文件异同

compare插件

需github

C:\Windows\System32\drivers\etc下修改

HOSTS文件

ping github.com

加入IP地址

array_search()注意空字符

array_search(trim($str),$arr)

你可能感兴趣的:(yolov5,python,php,python,php)