ArUco Module에서 생성한 마커의 ID 획득
11061 단어 VisualStudio2017OpenCVArUcoWindows10
개요
OpenCV의 Contrib에 있는 ArUco Module에서 생성한 마커의 ID를 콘솔에 내 보았습니다. 마커를 생성한 후 해당 마커 이미지를 웹캠에서 가져오고 화면에 표시된 마커의 ID를 콘솔에 출력했습니다. 다음 절차는 마커 생성에서 ID 획득 프로그램과 실행을 보여줍니다. Visual studio에서 ArUco Module을 사용할 수 있도록 하는 순서는 참고 URL을 나타내므로, 그 순서대로 진행하면 사용할 수 있게 된다고 생각합니다.
실행 환경
다음은 실행 환경을 보여줍니다.
소프트와 하드
버전
Visual Studio
2017
OpneCV
4.0.0
OpenCVContrib
4.0.0
Visual Studio에서 ArUco Module을 사용할 수 있도록 하는 단계는 다음 참조 URL을 매우 이해하기 쉬웠습니다.
다음은 실행 환경을 보여줍니다.
소프트와 하드
버전
Visual Studio
2017
OpneCV
4.0.0
OpenCVContrib
4.0.0
Visual Studio에서 ArUco Module을 사용할 수 있도록 하는 단계는 다음 참조 URL을 매우 이해하기 쉬웠습니다.
아래에 표시된 거친 흐름은 다음과 같습니다.
마커 생성
ArUco Module의 마커 생성에 관해서는, 다음의 github에 알기 쉽게 써 있는 프로그램을 실행하는 것으로, 생성할 수 있습니다. 또, 사용하고 있는 함수의 내용도 간단히 걸려 있기 때문에, 스스로 조금 조금 괴롭힐 수 있다고 생각합니다.
마커 ID 취득 프로그램
다음에 작성한 마커 ID 취득 프로그램을 나타냅니다. 카메라는 USB 카메라를 사용했습니다.
get_markers_id.cpp#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/aruco.hpp"
// Get MarkersID
void ShowMarkerIdsFunction(cv::OutputArray in) {
std::vector<cv::Mat> marker_ids;
in.getMatVector(marker_ids);
std::cout << "Marker IDs : "<< std::endl;
for (auto marker_ids : marker_ids) {
std::cout << marker_ids << std::endl;
}
}
int main(int argh, char* argv[])
{
// Create Marker Dictionary, Type of marker : 7X7,1000
const cv::aruco::PREDEFINED_DICTIONARY_NAME dictionary_name = cv::aruco::DICT_7X7_1000;
cv::Ptr<cv::aruco::Dictionary> dictionary = cv::aruco::getPredefinedDictionary(dictionary_name);
std::vector<int> marker_ids;
std::vector<std::vector<cv::Point2f>> marker_corners;
int sum_ids = 0;
cv::Mat web_camera_frame;
cv::VideoCapture cap(1);
// Confirm web camera connection
if (!cap.isOpened())
{
printf("web camera : Bad Connection\n");
return -1;
}
// Recognition MarkersID with ArUco
while (cap.read(web_camera_frame))
{
// Detect markers
cv::Ptr<cv::aruco::DetectorParameters> parameters = cv::aruco::DetectorParameters::create();
cv::aruco::detectMarkers(web_camera_frame, dictionary, marker_corners, marker_ids, parameters);
cv::aruco::drawDetectedMarkers(web_camera_frame, marker_corners, marker_ids);
sum_ids = marker_ids.size();
cv::imshow("from camera", web_camera_frame);
// Show MarkerID and sum of IDs in console
ShowMarkerIdsFunction(marker_ids);
std::cout << "sum IDs:" << sum_ids << std::endl;
const int key = cv::waitKey(1);
if (key == 'q'){
break;
}
else if (key == 's'){
cv::imwrite("Marker_ids_recognized.png", web_camera_frame);
}
}
cv::destroyAllWindows();
return 0;
}
마커 ID 취득 프로그램 실행
실행 시 카메라 이미지와 콘솔 상태는 다음과 같습니다.
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/aruco.hpp"
// Get MarkersID
void ShowMarkerIdsFunction(cv::OutputArray in) {
std::vector<cv::Mat> marker_ids;
in.getMatVector(marker_ids);
std::cout << "Marker IDs : "<< std::endl;
for (auto marker_ids : marker_ids) {
std::cout << marker_ids << std::endl;
}
}
int main(int argh, char* argv[])
{
// Create Marker Dictionary, Type of marker : 7X7,1000
const cv::aruco::PREDEFINED_DICTIONARY_NAME dictionary_name = cv::aruco::DICT_7X7_1000;
cv::Ptr<cv::aruco::Dictionary> dictionary = cv::aruco::getPredefinedDictionary(dictionary_name);
std::vector<int> marker_ids;
std::vector<std::vector<cv::Point2f>> marker_corners;
int sum_ids = 0;
cv::Mat web_camera_frame;
cv::VideoCapture cap(1);
// Confirm web camera connection
if (!cap.isOpened())
{
printf("web camera : Bad Connection\n");
return -1;
}
// Recognition MarkersID with ArUco
while (cap.read(web_camera_frame))
{
// Detect markers
cv::Ptr<cv::aruco::DetectorParameters> parameters = cv::aruco::DetectorParameters::create();
cv::aruco::detectMarkers(web_camera_frame, dictionary, marker_corners, marker_ids, parameters);
cv::aruco::drawDetectedMarkers(web_camera_frame, marker_corners, marker_ids);
sum_ids = marker_ids.size();
cv::imshow("from camera", web_camera_frame);
// Show MarkerID and sum of IDs in console
ShowMarkerIdsFunction(marker_ids);
std::cout << "sum IDs:" << sum_ids << std::endl;
const int key = cv::waitKey(1);
if (key == 'q'){
break;
}
else if (key == 's'){
cv::imwrite("Marker_ids_recognized.png", web_camera_frame);
}
}
cv::destroyAllWindows();
return 0;
}
실행 시 카메라 이미지와 콘솔 상태는 다음과 같습니다.
요약
ArUco Module은 쉽게 AR을 시도 할 수 있으므로 매우 재미 있습니다. 또, 잘못하고 있는 곳이나, 추가하는 편이 좋다, 이런 쓰는 쪽이 좋다! 라는 부분이 있으면 가르쳐 주시면 매우 기쁩니다.
Reference
이 문제에 관하여(ArUco Module에서 생성한 마커의 ID 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/SOutaHI/items/352c4aa8dddf25c265d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(ArUco Module에서 생성한 마커의 ID 획득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SOutaHI/items/352c4aa8dddf25c265d0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)