Advertisement
Pug_coder

ARUCO_MARKERS

May 26th, 2021
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.68 KB | None | 0 0
  1. #include <opencv2/highgui.hpp>
  2. #include <opencv2/aruco.hpp>
  3. #include <opencv2/imgproc/imgproc.hpp>
  4. #include <iostream>
  5.  
  6. std::string dumpCornersAsJSON(std::vector<std::vector<cv::Point2f>> markers_corners, std::vector<int> ids) {
  7.     std::string json("[");
  8.     for (int i = 0; i < markers_corners.size(); i++) {
  9.         auto corners = markers_corners[i];
  10.         int marker_id = ids[i];
  11.  
  12.         json += cv::format("{\"%d\":[", marker_id);
  13.         for (int j = 0; j < corners.size() - 1; j++) {
  14.             json += cv::format("{\"x\":%.0f,\"y\":%.0f}, ", corners[j].x, corners[j].y);
  15.         }
  16.         json += cv::format("{\"x\":%.0f,\"y\":%.0f}", corners[corners.size() - 1].x, corners[corners.size() - 1].y);
  17.         json += "]}";
  18.     }
  19.     json += "]";
  20.     return json;
  21. }
  22.  
  23. int main() {
  24.     cv::VideoCapture capture(0);
  25.     auto dictionary = cv::aruco::getPredefinedDictionary(cv::aruco::DICT_6X6_250);
  26.     auto parameters = cv::aruco::DetectorParameters::create();
  27.     while (capture.grab()) {
  28.         cv::Mat input_image;
  29.         capture.retrieve(input_image);
  30.         std::vector<int> markers_ids;
  31.         std::vector<std::vector<cv::Point2f>> markers_corners, rejected_markers;
  32.         cv::aruco::detectMarkers(input_image, dictionary, markers_corners, markers_ids, parameters, rejected_markers);
  33.         cv::aruco::drawDetectedMarkers(input_image, markers_corners, markers_ids);
  34.         for (int i = 0; i < markers_corners.size(); i++) {
  35.             std::cout << "Corners: " << dumpCornersAsJSON(markers_corners, markers_ids) << std::endl;
  36.         }
  37.  
  38.         imshow("markers", input_image);
  39.         if (cv::waitKey(10) == 27) break;
  40.     }
  41.     capture.release();
  42.     return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement