检测目标文件夹
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<count($arr);$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<count($arr);$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 = "<annotation>\r\n";
$tStr .= " <folder>VOC2007</folder>\r\n";
$tStr .= " <filename>".$jpgName."</filename>\r\n";
$tStr .= " <path>".$jpgName."</path>\r\n";
$tStr .= " <source>\r\n";
$tStr .= " <database>Unknown</database>\r\n";
$tStr .= " </source>\r\n";
$tStr .= " <size>\r\n";
$tStr .= " <width>".$iW."</width>\r\n";
$tStr .= " <height>".$iH."</height>\r\n";
$tStr .= " <depth>3</depth>\r\n";
$tStr .= " </size>\r\n";
$tStr .= " <segmented>0</segmented>\r\n";
for($i=0;$i<count($arr);$i++){
$tStr .= " <object>\r\n";
$tStr .= " <name>".trim($yEnArr[$arr[$i]["labId"]])."</name>\r\n";
$tStr .= " <pose>Unspecified</pose>\r\n";
$tStr .= " <truncated>0</truncated>\r\n";//是否分割 isP
$tStr .= " <difficult>0</difficult>\r\n";//困难字段 isD
$tStr .= " <bndbox>\r\n";
$tStr .= " <xmin>".round($arr[$i]["xMin"],1)."</xmin>\r\n";//舍去取整
$tStr .= " <ymin>".round($arr[$i]["yMin"],1)."</ymin>\r\n";
$tStr .= " <xmax>".round($arr[$i]["xMax"],1)."</xmax>\r\n";//进1取整
$tStr .= " <ymax>".round($arr[$i]["yMax"],1)."</ymax>\r\n";
$tStr .= " </bndbox>\r\n";
$tStr .= " </object>\r\n";
$labStr .= $yEnArr[$arr[$i]["labId"]].",";//标签的昆虫名称
}
$tStr .= "</annotation>";
$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)