static int readNetworkStatsDetail(JNIEnv* env, jclass clazz, jobject stats, jstring path, jint limitUid) { ScopedUtfChars path8(env, path); if (path8.c_str() == NULL) { return -1; } FILE *fp = fopen(path8.c_str(), "r"); if (fp == NULL) { return -1; } Vector<stats_line> lines; int lastIdx = 1; char buffer[384]; while (fgets(buffer, sizeof(buffer), fp) != NULL) { stats_line s; int64_t rawTag; if (sscanf(buffer, "%d %31s 0x%llx %u %u %llu %llu %llu %llu", &s.idx, s.iface, &rawTag, &s.uid, &s.set, &s.rxBytes, &s.rxPackets, &s.txBytes, &s.txPackets) == 9) { if (s.idx != lastIdx + 1) { ALOGE("inconsistent idx=%d after lastIdx=%d", s.idx, lastIdx); return -1; } lastIdx = s.idx; s.tag = rawTag >> 32; lines.push_back(s); } } if (fclose(fp) != 0) { return -1; } int size = lines.size(); ScopedLocalRef<jobjectArray> iface(env, env->NewObjectArray(size, gStringClass, NULL)); if (iface.get() == NULL) return -1; ScopedIntArrayRW uid(env, env->NewIntArray(size)); if (uid.get() == NULL) return -1; ScopedIntArrayRW set(env, env->NewIntArray(size)); if (set.get() == NULL) return -1; ScopedIntArrayRW tag(env, env->NewIntArray(size)); if (tag.get() == NULL) return -1; ScopedLongArrayRW rxBytes(env, env->NewLongArray(size)); if (rxBytes.get() == NULL) return -1; ScopedLongArrayRW rxPackets(env, env->NewLongArray(size)); if (rxPackets.get() == NULL) return -1; ScopedLongArrayRW txBytes(env, env->NewLongArray(size)); if (txBytes.get() == NULL) return -1; ScopedLongArrayRW txPackets(env, env->NewLongArray(size)); if (txPackets.get() == NULL) return -1; ScopedLongArrayRW operations(env, env->NewLongArray(size)); if (operations.get() == NULL) return -1; for (int i = 0; i < size; i++) { ScopedLocalRef<jstring> ifaceString(env, env->NewStringUTF(lines[i].iface)); env->SetObjectArrayElement(iface.get(), i, ifaceString.get()); uid[i] = lines[i].uid; set[i] = lines[i].set; tag[i] = lines[i].tag; rxBytes[i] = lines[i].rxBytes; rxPackets[i] = lines[i].rxPackets; txBytes[i] = lines[i].txBytes; txPackets[i] = lines[i].txPackets; } env->SetIntField(stats, gNetworkStatsClassInfo.size, size); env->SetObjectField(stats, gNetworkStatsClassInfo.iface, iface.get()); env->SetObjectField(stats, gNetworkStatsClassInfo.uid, uid.getJavaArray()); env->SetObjectField(stats, gNetworkStatsClassInfo.set, set.getJavaArray()); env->SetObjectField(stats, gNetworkStatsClassInfo.tag, tag.getJavaArray()); env->SetObjectField(stats, gNetworkStatsClassInfo.rxBytes, rxBytes.getJavaArray()); env->SetObjectField(stats, gNetworkStatsClassInfo.rxPackets, rxPackets.getJavaArray()); env->SetObjectField(stats, gNetworkStatsClassInfo.txBytes, txBytes.getJavaArray()); env->SetObjectField(stats, gNetworkStatsClassInfo.txPackets, txPackets.getJavaArray()); env->SetObjectField(stats, gNetworkStatsClassInfo.operations, operations.getJavaArray()); return 0; }
bool SparseRec2View::save() { if(!_onlymatch) { //save reconstructed points string path1(dir+imgname1+string("-")+imgname2+string(".X")); std::ofstream o1(path1.c_str()); o1 << "VERTEX " << (int)results.size() << endl; for(int i=0; i<(int)results.size(); ++i) { o1<<results[i].x<<" "<<results[i].y<<" "<<results[i].z<<endl; } o1.close(); TagI("save reconstructed points to\n %s\n",path1.c_str()); //save cam par string path7(imgpath1+string(".par")); std::ofstream o7(path7.c_str()); o7.setf(std::ios::scientific); o7 << "K(alphaX alphaY u0 v0)=" <<endl; o7 << K[0] << " " << K[4] << " " << K[2] << " " << K[5] << endl; o7 << "R=" << endl; o7 << "1 0 0\n0 1 0\n0 0 1" <<endl; o7 << "T=" << endl; o7 << "0 0 0" << endl; o7.close(); TagI("save camera 1's parameters to\n %s\n",path7.c_str()); string path8(imgpath2+string(".par")); std::ofstream o8(path8.c_str()); o8.setf(std::ios::scientific); o8 << "K(alphaX alphaY u0 v0)=" <<endl; o8 << K[0] <<" "<< K[4] <<" "<< K[2] <<" "<< K[5] << endl; o8 << "R=" << endl; for(int i=0; i<3; ++i) { for(int j=0; j<3; ++j) { o8 << R[i*3+j] << " "; } o8 << endl; } o8 << "T=" << endl; o8 << t[0] <<" "<< t[1] <<" "<< t[2] << endl; o8.close(); TagI("save camera 2's parameters to\n %s\n",path8.c_str()); } double fontScale=0.5; CvPoint text_origin; //save matched point pairs string path2(dir+imgname1+string("-")+imgname2+string(".p1p2")); std::ofstream o2(path2.c_str()); //out.setf(std::ios::scientific); int cnt = 0; for(int i=0; i<(int)p1.size(); ++i) { if(!inliers[i]) continue; o2 << p1[i].x <<" "<< p1[i].y <<" "<< p2[i].x <<" "<< p2[i].y <<endl; char tmp[256]; sprintf(tmp, "%d", cnt++); text_origin.x = (int)p1[i].x+5; text_origin.y = (int)p1[i].y-5; putText(img1, tmp, text_origin, CV_FONT_HERSHEY_PLAIN, fontScale, CV_BLACK); text_origin.x = (int)p2[i].x+5; text_origin.y = (int)p2[i].y-5; putText(img2, tmp, text_origin, CV_FONT_HERSHEY_PLAIN, fontScale, CV_BLACK); } o2.close(); TagI("save matched point pairs to\n %s\n",path2.c_str()); //save images string path3(imgpath1+string("-detect.jpg")); string path4(imgpath2+string("-detect.jpg")); string path5(dir+imgname1+string("-")+imgname2+string(".jpg")); if(!img1.empty()) cv::imwrite(path3, img1); else { TagE("no valid image to save!\n"); return false; } if(!img2.empty()) cv::imwrite(path4, img2); if(!combined.empty()) cv::imwrite(path5, combined); TagI("save surfed image 1 to\n %s\n",path3.c_str()); TagI("save surfed image 2 to\n %s\n",path4.c_str()); TagI("save combined image to\n %s\n",path5.c_str()); //save F string path6(dir+imgname1+string("-")+imgname2+string(".fmatrix")); std::ofstream o6(path6.c_str()); o6 << helper::PrintMat<>(3,3,F); o6.close(); TagI("save fundamental matrix to\n %s\n",path6.c_str()); return true; }