Spaces:
Running
on
Zero
Running
on
Zero
| int main() { | |
| std::string img_path = "../../../datasets/sacre_coeur/mapping_rot/02928139_3448003521_rot45.jpg"; | |
| cv::Mat original_img = cv::imread(img_path, cv::IMREAD_GRAYSCALE); | |
| if (original_img.empty()) { | |
| throw std::runtime_error("Failed to decode image"); | |
| } | |
| // Convert the image to Base64 | |
| std::string base64_img = image_to_base64(original_img); | |
| // Convert the Base64 back to an image | |
| cv::Mat decoded_img = base64_to_image(base64_img); | |
| cv::imwrite("decoded_image.jpg", decoded_img); | |
| cv::imwrite("original_img.jpg", original_img); | |
| // The images should be identical | |
| if (cv::countNonZero(original_img != decoded_img) != 0) { | |
| std::cerr << "The images are not identical" << std::endl; | |
| return -1; | |
| } else { | |
| std::cout << "The images are identical!" << std::endl; | |
| } | |
| // construct params | |
| APIParams params{ | |
| .data = {base64_img}, | |
| .max_keypoints = {100, 100}, | |
| .timestamps = {"0", "1"}, | |
| .grayscale = {0}, | |
| .image_hw = {{480, 640}, {240, 320}}, | |
| .feature_type = 0, | |
| .rotates = {0.0f, 0.0f}, | |
| .scales = {1.0f, 1.0f}, | |
| .reference_points = { | |
| {1.23e+2f, 1.2e+1f}, | |
| {5.0e-1f, 3.0e-1f}, | |
| {2.3e+2f, 2.2e+1f}, | |
| {6.0e-1f, 4.0e-1f} | |
| }, | |
| .binarize = {1} | |
| }; | |
| KeyPointResults kpts_results; | |
| // Convert the parameters to JSON | |
| Json::Value jsonData = paramsToJson(params); | |
| std::string url = "http://127.0.0.1:8001/v1/extract"; | |
| Json::StreamWriterBuilder writer; | |
| std::string output = Json::writeString(writer, jsonData); | |
| CURL* curl; | |
| CURLcode res; | |
| std::string readBuffer; | |
| curl_global_init(CURL_GLOBAL_DEFAULT); | |
| curl = curl_easy_init(); | |
| if (curl) { | |
| struct curl_slist* hs = NULL; | |
| hs = curl_slist_append(hs, "Content-Type: application/json"); | |
| curl_easy_setopt(curl, CURLOPT_HTTPHEADER, hs); | |
| curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); | |
| curl_easy_setopt(curl, CURLOPT_POSTFIELDS, output.c_str()); | |
| curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); | |
| curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); | |
| res = curl_easy_perform(curl); | |
| if (res != CURLE_OK) | |
| fprintf(stderr, "curl_easy_perform() failed: %s\n", | |
| curl_easy_strerror(res)); | |
| else { | |
| // std::cout << "Response from server: " << readBuffer << std::endl; | |
| kpts_results = decode_response(readBuffer); | |
| } | |
| curl_easy_cleanup(curl); | |
| } | |
| curl_global_cleanup(); | |
| return 0; | |
| } | |