ruby-opencv 0.0.10 → 0.0.11.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +6 -14
  2. data/Manifest.txt +32 -8
  3. data/README.md +1 -1
  4. data/examples/alpha_blend.rb +2 -2
  5. data/examples/contours/bounding-box-detect-canny.rb +0 -0
  6. data/examples/contours/contour_retrieval_modes.rb +0 -0
  7. data/examples/convexhull.rb +0 -0
  8. data/examples/face_detect.rb +0 -0
  9. data/examples/facerec/create_csv.rb +43 -0
  10. data/examples/facerec/facerec_eigenfaces.rb +132 -0
  11. data/examples/facerec/facerec_fisherfaces.rb +131 -0
  12. data/examples/facerec/facerec_lbph.rb +116 -0
  13. data/examples/facerec/readme.md +111 -0
  14. data/examples/find_obj.rb +2 -2
  15. data/examples/houghcircle.rb +1 -1
  16. data/examples/{box.png → images/box.png} +0 -0
  17. data/examples/{box_in_scene.png → images/box_in_scene.png} +0 -0
  18. data/examples/{inpaint.png → images/inpaint.png} +0 -0
  19. data/examples/images/lena-256x256.jpg +0 -0
  20. data/examples/images/lena-eyes.jpg +0 -0
  21. data/examples/{lenna-rotated.jpg → images/lenna-rotated.jpg} +0 -0
  22. data/examples/{lenna.jpg → images/lenna.jpg} +0 -0
  23. data/examples/{stuff.jpg → images/stuff.jpg} +0 -0
  24. data/examples/{tiffany.jpg → images/tiffany.jpg} +0 -0
  25. data/examples/inpaint.rb +1 -1
  26. data/examples/match_kdtree.rb +2 -2
  27. data/examples/match_template.rb +26 -0
  28. data/examples/{matching_to_many_images.rb → matching_to_many_images/matching_to_many_images.rb} +3 -3
  29. data/examples/matching_to_many_images/query.png +0 -0
  30. data/examples/matching_to_many_images/train/1.png +0 -0
  31. data/examples/matching_to_many_images/train/2.png +0 -0
  32. data/examples/matching_to_many_images/train/3.png +0 -0
  33. data/examples/matching_to_many_images/train/trainImages.txt +0 -0
  34. data/examples/paint.rb +0 -0
  35. data/examples/snake.rb +0 -0
  36. data/ext/opencv/algorithm.cpp +286 -0
  37. data/ext/opencv/algorithm.h +38 -0
  38. data/ext/opencv/cvmat.cpp +205 -76
  39. data/ext/opencv/cvmat.h +8 -1
  40. data/ext/opencv/eigenfaces.cpp +67 -0
  41. data/ext/opencv/eigenfaces.h +30 -0
  42. data/ext/opencv/extconf.rb +0 -0
  43. data/ext/opencv/facerecognizer.cpp +174 -0
  44. data/ext/opencv/facerecognizer.h +46 -0
  45. data/ext/opencv/fisherfaces.cpp +67 -0
  46. data/ext/opencv/fisherfaces.h +30 -0
  47. data/ext/opencv/lbph.cpp +70 -0
  48. data/ext/opencv/lbph.h +30 -0
  49. data/ext/opencv/opencv.cpp +51 -1
  50. data/ext/opencv/opencv.h +6 -0
  51. data/lib/opencv.rb +0 -0
  52. data/lib/opencv/version.rb +1 -1
  53. data/ruby-opencv.gemspec +8 -7
  54. data/test/eigenfaces_save.xml +7524 -0
  55. data/test/fisherfaces_save.xml +7530 -0
  56. data/test/helper.rb +0 -0
  57. data/test/lbph_save.xml +4304 -0
  58. data/test/runner.rb +0 -0
  59. data/test/test_curve.rb +0 -0
  60. data/test/test_cvavgcomp.rb +0 -0
  61. data/test/test_cvbox2d.rb +0 -0
  62. data/test/test_cvcapture.rb +0 -0
  63. data/test/test_cvchain.rb +0 -0
  64. data/test/test_cvcircle32f.rb +0 -0
  65. data/test/test_cvconnectedcomp.rb +0 -0
  66. data/test/test_cvcontour.rb +0 -0
  67. data/test/test_cvcontourtree.rb +0 -0
  68. data/test/test_cverror.rb +0 -0
  69. data/test/test_cvfeaturetree.rb +0 -0
  70. data/test/test_cvfont.rb +0 -0
  71. data/test/test_cvhaarclassifiercascade.rb +0 -0
  72. data/test/test_cvhistogram.rb +0 -0
  73. data/test/test_cvhumoments.rb +0 -0
  74. data/test/test_cvline.rb +0 -0
  75. data/test/test_cvmat.rb +72 -16
  76. data/test/test_cvmat_drawing.rb +0 -0
  77. data/test/test_cvmat_dxt.rb +0 -0
  78. data/test/test_cvmat_imageprocessing.rb +72 -2
  79. data/test/test_cvmat_matching.rb +1 -1
  80. data/test/test_cvmoments.rb +0 -0
  81. data/test/test_cvpoint.rb +0 -0
  82. data/test/test_cvpoint2d32f.rb +0 -0
  83. data/test/test_cvpoint3d32f.rb +0 -0
  84. data/test/test_cvrect.rb +0 -0
  85. data/test/test_cvscalar.rb +0 -0
  86. data/test/test_cvseq.rb +0 -0
  87. data/test/test_cvsize.rb +0 -0
  88. data/test/test_cvsize2d32f.rb +0 -0
  89. data/test/test_cvslice.rb +0 -0
  90. data/test/test_cvsurfparams.rb +0 -0
  91. data/test/test_cvsurfpoint.rb +0 -0
  92. data/test/test_cvtermcriteria.rb +0 -0
  93. data/test/test_cvtwopoints.rb +0 -0
  94. data/test/test_cvvideowriter.rb +0 -0
  95. data/test/test_eigenfaces.rb +93 -0
  96. data/test/test_fisherfaces.rb +93 -0
  97. data/test/test_iplconvkernel.rb +0 -0
  98. data/test/test_iplimage.rb +0 -4
  99. data/test/test_lbph.rb +152 -0
  100. data/test/test_mouseevent.rb +0 -0
  101. data/test/test_opencv.rb +33 -4
  102. data/test/test_pointset.rb +7 -5
  103. data/test/test_preliminary.rb +0 -0
  104. data/test/test_trackbar.rb +0 -0
  105. data/test/test_window.rb +0 -0
  106. metadata +84 -56
data/test/runner.rb CHANGED
File without changes
data/test/test_curve.rb CHANGED
File without changes
File without changes
data/test/test_cvbox2d.rb CHANGED
File without changes
File without changes
data/test/test_cvchain.rb CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
data/test/test_cverror.rb CHANGED
File without changes
File without changes
data/test/test_cvfont.rb CHANGED
File without changes
File without changes
File without changes
File without changes
data/test/test_cvline.rb CHANGED
File without changes
data/test/test_cvmat.rb CHANGED
@@ -888,7 +888,7 @@ class TestCvMat < OpenCVTestCase
888
888
  def test_reshape
889
889
  m = create_cvmat(2, 3, CV_8U, 3)
890
890
 
891
- vec = m.reshape(:rows => 1)
891
+ vec = m.reshape(0, 1)
892
892
  assert_equal(6, vec.width)
893
893
  assert_equal(1, vec.height)
894
894
  size = m.width * m.height
@@ -896,7 +896,7 @@ class TestCvMat < OpenCVTestCase
896
896
  assert_cvscalar_equal(m[i], vec[i])
897
897
  }
898
898
 
899
- ch1 = m.reshape(:channel => 1)
899
+ ch1 = m.reshape(1)
900
900
  assert_equal(9, ch1.width)
901
901
  assert_equal(2, ch1.height)
902
902
 
@@ -909,10 +909,11 @@ class TestCvMat < OpenCVTestCase
909
909
  }
910
910
  }
911
911
 
912
- [DUMMY_OBJ, { :rows => DUMMY_OBJ }, { :channel => DUMMY_OBJ }].each { |arg|
913
- assert_raise(TypeError) {
914
- m.reshape(arg)
915
- }
912
+ assert_raise(TypeError) {
913
+ m.reshape(DUMMY_OBJ)
914
+ }
915
+ assert_raise(TypeError) {
916
+ m.reshape(0, DUMMY_OBJ)
916
917
  }
917
918
  end
918
919
 
@@ -2053,10 +2054,16 @@ class TestCvMat < OpenCVTestCase
2053
2054
  assert_in_delta(x, mminmax[i][0], 0.001)
2054
2055
  }
2055
2056
 
2057
+ minf = mat.normalize(1, 0, CV_NORM_INF, CV_32FC3)
2058
+ expected = [0.0, 0.333, 0.666, 1.0]
2059
+ expected.each_with_index { |x, i|
2060
+ assert_in_delta(x, minf[i][0], 0.001)
2061
+ }
2062
+
2056
2063
  mask = mat.to_8u.zero
2057
2064
  mask[0, 0] = CvScalar.new(255, 0, 0)
2058
2065
  mask[1, 0] = CvScalar.new(255, 0, 0)
2059
- minf = mat.normalize(1, 0, CV_NORM_INF, mask)
2066
+ minf = mat.normalize(1, 0, CV_NORM_INF, -1, mask)
2060
2067
  expected = [0.0, 0.0, 1.0, 0.0]
2061
2068
  expected.each_with_index { |x, i|
2062
2069
  assert_in_delta(x, minf[i][0], 0.001)
@@ -2794,11 +2801,11 @@ class TestCvMat < OpenCVTestCase
2794
2801
  CvMat.find_fundamental_mat(mat1, mat2, CV_FM_LMEDS)].each { |f_mat|
2795
2802
  assert_equal(3, f_mat.rows)
2796
2803
  assert_equal(3, f_mat.cols)
2797
- expected = [-2.79e-05, -0.0009362, 0.0396139,
2798
- 0.0010285, -2.48e-05, -0.3946452,
2799
- -0.0322220, 0.3695115, 1.0]
2804
+ expected = [0.0, 0.0, 0.0,
2805
+ 0.0, 0.0, 0.0,
2806
+ 0.0, 0.0, 1.0]
2800
2807
  expected.each_with_index { |val, i|
2801
- assert_in_delta(val, f_mat[i][0], 1.0e-5)
2808
+ assert_in_delta(val, f_mat[i][0], 0.1)
2802
2809
  }
2803
2810
  }
2804
2811
 
@@ -2810,13 +2817,13 @@ class TestCvMat < OpenCVTestCase
2810
2817
  assert_equal(1, status.rows)
2811
2818
  assert_equal(num_points, status.cols)
2812
2819
 
2813
- expected_f_mat = [6.48e-05, 0.001502, -0.086036,
2814
- -0.001652, 3.86e-05, 0.638690,
2815
- 0.059998, -0.597778, 1.0]
2820
+ expected_fmat = [0.0, 0.0, 0.0,
2821
+ 0.0, 0.0, 0.0,
2822
+ 0.0, 0.0, 1.0]
2816
2823
  expected_f_mat.each_with_index { |val, i|
2817
- assert_in_delta(val, f_mat[i][0], 1.0e-5)
2824
+ assert_in_delta(val, f_mat[i][0], 0.1)
2818
2825
  }
2819
- expected_status = [1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0]
2826
+ expected_status = [0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1]
2820
2827
  expected_status.each_with_index { |val, i|
2821
2828
  assert_equal(val, status[i][0].to_i)
2822
2829
  }
@@ -2943,5 +2950,54 @@ class TestCvMat < OpenCVTestCase
2943
2950
  CvMat.compute_correspond_epilines(mat1, 1, DUMMY_OBJ)
2944
2951
  }
2945
2952
  end
2953
+
2954
+ def test_apply_color_map
2955
+ mat = CvMat.new(64, 256, :cv8u, 1)
2956
+ mat.cols.times { |c|
2957
+ mat.rows.times { |r|
2958
+ mat[r, c] = c
2959
+ }
2960
+ }
2961
+
2962
+ results = []
2963
+ [COLORMAP_AUTUMN, COLORMAP_BONE, COLORMAP_JET, COLORMAP_WINTER,
2964
+ COLORMAP_RAINBOW, COLORMAP_OCEAN, COLORMAP_SUMMER, COLORMAP_SPRING,
2965
+ COLORMAP_COOL, COLORMAP_HSV, COLORMAP_PINK, COLORMAP_HOT].each { |colormap|
2966
+ cmap = mat.apply_color_map(colormap)
2967
+ assert_equal(CvMat, cmap.class)
2968
+ assert_equal(mat.rows, cmap.rows)
2969
+ assert_equal(mat.cols, cmap.cols)
2970
+ results << cmap
2971
+ }
2972
+
2973
+ assert_raise(TypeError) {
2974
+ mat.apply_color_map(DUMMY_OBJ)
2975
+ }
2976
+
2977
+ # Uncomment the following line to show the result
2978
+ # snap *results
2979
+ end
2980
+
2981
+ def test_subspace_project
2982
+ w = CvMat.new(10, 20, :cv32f, 1)
2983
+ mean = CvMat.new(w.rows, 1, :cv32f, 1)
2984
+ mat = CvMat.new(w.cols, w.rows, :cv32f, 1)
2985
+ result = mat.subspace_project(w, mean)
2986
+
2987
+ assert_equal(CvMat, result.class)
2988
+ assert_equal(w.cols, result.rows)
2989
+ assert_equal(w.cols, result.cols)
2990
+ end
2991
+
2992
+ def test_subspace_reconstruct
2993
+ w = CvMat.new(10, 20, :cv32f, 1)
2994
+ mean = CvMat.new(w.rows, 1, :cv32f, 1)
2995
+ mat = CvMat.new(w.cols, w.cols, :cv32f, 1)
2996
+ result = mat.subspace_reconstruct(w, mean)
2997
+
2998
+ assert_equal(CvMat, result.class)
2999
+ assert_equal(w.cols, result.rows)
3000
+ assert_equal(w.rows, result.cols)
3001
+ end
2946
3002
  end
2947
3003
 
File without changes
File without changes
@@ -450,6 +450,40 @@ class TestCvMat_imageprocessing < OpenCVTestCase
450
450
  # snap mat0, mat1, mat2, mat3, mat4
451
451
  end
452
452
 
453
+ def test_get_perspective_transform
454
+ from = [
455
+ OpenCV::CvPoint2D32f.new(540, 382),
456
+ OpenCV::CvPoint2D32f.new(802, 400),
457
+ OpenCV::CvPoint2D32f.new(850, 731),
458
+ OpenCV::CvPoint2D32f.new(540, 731),
459
+ ]
460
+ to = [
461
+ OpenCV::CvPoint2D32f.new(0, 0),
462
+ OpenCV::CvPoint2D32f.new(233, 0),
463
+ OpenCV::CvPoint2D32f.new(233, 310),
464
+ OpenCV::CvPoint2D32f.new(0, 310),
465
+ ]
466
+ transform = OpenCV::CvMat.get_perspective_transform(from, to)
467
+ assert_equal 3, transform.rows
468
+ assert_equal 3, transform.columns
469
+ expected = [
470
+ 0.923332154750824,
471
+ 0.0,
472
+ 0.0,
473
+ 1.4432899320127035e-15,
474
+ 0.0,
475
+ 0.0,
476
+ -498.599365234375,
477
+ 0.0,
478
+ 0.0,
479
+ ]
480
+ 3.times do |i|
481
+ 3.times do |j|
482
+ assert_in_delta(expected.shift, transform[i][j], 0.001)
483
+ end
484
+ end
485
+ end
486
+
453
487
  def test_rotation_matrix2D
454
488
  mat1 = CvMat.rotation_matrix2D(CvPoint2D32f.new(10, 20), 60, 2.0)
455
489
  expected = [1.0, 1.73205, -34.64102,
@@ -1009,10 +1043,18 @@ class TestCvMat_imageprocessing < OpenCVTestCase
1009
1043
  test_proc = lambda { |type, type_sym, expected_mat, expected_threshold|
1010
1044
  mat1 = mat0.threshold(expected_threshold, 7, type)
1011
1045
  mat2 = mat0.threshold(expected_threshold, 7, type_sym)
1046
+ [mat1, mat2].each { |m|
1047
+ expected_mat.each_with_index { |x, i|
1048
+ assert_equal(x, m[i][0])
1049
+ }
1050
+ }
1051
+ }
1052
+
1053
+ test_proc_with_otsu = lambda { |type, type_sym, expected_mat, expected_threshold|
1012
1054
  mat3, th3 = mat0.threshold(5, 7, type | CV_THRESH_OTSU)
1013
1055
  mat4, th4 = mat0.threshold(3, 7, type_sym, true)
1014
1056
  mat5, th5 = mat0.threshold(5, 7, type | CV_THRESH_OTSU, true)
1015
- [mat1, mat2, mat3, mat4, mat5].each { |m|
1057
+ [mat3, mat4, mat5].each { |m|
1016
1058
  expected_mat.each_with_index { |x, i|
1017
1059
  assert_equal(x, m[i][0])
1018
1060
  }
@@ -1021,36 +1063,62 @@ class TestCvMat_imageprocessing < OpenCVTestCase
1021
1063
  assert_in_delta(expected_threshold, th, 0.001)
1022
1064
  }
1023
1065
  }
1066
+
1024
1067
  # Binary
1025
1068
  expected = [0, 0, 0,
1026
1069
  0, 0, 7,
1027
1070
  7, 7, 7]
1028
1071
  test_proc.call(CV_THRESH_BINARY, :binary, expected, 4)
1029
1072
 
1073
+ expected = [0, 0, 0,
1074
+ 0, 7, 7,
1075
+ 7, 7, 7]
1076
+ test_proc_with_otsu.call(CV_THRESH_BINARY, :binary, expected, 3)
1077
+
1030
1078
  # Binary inverse
1031
1079
  expected = [7, 7, 7,
1032
1080
  7, 7, 0,
1033
1081
  0, 0, 0]
1034
1082
  test_proc.call(CV_THRESH_BINARY_INV, :binary_inv, expected, 4)
1035
1083
 
1084
+ expected = [7, 7, 7,
1085
+ 7, 0, 0,
1086
+ 0, 0, 0]
1087
+ test_proc_with_otsu.call(CV_THRESH_BINARY_INV, :binary_inv, expected, 3)
1088
+
1036
1089
  # Trunc
1037
1090
  expected = [0, 1, 2,
1038
1091
  3, 4, 4,
1039
1092
  4, 4, 4]
1040
1093
  test_proc.call(CV_THRESH_TRUNC, :trunc, expected, 4)
1041
1094
 
1095
+ expected = [0, 1, 2,
1096
+ 3, 3, 3,
1097
+ 3, 3, 3]
1098
+ test_proc_with_otsu.call(CV_THRESH_TRUNC, :trunc, expected, 3)
1099
+
1042
1100
  # To zero
1043
1101
  expected = [0, 0, 0,
1044
1102
  0, 0, 5,
1045
1103
  6, 7, 8]
1046
1104
  test_proc.call(CV_THRESH_TOZERO, :tozero, expected, 4)
1047
1105
 
1106
+ expected = [0, 0, 0,
1107
+ 0, 4, 5,
1108
+ 6, 7, 8]
1109
+ test_proc_with_otsu.call(CV_THRESH_TOZERO, :tozero, expected, 3)
1110
+
1048
1111
  # To zero inverse
1049
1112
  expected = [0, 1, 2,
1050
1113
  3, 4, 0,
1051
1114
  0, 0, 0]
1052
1115
  test_proc.call(CV_THRESH_TOZERO_INV, :tozero_inv, expected, 4)
1053
1116
 
1117
+ expected = [0, 1, 2,
1118
+ 3, 0, 0,
1119
+ 0, 0, 0]
1120
+ test_proc_with_otsu.call(CV_THRESH_TOZERO_INV, :tozero_inv, expected, 3)
1121
+
1054
1122
  assert_raise(TypeError) {
1055
1123
  mat0.threshold(DUMMY_OBJ, 2, :binary)
1056
1124
  }
@@ -1603,7 +1671,9 @@ class TestCvMat_imageprocessing < OpenCVTestCase
1603
1671
  def test_equalize_hist
1604
1672
  mat = CvMat.load(FILENAME_LENA256x256, CV_LOAD_IMAGE_GRAYSCALE)
1605
1673
  result = mat.equalize_hist
1606
- assert_equal('de235065c746193d7f3de9359f63a7af', hash_img(result))
1674
+ assert_equal(CvMat, result.class)
1675
+ assert_equal(mat.rows, result.rows)
1676
+ assert_equal(mat.cols, result.cols)
1607
1677
 
1608
1678
  assert_raise(CvStsAssert) {
1609
1679
  CvMat.new(10, 10, :cv32f, 3).equalize_hist
@@ -18,7 +18,7 @@ class TestCvMat_matching < OpenCVTestCase
18
18
  end
19
19
 
20
20
  def read_test_image(*path)
21
- IplImage.load File.join(data_dir, *path), CV_LOAD_IMAGE_GRAYSCALE
21
+ CvMat.load File.join(data_dir, *path), CV_LOAD_IMAGE_GRAYSCALE
22
22
  end
23
23
 
24
24
  def test_match_descriptors
File without changes
data/test/test_cvpoint.rb CHANGED
File without changes
File without changes
File without changes
data/test/test_cvrect.rb CHANGED
File without changes
File without changes
data/test/test_cvseq.rb CHANGED
File without changes
data/test/test_cvsize.rb CHANGED
File without changes
File without changes
data/test/test_cvslice.rb CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- mode: ruby; coding: utf-8-unix -*-
3
+ require 'test/unit'
4
+ require 'opencv'
5
+ require 'date'
6
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
7
+
8
+ include OpenCV
9
+
10
+ # Tests for OpenCV::EigenFaces
11
+ class TestEigenFaces < OpenCVTestCase
12
+ def setup
13
+ @eigenfaces = EigenFaces.new
14
+
15
+ @eigenfaces_trained = EigenFaces.new
16
+ @images = [CvMat.load(FILENAME_LENA256x256, CV_LOAD_IMAGE_GRAYSCALE)] * 2
17
+ @labels = [1, 2]
18
+ @eigenfaces_trained.train(@images, @labels)
19
+ end
20
+
21
+ def test_initialize
22
+ [EigenFaces.new, EigenFaces.new(1), EigenFaces.new(1, 99999)].each { |ef|
23
+ assert_equal(EigenFaces, ef.class)
24
+ }
25
+
26
+ assert_raise(TypeError) {
27
+ EigenFaces.new(DUMMY_OBJ)
28
+ }
29
+
30
+ assert_raise(TypeError) {
31
+ EigenFaces.new(1, DUMMY_OBJ)
32
+ }
33
+ end
34
+
35
+ def test_train
36
+ assert_nil(@eigenfaces.train(@images, @labels))
37
+
38
+ assert_raise(TypeError) {
39
+ @eigenfaces.train(DUMMY_OBJ, @labels)
40
+ }
41
+
42
+ assert_raise(TypeError) {
43
+ @eigenfaces.train(@images, DUMMY_OBJ)
44
+ }
45
+ end
46
+
47
+ def test_predict
48
+ predicted_label, predicted_confidence = @eigenfaces_trained.predict(@images[0])
49
+ assert_equal(@labels[0], predicted_label)
50
+ assert_in_delta(0.0, predicted_confidence, 0.01)
51
+
52
+ assert_raise(TypeError) {
53
+ @eigenfaces_trained.predict(DUMMY_OBJ)
54
+ }
55
+ end
56
+
57
+ def test_save
58
+ filename = "eigenfaces_save-#{DateTime.now.strftime('%Y%m%d%H%M%S')}.xml"
59
+ begin
60
+ @eigenfaces_trained.save(filename)
61
+ assert(File.exist? filename)
62
+ ensure
63
+ File.delete filename
64
+ end
65
+ assert_raise(TypeError) {
66
+ @eigenfaces_trained.save(DUMMY_OBJ)
67
+ }
68
+ end
69
+
70
+ def test_load
71
+ assert_nothing_raised {
72
+ @eigenfaces_trained.load('eigenfaces_save.xml')
73
+ }
74
+ assert_raise(TypeError) {
75
+ @eigenfaces_trained.load(DUMMY_OBJ)
76
+ }
77
+ end
78
+
79
+ def test_name
80
+ assert_equal('FaceRecognizer.Eigenfaces', @eigenfaces.name)
81
+ end
82
+
83
+ def test_get_mat
84
+ mat = @eigenfaces_trained.get_mat('eigenvalues')
85
+ assert_not_nil(mat)
86
+ assert_equal(CvMat, mat.class)
87
+
88
+ assert_raise(TypeError) {
89
+ @eigenfaces_trained.get_mat(DUMMY_OBJ)
90
+ }
91
+ end
92
+ end
93
+