CLIENT* createClient(){ CLIENT *cl; cl = clnt_create(HOST, RPC_FUNCTIONS, RPC_FUNC_VERS, "tcp"); if(cl == NULL) { redirectError("Error creating RPC Client"); exit(1); } return cl; }
int addArticle(CLIENT *cl, char* author, char* title, char* file_path) { paper_information *in; int_out *out; struct fileParams *file; in = (struct paper_information*) malloc(sizeof(struct paper_information)); in->author = (author); in->title = (title); file = readFile(file_path); //Set all the values properly in->paper.paper_data_val = file->buffer; in->paper.paper_data_len = file->length; out = add_paper_1(in, cl); if (out==NULL) { redirectError("Add Article Error"); return -1; } return (int) *out; }
bool findCirclesGridAB( cv::InputArray _image, cv::Size patternSize, cv::OutputArray _centers, int flags, const cv::Ptr<cv::FeatureDetector> &blobDetector ) { bool isAsymmetricGrid = (flags & cv::CALIB_CB_ASYMMETRIC_GRID) ? true : false; bool isSymmetricGrid = (flags & cv::CALIB_CB_SYMMETRIC_GRID ) ? true : false; CV_Assert(isAsymmetricGrid ^ isSymmetricGrid); cv::Mat image = _image.getMat(); std::vector<cv::Point2f> centers; std::vector<cv::KeyPoint> keypoints; blobDetector->detect(image, keypoints); std::vector<cv::Point2f> points; for (size_t i = 0; i < keypoints.size(); i++) { points.push_back (keypoints[i].pt); } if(flags & cv::CALIB_CB_CLUSTERING) { CirclesGridClusterFinder circlesGridClusterFinder(isAsymmetricGrid); circlesGridClusterFinder.findGrid(points, patternSize, centers); cv::Mat(centers).copyTo(_centers); return !centers.empty(); } CirclesGridFinderParameters parameters; parameters.vertexPenalty = -0.6f; parameters.vertexGain = 1; parameters.existingVertexGain = 10000; parameters.edgeGain = 1; parameters.edgePenalty = -0.6f; if(flags & cv::CALIB_CB_ASYMMETRIC_GRID) parameters.gridType = CirclesGridFinderParameters::ASYMMETRIC_GRID; if(flags & cv::CALIB_CB_SYMMETRIC_GRID) parameters.gridType = CirclesGridFinderParameters::SYMMETRIC_GRID; const int attempts = 2; const size_t minHomographyPoints = 4; cv::Mat H; for (int i = 0; i < attempts; i++) { centers.clear(); CirclesGridFinder boxFinder(patternSize, points, parameters); bool isFound = false; //#define BE_QUIET 1 #if BE_QUIET void* oldCbkData; //cv::ErrorCallback oldCbk = redirectError(quiet_error, 0, &oldCbkData); #endif try { isFound = boxFinder.findHoles(); } catch (cv::Exception) { } #if BE_QUIET redirectError(oldCbk, oldCbkData); #endif if (isFound) { switch(parameters.gridType) { case CirclesGridFinderParameters::SYMMETRIC_GRID: boxFinder.getHoles(centers); break; case CirclesGridFinderParameters::ASYMMETRIC_GRID: boxFinder.getAsymmetricHoles(centers); break; default: CV_Error(CV_StsBadArg, "Unkown pattern type"); } if (i != 0) { cv::Mat orgPointsMat; cv::transform(centers, orgPointsMat, H.inv()); cv::convertPointsFromHomogeneous(orgPointsMat, centers); } cv::Mat(centers).copyTo(_centers); return true; } boxFinder.getHoles(centers); if (i != attempts - 1) { if (centers.size() < minHomographyPoints) break; H = CirclesGridFinder::rectifyGrid(boxFinder.getDetectedGridSize(), centers, points, points); } } cv::Mat(centers).copyTo(_centers); return false; }
int main(int argc, char **argv) { CLIENT *cl; CGI_varlist *varlist; int value; const char *author = "author"; const char *title = "title"; const char *file = "file"; const char* authorTmp; const char* titleTmp; CGI_value* fileValue; char* authorVal; char* titleVal; char* fileVal; if ((varlist = CGI_get_all("/tmp/cgi-upload-XXXXXX")) == NULL || varlist == 0) { redirectError("No CGI data received"); return 0; } if((varlist = CGI_get_post(varlist, "/tmp/cgi-upload-XXXXXX")) == NULL || varlist == 0) { redirectError("No CGI post data received"); return 0; } if(((authorTmp = CGI_lookup(varlist, author)) == NULL) || strlen(authorTmp) == 0) { redirectError("Did not receive Author data"); return 0; } if(((titleTmp = CGI_lookup(varlist, title)) == NULL) || strlen(titleTmp) == 0) { redirectError("Did not receive Title data "); return 0; } if(((fileValue = CGI_lookup_all(varlist, file)) == NULL)) { redirectError("Did not receive File data"); return 0; } if(fileValue == 0 || fileValue[1] == 0){ redirectError("No file was uploaded"); return 0; } authorVal = (char*) malloc(strlen(authorTmp)*sizeof(char)); titleVal = (char*) malloc(strlen(titleTmp)*sizeof(char)); fileVal = (char*) malloc(strlen(fileValue[0])*sizeof(char)); strcpy(authorVal, authorTmp); strcpy(titleVal, titleTmp); strcpy(fileVal, fileValue[0]); CGI_free_varlist(varlist); cl = createClient(); value = addArticle(cl, authorVal, titleVal, fileVal); clnt_destroy(cl); if(value < 0){ redirectError("Add Article Error"); } redirectSuccess(value); return value; }