1#import "ViewController.h"
2#import "ImageConversion.h"
3#import "ImageDisplay.h"
8#ifndef DOXYGEN_SHOULD_SKIP_THIS
9@interface ViewController ()
12@implementation ViewController
14@synthesize myImageView;
23 UIImage *img = [UIImage imageNamed:@"AprilTag.png"];
26 self.myImageView = [[UIImageView alloc] initWithImage:img];
29 CGRect myFrame = CGRectMake(0.0f, 0.0f, self.myImageView.frame.size.width, self.myImageView.frame.size.height);
30 [
self.myImageView setFrame:myFrame];
33 [
self.view addSubview:
self.myImageView];
36 [myImageView setImage:img];
39 vpImage<unsigned char> I = [ImageConversion vpImageGrayFromUIImage:img];
44 double tag_size = 0.053;
45 float tag_quad_decimate = 3.0;
47 std::vector<vpHomogeneousMatrix> cMo_vec;
50 vpCameraParameters
cam;
51 cam.initPersProjWithoutDistortion(615.1674805, 615.1675415, 312.1889954, 243.4373779);
54 vpDetectorAprilTag detector(tag_family);
55 detector.setAprilTagQuadDecimate(tag_quad_decimate);
56 detector.setAprilTagPoseEstimationMethod(tag_pose_estimation_method);
57 detector.setAprilTagNbThreads(tag_nThreads);
60 detector.detect(I, tag_size, cam, cMo_vec);
63 std::cout <<
"Number of tags in the image: " << detector.getNbObjects() << std::endl;
64 for(
size_t i=0;
i < detector.getNbObjects();
i++) {
65 std::cout <<
"- Detected tag: " << detector.getMessage(i) << std::endl;
66 std::cout <<
" pose: " << cMo_vec[i] << std::endl;
70 for (
size_t i = 0;
i < detector.getNbObjects() ;
i++) {
71 std::vector<vpImagePoint> polygon = detector.getPolygon(i);
72 for (
size_t j = 0;
j < polygon.size();
j++) {
73 img = [ImageDisplay displayLine:img :polygon[j] :polygon[(j+1)%polygon.size()] :[UIColor redColor] :2];
78 for(
size_t i=0;
i < detector.getNbObjects();
i++) {
79 img = [ImageDisplay displayFrame:img :cMo_vec[i] :cam :0.025 :2];
81 [myImageView setImage:img];
84- (void)didReceiveMemoryWarning {
85 [
super didReceiveMemoryWarning];
@ TAG_36h11
AprilTag 36h11 pattern (recommended).