1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include "net.h" #include "mat.h" #include "cpu.h" #include <opencv2/opencv.hpp> #include <sys/time.h>
int main(int argc, char* argv[]) { std::string img_file = "/Users/luohanjie/Workspace/Vision/depth_estimation/MiDaS/input/squirrel_iphone_sample3.png"; std::string param_file = "/Users/luohanjie/Workspace/Vision/my_slam/data/models/midas_v21_small-int8.param"; std::string model_file = "/Users/luohanjie/Workspace/Vision/my_slam/data/models/midas_v21_small-int8.bin"; int target_size = 256; float scale = 0.33333f;
cv::Mat img = cv::imread(img_file); cv::resize(img, img, cv::Size(), scale, scale);
int img_width = img.cols; int img_height = img.rows;
ncnn::Net net; ncnn::set_cpu_powersave(0); ncnn::set_omp_num_threads(ncnn::get_cpu_count()); net.opt = ncnn::Option(); net.opt.use_vulkan_compute = false; net.opt.num_threads = ncnn::get_cpu_count();
net.load_param(param_file.c_str()); net.load_model(model_file.c_str());
ncnn::Mat img_in = ncnn::Mat::from_pixels_resize(img.data, ncnn::Mat::PIXEL_BGR2RGB, img_width, img_height, target_size, target_size); const float mean_vals[3] = {123.675f, 116.28f, 103.53f}; const float norm_vals[3] = {0.01712475383f, 0.0175070028f, 0.01742919389f}; img_in.substract_mean_normalize(mean_vals, norm_vals);
ncnn::Extractor ex = net.create_extractor(); ex.set_light_mode(true); ncnn::Mat img_out; ex.input("input.1", img_in); ex.extract("649", img_out); ncnn::resize_bilinear(img_out, img_out, img_width, img_height);
cv::Mat cv_out(img_out.h, img_out.w, CV_8UC1); img_out.to_pixels(cv_out.data, ncnn::Mat::PIXEL_GRAY);
cv::imshow("cv_out", cv_out); cv::waitKey(0); return 0; }
|