ropencv 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd8ab218b838274f85686f33fbac6b91abd46097
4
- data.tar.gz: 7eb519e53bb782f17665dc6f4fc3a90c558cb2f2
3
+ metadata.gz: ed24be2b4f9b19d2ab4170ad578b3d78d36958e4
4
+ data.tar.gz: 4d4520ac61ca76f16bf3a7961f6240f2c6cf9f10
5
5
  SHA512:
6
- metadata.gz: 5cf14edc726ab2dd119bcc804e81f3bafb43538083394afa74d75b7fd7015a988cf08ae1218e995d961416209875806c313a7e66fbd4f6999c637501c57ec046
7
- data.tar.gz: f11e563f715217ad25fb7576107f7af949db69cdef3d7b95260eaefe1c123f8ae0bffd26fe4c49aff62028ff448db7e2c9a84b4d5153fbdd8b88a99a3d6fd144
6
+ metadata.gz: 47aea3c934fe8500236d0ad798dad58d6abaeafe1fe6c0e9fdf47635da080b6549df5ca777ed99a6b68c959c7a64d91db889c17c04a1091487189fe074e88cb9
7
+ data.tar.gz: b1e32dda67c171d45095c114b0550c0ebdd0c7bb46577636673be39edd95d98c965fbe208df74efa2fb32bcc5b3b4151bd492189e103c1220773d0162232e90b
data/ext/helper.rb CHANGED
@@ -15,7 +15,7 @@ class OpenCVPtr < Rbind::RTemplateClass
15
15
  klass.add_operation Rbind::ROperation.new("release",type("void"))
16
16
  klass.add_operation Rbind::ROperation.new("delete_obj",type("void"))
17
17
  klass.add_operation Rbind::ROperation.new("empty",type("bool"))
18
- klass.add_attribute Rbind::RAttribute.new("obj",ptr_type.to_ptr)
18
+ klass.add_attribute Rbind::RAttribute.new("obj",ptr_type.to_ptr.to_ownership(false))
19
19
  klass
20
20
  end
21
21
 
@@ -44,7 +44,7 @@ class OpenCVPtr2 < Rbind::RTemplateClass
44
44
  klass.add_operation Rbind::ROperation.new("release",type("void"))
45
45
  klass.add_operation Rbind::ROperation.new("reset",type("void"),Rbind::RParameter.new("p",ptr_type.to_ptr))
46
46
  klass.add_operation Rbind::ROperation.new("swap",type("void"),Rbind::RParameter.new("other",klass))
47
- klass.add_operation Rbind::ROperation.new("get",ptr_type.to_ptr)
47
+ klass.add_operation Rbind::ROperation.new("get",ptr_type.to_ptr.to_ownership(false))
48
48
  klass.add_operation Rbind::ROperation.new("empty",type("bool"))
49
49
  klass
50
50
  end
@@ -99,7 +99,7 @@ def find_opencv
99
99
  "opencv2/core/core.hpp", "opencv2/flann/miniflann.hpp",
100
100
  "opencv2/imgproc/imgproc_c.h", "opencv2/imgproc/types_c.h",
101
101
  "opencv2/imgproc/imgproc.hpp", "opencv2/photo/photo_c.h",
102
- "opencv2/photo/photo.hpp", "opencv2/video/video.hpp",
102
+ "opencv2/photo/photo.hpp", "opencv2/video/video.hpp","opencv2/video/tracking.hpp",
103
103
  "opencv2/features2d/features2d.hpp", "opencv2/objdetect/objdetect.hpp",
104
104
  "opencv2/calib3d/calib3d.hpp", "opencv2/ml/ml.hpp",
105
105
  "opencv2/highgui/highgui_c.h", "opencv2/highgui/highgui.hpp",
@@ -115,7 +115,7 @@ def find_opencv
115
115
  "opencv2/nonfree/features2d.hpp", "opencv2/objdetect.hpp",
116
116
  "opencv2/photo.hpp", "opencv2/softcascade.hpp",
117
117
  "opencv2/stitching.hpp", "opencv2/superres.hpp",
118
- "opencv2/video.hpp", "opencv2/legacy.hpp",
118
+ "opencv2/video.hpp", "opencv2/legacy.hpp","opencv2/video/tracking.hpp",
119
119
  "opencv2/videostab.hpp"]
120
120
  else
121
121
  raise "OpenCV version #{opencv_version} is not supported"
data/ext/opencv.txt CHANGED
@@ -1,3 +1,7 @@
1
+ const cv.CV_LKFLOW_PYR_A_READY 1
2
+ const cv.CV_LKFLOW_PYR_B_READY 2
3
+ const cv.CV_LKFLOW_INITIAL_GUESSES 4
4
+ const cv.CV_LKFLOW_GET_MIN_EIGENVALS 8
1
5
  const cv.INT_MAX 2147483647
2
6
  const cv.CV_8U 0
3
7
  const cv.CV_8S 1
@@ -274,7 +278,6 @@ cv.Rect.size Size
274
278
  cv.Rect.area int
275
279
  cv.Rect.contains bool
276
280
  Point point
277
- class CvTermCriteria
278
281
  class CvDTreeNode
279
282
  class CvSlice
280
283
  class cvflann.flann_algorithm_t
@@ -291,6 +294,15 @@ cv.RotatedRect.RotatedRect
291
294
  cv.RotatedRect.boundingRect Rect
292
295
  class cv.FileNode
293
296
  class cv.TermCriteria
297
+ cv.TermCriteria.TermCriteria
298
+ int type /RW
299
+ int maxCount /RW
300
+ double epsilon /RW
301
+ cv.TermCriteria.TermCriteria
302
+ int type
303
+ int maxCount
304
+ double epsilon
305
+ class CvTermCriteria
294
306
  class cv.flann::IndexParams
295
307
  class cv.flann::SearchParams
296
308
  class cv.FeatureDetector
data/ext/rbind.rb CHANGED
@@ -48,6 +48,14 @@ elsif opencv_version >= "3.0.0"
48
48
  rbind.cv.AlignMTB.process[1].parameter(1).remove_const!
49
49
  end
50
50
 
51
+ rbind.cv.calcOpticalFlowSF[0].parameter(0).remove_const!
52
+ rbind.cv.calcOpticalFlowSF[0].parameter(1).remove_const!
53
+ rbind.cv.calcOpticalFlowSF[0].parameter(2).remove_const!
54
+
55
+ rbind.cv.calcOpticalFlowSF[1].parameter(0).remove_const!
56
+ rbind.cv.calcOpticalFlowSF[1].parameter(1).remove_const!
57
+ rbind.cv.calcOpticalFlowSF[1].parameter(2).remove_const!
58
+
51
59
  rbind.cv.CascadeClassifier.detectMultiScale[1].parameter(2).remove_const!
52
60
  rbind.cv.CascadeClassifier.detectMultiScale[1].parameter(3).remove_const!
53
61
 
@@ -25,13 +25,13 @@ module OpenCV
25
25
  if obj.is_a?(Vector::Std_Vector_Cv_Point2f)
26
26
  t = Vector::Cv_Mat.new
27
27
  obj.each do |e|
28
- t << cv::Mat.new(e.size,2,cv::CV_32FC1,e.data,cv::Mat::AUTO_STEP)
28
+ t << Cv::Mat.new(e.size,2,Cv::CV_32FC1,e.data,Cv::Mat::AUTO_STEP)
29
29
  end
30
30
  t.__obj_ptr__
31
31
  elsif obj.is_a?(Vector::Std_Vector_Cv_Point)
32
32
  t = Vector::Cv_Mat.new
33
33
  obj.each do |e|
34
- t << cv::Mat.new(e.size,2,cv::CV_32SC1,e.data,cv::Mat::AUTO_STEP)
34
+ t << Cv::Mat.new(e.size,2,Cv::CV_32SC1,e.data,Cv::Mat::AUTO_STEP)
35
35
  end
36
36
  t.__obj_ptr__
37
37
  else
@@ -44,6 +44,10 @@ module OpenCV
44
44
  include Std
45
45
 
46
46
  module Cv
47
+ # reflect some typedefs
48
+ GoodFeatureToTrackDetector = GFTTDetector if defined? GFTTDetector
49
+ StarFeatureDetector = StarDetector if defined? StarDetector
50
+
47
51
  def self.min_max_loc(src,min_loc = Point.new,max_loc = Point.new,mask = Mat.new)
48
52
  p = FFI::MemoryPointer.new(:double,2)
49
53
  Rbind::cv_min_max_loc(src, p[0], p[1], min_loc, max_loc, mask)
@@ -258,7 +262,7 @@ module OpenCV
258
262
  def to_mat
259
263
  raise RuntimeError, "FileNode is empty" if empty?
260
264
  raise RuntimeError, "FileNode is not storing a Mat" unless isMap
261
- val = cv::Mat.new
265
+ val = Cv::Mat.new
262
266
  read_mat(val)
263
267
  val
264
268
  end
@@ -290,7 +294,7 @@ module OpenCV
290
294
  def to_string
291
295
  raise RuntimeError, "FileNode is empty" if empty?
292
296
  raise RuntimeError, "FileNode is not storing a string" unless isString
293
- str = cv::String.new
297
+ str = Cv::String.new
294
298
  read_string(str)
295
299
  str
296
300
  end
@@ -321,25 +325,33 @@ module OpenCV
321
325
 
322
326
  def self.to_native(obj,context)
323
327
  if obj.is_a?(Std::Vector::Cv_Point)
324
- cv::Mat.new(obj.size,1,cv::CV_32SC2,obj.data,cv::Mat::AUTO_STEP).__obj_ptr__
328
+ Cv::Mat.new(obj.size,1,Cv::CV_32SC2,obj.data,Cv::Mat::AUTO_STEP).__obj_ptr__
325
329
  elsif obj.is_a?(Std::Vector::Cv_Point2f)
326
- cv::Mat.new(obj.size,1,cv::CV_32FC2,obj.data,cv::Mat::AUTO_STEP).__obj_ptr__
330
+ Cv::Mat.new(obj.size,1,Cv::CV_32FC2,obj.data,Cv::Mat::AUTO_STEP).__obj_ptr__
327
331
  elsif obj.is_a?(Std::Vector::Cv_Point3f)
328
- cv::Mat.new(obj.size,1,cv::CV_32FC3,obj.data,cv::Mat::AUTO_STEP).__obj_ptr__
332
+ Cv::Mat.new(obj.size,1,Cv::CV_32FC3,obj.data,Cv::Mat::AUTO_STEP).__obj_ptr__
329
333
  elsif obj.is_a?(Std::Vector::Fixnum)
330
- cv::Mat.new(obj.size,1,cv::CV_32SC1,obj.data,cv::Mat::AUTO_STEP).__obj_ptr__
334
+ Cv::Mat.new(obj.size,1,Cv::CV_32SC1,obj.data,Cv::Mat::AUTO_STEP).__obj_ptr__
331
335
  elsif obj.is_a?(Array)
332
336
  h,w,e= if obj.first.is_a? Array
333
- [obj.size,obj.first.size,obj.first.first]
337
+ if obj.find {|array| array.find(Float)}
338
+ [obj.size,obj.first.size,obj.first.first.to_f]
339
+ else
340
+ [obj.size,obj.first.size,obj.first.first]
341
+ end
334
342
  else
335
- [obj.size,1,obj.first]
343
+ if obj.find(Float)
344
+ [obj.size,1,obj.first.to_f]
345
+ else
346
+ [obj.size,1,obj.first]
347
+ end
336
348
  end
337
349
  setter,step,type = if e.is_a? Fixnum
338
350
  [:put_array_of_int32,4*w,CV_32SC1]
339
351
  elsif e.is_a? Float
340
352
  [:put_array_of_float64,8*w,CV_64FC1]
341
353
  else
342
- raise ArgumentError,"cannot connvert array of #{e.class} to cv::Mat"
354
+ raise ArgumentError,"cannot connvert array of #{e.class} to Cv::Mat"
343
355
  end
344
356
  mat = Mat.new(h,w,type)
345
357
  ptr = mat.data
@@ -359,10 +371,11 @@ module OpenCV
359
371
  end
360
372
 
361
373
  def -@
362
- cv::Mat.zeros(rows,cols,type)-self
374
+ Cv::Mat.zeros(rows,cols,type)-self
363
375
  end
364
376
 
365
- def at(i,j=nil)
377
+ def at(i,j=nil,k=0)
378
+ raise ArgumentError,"channel #{k} out of bound" if k >= channels
366
379
  i,j = if j == nil
367
380
  if i.is_a?(Cv::Point)
368
381
  [i.y,i.x]
@@ -377,6 +390,7 @@ module OpenCV
377
390
  if i >= rows || i < 0 || j >= cols || j <0
378
391
  raise ArgumentError,"out of bound #{i}/#{j} #{rows}/#{cols}"
379
392
  end
393
+ j = j*channels+k
380
394
  case type & 7
381
395
  when CV_8U
382
396
  data.get_uint8(i*step+j)
@@ -422,7 +436,14 @@ module OpenCV
422
436
  end
423
437
  end
424
438
 
425
- def set(i,j,val=nil)
439
+ def set(i,j,k=nil,val=nil)
440
+ k,val = if val == nil
441
+ [val,k]
442
+ else
443
+ [k,val]
444
+ end
445
+ k ||= 0
446
+ raise ArgumentError,"channel #{k} out of bound" if k >= channels
426
447
  i,j,val = if val == nil
427
448
  if i.is_a?(Cv::Point)
428
449
  [i.y,i.x,j]
@@ -437,6 +458,7 @@ module OpenCV
437
458
  if i >= rows || i < 0 || j >= cols || j <0
438
459
  raise ArgumentError,"out of bound #{i}/#{j}"
439
460
  end
461
+ j = j*channels+k
440
462
  case type & 7
441
463
  when CV_8U
442
464
  data.put_uint8(i*step+j,val)
@@ -455,12 +477,12 @@ module OpenCV
455
477
  end
456
478
  end
457
479
 
458
- def [](i,j=nil)
459
- at(i,j)
480
+ def [](i,j=nil,k=0)
481
+ at(i,j,k)
460
482
  end
461
483
 
462
- def []=(i,j,val=nil)
463
- set(i,j,val)
484
+ def []=(i,j,k=nil,val=nil)
485
+ set(i,j,k,val)
464
486
  end
465
487
 
466
488
  def -(val)
@@ -573,6 +595,18 @@ module OpenCV
573
595
  end
574
596
  end
575
597
 
598
+ # returns a string compatible to matlab's MAT-file
599
+ def to_MAT(variable_name)
600
+ <<eos
601
+ # Created by ropencv, #{Time.now}
602
+ # name: #{variable_name}
603
+ # type: matrix
604
+ # rows: #{rows}
605
+ # columns: #{cols}
606
+ #{to_a.map{|row|row.join(" ")}.join("\n")}
607
+ eos
608
+ end
609
+
576
610
  def to_a
577
611
  h,w,c,s,ptr = [rows,cols,channels,step,data]
578
612
  getter = case type & 7
data/ropencv.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'ropencv'
3
- s.version = '0.0.13'
4
- s.date = '2013-12-12'
3
+ s.version = '0.0.14'
4
+ s.date = '2014-02-16'
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = ['Alexander Duda']
7
7
  s.email = ['Alexander.Duda@dfki.de']
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.files = `git ls-files`.split("\n") + ["lib/ropencv/ropencv_types.rb","lib/ropencv/ropencv_ruby.rb"]
12
12
  s.require_path = 'lib'
13
13
  s.required_rubygems_version = ">= 1.3.6"
14
- s.add_runtime_dependency "rbind", ">= 0.0.23"
14
+ s.add_runtime_dependency "rbind", ">= 0.0.24"
15
15
  s.add_runtime_dependency "ffi", "~> 1.9.0"
16
16
  s.extensions = ['ext/extconf.rb']
17
17
  s.license = 'BSD'
data/test/test_mat.rb CHANGED
@@ -127,6 +127,17 @@ describe Cv::Mat do
127
127
  mat = cv::Mat.new([1,2,3],[3,3,3],[5,6,7])
128
128
  assert_equal 6, mat[2,1]
129
129
  end
130
+
131
+ it "can access different channels" do
132
+ mats = std::Vector.new(cv::Mat)
133
+ mats.push_back(cv::Mat::zeros(10,10,cv::CV_8UC1))
134
+ mats.push_back(cv::Mat::ones(10,10,cv::CV_8UC1))
135
+ mat = cv::Mat.new
136
+ cv::merge(mats,mat)
137
+
138
+ assert_equal 0, mat[9,9]
139
+ assert_equal 1, mat[8,8,1]
140
+ end
130
141
  end
131
142
 
132
143
  describe "[]=" do
@@ -136,5 +147,19 @@ describe Cv::Mat do
136
147
  mat[1,2] = 4
137
148
  assert_equal [[1,2,3],[3,3,4],[5,6,7]], mat.to_a
138
149
  end
150
+
151
+ it "can change different channels" do
152
+ mats = std::Vector.new(cv::Mat)
153
+ mat = cv::Mat::zeros(10,10,cv::CV_32FC3)
154
+
155
+ mat[9,9,0] = 123
156
+ mat[9,9,1] = 130
157
+ mat[9,9,2] = 140
158
+
159
+ cv::split(mat,mats)
160
+ assert_equal 123.0, mats[0][9,9]
161
+ assert_equal 130.0, mats[1][9,9]
162
+ assert_equal 140.0, mats[2][9,9]
163
+ end
139
164
  end
140
165
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ropencv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Duda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-12 00:00:00.000000000 Z
11
+ date: 2014-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbind
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.23
19
+ version: 0.0.24
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.0.23
26
+ version: 0.0.24
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: ffi
29
29
  requirement: !ruby/object:Gem::Requirement