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 package org.openimaj.tools.imagecollection.collection.config;
31
32 import org.openimaj.image.MBFImage;
33 import org.openimaj.tools.imagecollection.collection.ImageCollection;
34 import org.openimaj.tools.imagecollection.collection.ImageCollectionSetupException;
35 import org.openimaj.tools.imagecollection.collection.video.XuggleVideoImageCollection;
36 import org.openimaj.tools.imagecollection.collection.video.YouTubeVideoImageCollection;
37 import org.openimaj.tools.imagecollection.collection.webpage.AbstractWebpageImageCollection;
38 import org.openimaj.tools.imagecollection.collection.webpage.FlickrWebpageImageCollection;
39
40 public enum ImageCollectionMode {
41 XUGGLE_VIDEO_URL{
42 @Override
43 public ImageCollection<MBFImage> newCollection() {
44 return new XuggleVideoImageCollection.FromURL();
45 }
46 },
47 XUGGLE_VIDEO_FILE{
48 @Override
49 public ImageCollection<MBFImage> newCollection() {
50 return new XuggleVideoImageCollection.FromFile();
51 }
52 },
53 YOUTUBE_VIDEO{
54 @Override
55 public ImageCollection<MBFImage> newCollection() {
56 return new YouTubeVideoImageCollection();
57 }
58 }
59 ,GENERIC_WEBPAGE{
60 @Override
61 public ImageCollection<MBFImage> newCollection() {
62 return new AbstractWebpageImageCollection.Generic();
63 }
64 }
65 ,FLICKR_WEBPAGE_GALLERY{
66 @Override
67 public ImageCollection<MBFImage> newCollection() {
68 return new FlickrWebpageImageCollection.Gallery();
69 }
70 }
71 ,FLICKR_WEBPAGE_SET{
72 @Override
73 public ImageCollection<MBFImage> newCollection() {
74 return new FlickrWebpageImageCollection.FlickrPhotoSet();
75 }
76 }
77 ,FLICKR_WEBPAGE_COLLECTION{
78 @Override
79 public ImageCollection<MBFImage> newCollection() {
80 return new FlickrWebpageImageCollection.FlickrPhotoCollection();
81 }
82 };
83 public ImageCollection<MBFImage> initCollection(ImageCollectionConfig config) throws ImageCollectionSetupException{
84 ImageCollection<MBFImage> col = newCollection();
85 col.setup(config);
86 return col;
87 }
88 public int usability(ImageCollectionConfig config){
89 ImageCollection<MBFImage> col = newCollection();
90 return col.useable(config);
91 }
92
93 public abstract ImageCollection<MBFImage> newCollection();
94
95 public static ImageCollection<MBFImage> guessType(ImageCollectionConfig config) throws ImageCollectionSetupException{
96 ImageCollectionMode found = null;
97 int best = -Integer.MAX_VALUE;
98 for(ImageCollectionMode s : ImageCollectionMode.values()){
99 int use = s.usability(config);
100 if(use > best && use >= 0){
101 best = use;
102 found = s;
103 }
104 }
105 return found.initCollection(config);
106 }
107 }