예제 #1
0
int Preprocessor::resize(){
    string src = para.res_src;
    string dst = para.res_dst;
    string in_pre = para.res_in_pre;
    string in_post = para.res_in_post;
    string out_pre = para.res_out_pre;
    string out_post = para.res_out_post;
    unsigned int serial_beg = para.serial_beg;
    unsigned int serial_end = para.serial_end, serial_bits = para.serial_bits, thread_num = para.thread_num;
    double res_fx = para.res_fx;
    double res_fy = para.res_fy;
    string sys_del = para.sys_del;
#pragma omp parallel for num_threads(thread_num) 
    for(int serial_num = serial_beg; serial_num <= int(serial_end); ++ serial_num){
        string serial_str(""), in_path(""), out_path("");
        stringstream str_buffer;
        cv::Mat in_image, out_image;
        str_buffer<<setw(serial_bits)<<setfill('0')<<serial_num;
        str_buffer>>serial_str;
        str_buffer.clear();
        cout<<serial_str<<endl;
        in_path = src + sys_del + in_pre + serial_str + in_post;
        //cout<<in_path<<endl;
        out_path = dst + sys_del + out_pre + serial_str + out_post;
        //cout<<in_path<<endl;
        in_image = cv::imread(in_path, CV_LOAD_IMAGE_UNCHANGED);
        cv::resize(in_image, out_image, cv::Size(), res_fx, res_fy, cv::INTER_LINEAR);
        cv::imwrite(out_path, out_image);
    }
    return 0;
}
예제 #2
0
int Preprocessor::project(){
    string src = para.pro_src, dst = para.pro_dst, in_pre = para.pro_in_pre, in_post = para.pro_in_post, out_pre = para.pro_out_pre, out_post = para.pro_out_post;
    string sys_del = para.sys_del;
    unsigned int thick_num = para.pro_thick, image_depth = para.image_depth, serial_beg = para.serial_beg, serial_end = para.serial_end, serial_bits = para.serial_bits;
    stringstream str_buffer;    
    string serial_str("");
    cv::Mat tmp_image, out_image;
    string this_image_name(""), out_image_name("");
    unsigned int pro_count = 0;
    for(unsigned int serial_num = serial_beg; serial_num <= serial_end; ++serial_num){
        str_buffer<<setw(serial_bits)<<setfill('0')<<serial_num;
        str_buffer>>serial_str;
        str_buffer.clear();
        cout<<serial_str<<endl;
        this_image_name = src + sys_del + in_pre + serial_str + in_post;
        out_image_name = dst + sys_del + out_pre + serial_str + out_post;
        tmp_image = cv::imread(this_image_name, CV_LOAD_IMAGE_UNCHANGED);
        if(pro_count == 0){
            if(image_depth == 8){
                out_image = cv::Mat::zeros(tmp_image.rows, tmp_image.cols, CV_8UC1);
            }else if(image_depth == 16){
                out_image = cv::Mat::zeros(tmp_image.rows, tmp_image.cols, CV_16UC1);
            }        
        }
        out_image = cv::max(out_image, tmp_image);
        ++ pro_count;
        if(pro_count == thick_num || serial_num == serial_end){
            cv::imwrite(out_image_name, out_image);
            pro_count = 0;    
        }
    }
    return 0;   
}
/*
 * Class:     vision_thegraffter_VisionWrapper
 * Method:    pushModel
 * Signature: ([BI)V
 */
JNIEXPORT void JNICALL Java_vision_thegraffter_VisionWrapper_pushModel
  (JNIEnv *env, jobject, jbyteArray jni_model_bytes, jint model_id)  {
  LOGD("--------------- ADD MODEL ---------------");
  // Convert jbyteArray to string
  int len = env->GetArrayLength(jni_model_bytes);
  unsigned char *buf = new unsigned char[len];
  env->GetByteArrayRegion(jni_model_bytes, 0, len, reinterpret_cast<jbyte*>(buf));
  std::string serial_str(reinterpret_cast<char const*>(buf), len);

  // Restore data
  wrapper.deserializeModel(serial_str);
  graffter::ObjModelPtr objMod = wrapper.getModel();
  objMod->changeId(model_id);
  wrapper.addModel(objMod);
}
예제 #4
0
int Preprocessor::tar(){
    string src = para.tar_src;
    string dst = para.tar_dst;
    string tar_pre = para.tar_file_pre;
    string tar_post = para.tar_file_post;
    string serial_str(""), tar_file_path("");
    string sys_del = para.sys_del;
    unsigned int serial_beg = para.serial_beg, serial_end = para.serial_end, serial_bits = para.serial_bits, thread_num = para.thread_num;
#pragma omp parallel for num_threads(thread_num) 
    for(int serial_num = int(serial_beg); serial_num <= int(serial_end); ++ serial_num){
        cout<<serial_num<<"  "<<omp_get_thread_num()<<endl;
        stringstream str_buffer;
        str_buffer<<setw(serial_bits)<<setfill('0')<<serial_num;
        str_buffer>>serial_str;
        str_buffer.clear();
        tar_file_path = src + sys_del + tar_pre + serial_str + tar_post;
        Tar tar1(tar_file_path);
        tar1.untar(dst);                
    }
    return 0;
}