/* * Lion Constructor */ Lion::Lion(HashFunction* hash, StreamCipher* cipher, size_t bs) : m_block_size(std::max<size_t>(2*hash->output_length() + 1, bs)), m_hash(hash), m_cipher(cipher) { if(2*left_size() + 1 > m_block_size) throw Invalid_Argument(name() + ": Chosen block size is too small"); if(!m_cipher->valid_keylength(left_size())) throw Invalid_Argument(name() + ": This stream/hash combo is invalid"); m_key1.resize(left_size()); m_key2.resize(left_size()); }
void calibrate_stereo(const observation_pts_v_t& left_points, const observation_pts_v_t& right_points, const object_pts_v_t& object_points, const cv::Size& image_size, PinholeCameraModel& left, PinholeCameraModel& right) { PinholeCameraModel camera; StereoCameraModel scam; std::vector<cv::Mat> rvecs, tvecs; cv::Mat K_left, K_right, D_right, D_left, R, T, E, F; int flags =cv::CALIB_FIX_PRINCIPAL_POINT| cv::CALIB_FIX_ASPECT_RATIO /*| cv::CALIB_ZERO_TANGENT_DIST|cv::CALIB_FIX_PRINCIPAL_POINT| cv::CALIB_FIX_K1 | cv::CALIB_FIX_K2 |cv::CALIB_FIX_K3*/; cv::Size left_size(image_size), right_size(image_size); double left_rms = cv::calibrateCamera(object_points, left_points, left_size, K_left, D_left, rvecs, tvecs, flags); double right_rms = cv::calibrateCamera(object_points, right_points, right_size, K_right, D_right, rvecs, tvecs, flags); double stereo_rms = cv::stereoCalibrate(object_points, left_points, right_points, K_left, D_left, K_right, D_right, left_size, R, T, E, F, cv::TermCriteria(cv::TermCriteria::COUNT + cv::TermCriteria::EPS, 500, 1e-6), cv::CALIB_FIX_INTRINSIC | flags); std::cout << "image size:" << image_size.width << ":" << image_size.height << std::endl; std::cout << "R:" << R << std::endl; std::cout << "T:" << T << std::endl; std::cout << "D:" << D_left << std::endl; std::cout << "left rms:" << left_rms << " right rms:" << right_rms << " stereo rms:" << stereo_rms << std::endl; left.setParams(left_size, K_left, D_left, cv::Mat_<double>::eye(3, 3), K_left); right.setParams(right_size, K_right, D_right, cv::Mat_<double>::eye(3, 3), K_right); left.writeCalibration("left.yml"); right.writeCalibration("right.yml"); Eigen::Matrix3d Re; Eigen::Vector3d Te; Eigen::Matrix4d Pe = Eigen::Matrix4d::Identity(); cv2eigen(R, Re); cv2eigen(T.t(), Te); std::cout << Te << std::endl; Pe.block(0, 0, 3, 3) = Re; Pe.block(0, 3, 3, 1) = Te; Pose P; P.transform.matrix() = Pe; scam.setParams(left, right, P); scam.writeCalibration("stereo.yml"); }
int char_buffer(char *txt, t_buffer *buff) { int len; size_t size; size_t i; if (txt == NULL || (len = strlen(txt)) > BUFF_LEN) return (-1); size = left_size(buff); if (size < strlen(txt)) return (-1); i = 0; while (i != strlen(txt)) { ((char *)buff->buff)[buff->e] = txt[i]; buff->e++; if (buff->e == P_MAX + 1) buff->e = 0; i++; } return (0); }
PerfPanel::PerfPanel(wxWindow *frame) : wxPanel(frame) { #define IMG(fn) wxBitmap(wxString("./Images/")+wxString(fn)+wxString(".bmp"),wxBITMAP_TYPE_ANY) int panel_border=10; UpdateFS_src(); wxSizer* sz = new wxBoxSizer(wxVERTICAL); sz->AddSpacer(panel_border); wxSize left_size(100,30); wxSizer* sz1 = new wxBoxSizer(wxHORIZONTAL); sz1->AddSpacer(panel_border); wxButton*btn_up = new wxBitmapButton(this,5,IMG("small_add")); btn_up->SetToolTip(MY_TXT("Add selected rendering method","Добавить выбранный метод рендеринга")); btn_up->Show(0); m_box_rmode = new wxChoice(this,3); for(int i=0;i<CT::iso->rendering_methods.size();i++) { m_box_rmode->Append(CT::iso->rendering_methods[i]->caption); } m_box_rmode->Select(0); //sz->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Rendering method","Метод рендеринга"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT); sz1->Add(m_box_rmode,1,wxGROW); sz1->Add(btn_up,0,wxSTRETCH_NOT); sz1->AddSpacer(panel_border); sz->Add(sz1,0,wxEXPAND); sz->AddSpacer(panel_border); //sz->Add(m_box_rmode,0,wxEXPAND); // sz1 = new wxBoxSizer(wxHORIZONTAL); sz1->AddSpacer(panel_border); m_box_rtype = new wxChoice(this,2); m_box_rtype->Append(MY_TXT("Permanent","Постоянный")); m_box_rtype->Append(MY_TXT("When something has changed","При изменениях")); m_box_rtype->Append(MY_TXT("Frames accumulation","Накопление кадров")); //m_box_rtype->Append(MY_TXT("Use LoD when changing","Использовать LoD при изменении")); m_box_rtype->Select(CT::RenderingType); sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Rendering type","Тип рендеринга"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT); sz1->Add(m_box_rtype,1,wxGROW); sz1->AddSpacer(panel_border); sz->Add(sz1,0,wxEXPAND); // sz1 = new wxBoxSizer(wxHORIZONTAL); sz1->AddSpacer(panel_border); m_slider_z[0] = new wxSlider(this,1,100,1,500); sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Rendering quality","Качество рендеринга"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT); sz1->Add(m_slider_z[0],1,wxGROW); sz1->AddSpacer(panel_border); sz->Add(sz1,0,wxEXPAND); sz1 = new wxBoxSizer(wxHORIZONTAL); sz1->AddSpacer(panel_border); m_slider_z[2] = new wxSlider(this,8,100,0,400); sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Interaction quality","???"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT); sz1->Add(m_slider_z[2],1,wxGROW); sz1->AddSpacer(panel_border); sz->Add(sz1,0,wxEXPAND); sz1 = new wxBoxSizer(wxHORIZONTAL); sz1->AddSpacer(panel_border); m_slider_z[1] = new wxSlider(this,6,50,0,100); sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Fast resolution","Быстрое разрешение"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT); sz1->Add(m_slider_z[1],1,wxGROW); sz1->AddSpacer(panel_border); sz->Add(sz1,0,wxEXPAND); sz1 = new wxBoxSizer(wxHORIZONTAL); sz1->AddSpacer(panel_border); m_box_shading_type = new wxChoice(this,6); m_box_shading_type->Append(MY_TXT("No","Нет")); m_box_shading_type->Append(MY_TXT("Phong","Фонг")); sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Shading model","Модель затенения"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT); sz1->Add(m_box_shading_type,1,wxGROW); sz1->AddSpacer(panel_border); sz->Add(sz1,0,wxEXPAND); /* m_box_shading_type = new wxChoice(this,6); m_box_shading_type->Append(MY_TXT("No","Нет")); m_box_shading_type->Append(MY_TXT("Phong","Фонг")); sz->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Shading model","Модель затенения"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT); sz->Add(m_box_shading_type,1,wxGROW); */ sz1 = new wxBoxSizer(wxHORIZONTAL); sz1->AddSpacer(panel_border); m_box_tf = new wxChoice(this,7); m_box_tf->Append(MY_TXT("1D Gray","1D Серая")); m_box_tf->Append(MY_TXT("1D Colored","1D цветная")); sz1->Add(new wxStaticText(this,wxID_ANY,MY_TXT("Transfer function","Раскраска"),wxDefaultPosition,left_size),0,wxSTRETCH_NOT); sz1->Add(m_box_tf,1,wxGROW); sz1->AddSpacer(panel_border); sz->Add(sz1,0,wxEXPAND); // m_check_box_autofps = new wxCheckBox(this,4,MY_TXT("Permanent rendering","Постоянный рендеринг"),ster+wxPoint(0,100)); m_check_use_accel_struct = new wxCheckBox(this,4,MY_TXT("Use acceleration structure","Использовать ускоряющую структуру")); m_check_use_accel_struct->Show(0); m_check_use_cubic_filt = new wxCheckBox(this,4,MY_TXT("Tricubic filtering","Трикубическая фильтрация")); m_check_bicubic_filtering = new wxCheckBox(this,4,MY_TXT("Bicubic filtering","Бикубическая фильтрация")); sz->Add(m_check_use_accel_struct,0,wxSTRETCH_NOT); sz1 = new wxBoxSizer(wxHORIZONTAL); sz1->AddSpacer(panel_border); sz1->Add(m_check_use_cubic_filt,0,wxSTRETCH_NOT); sz1->Add(m_check_bicubic_filtering,0,wxSTRETCH_NOT); sz1->AddSpacer(panel_border); sz->Add(sz1,0,wxEXPAND); SetSizer(sz); }