ropencv 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
Binary file
File without changes
Binary file
File without changes
File without changes
@@ -1,7 +1,7 @@
1
1
  require 'ropencv'
2
2
  include OpenCV
3
3
 
4
- mat = cv::imread("logo.png")
4
+ mat = cv::imread(File.join("data","logo.png"))
5
5
  cv.blur(mat,mat,cv::Size.new(10,10))
6
6
 
7
7
  detector = cv::FeatureDetector::create("SURF")
@@ -0,0 +1,37 @@
1
+ require 'zlib'
2
+ require 'ropencv'
3
+ include OpenCV
4
+
5
+ #depends on openCV installation so copied into the directory for easier access
6
+ face_cascade_name = File.join(Dir.getwd,'data',"haarcascade_frontalface_alt.xml")
7
+ image_name = File.join(Dir.getwd,'data',"jolie.jpeg")
8
+
9
+
10
+ # unpack file
11
+ if !File.exist?(face_cascade_name)
12
+ Zlib::GzipReader.open("#{face_cascade_name}.gz") do |gz|
13
+ f = File.open(face_cascade_name,"w")
14
+ f.write gz.read
15
+ f.close
16
+ end
17
+ end
18
+
19
+ frame_gray = cv::Mat.new
20
+ face_cascade = cv::CascadeClassifier.new
21
+ puts face_cascade.load(face_cascade_name) ? ' loaded' : 'not loaded'
22
+
23
+ frame = cv::imread(image_name)
24
+ faces = Std::Vector.new(cv::Rect)
25
+
26
+ cv::cvt_color(frame,frame_gray, cv::COLOR_BGR2GRAY)
27
+ cv::equalizeHist( frame_gray, frame_gray );
28
+
29
+ face_cascade.detect_multi_scale( frame_gray, faces, 1.1, 2, );
30
+ puts faces.size
31
+
32
+ faces.each do |face|
33
+ center = cv::Point.new(face.x + face.width*0.5, face.y + face.height*0.5)
34
+ cv::ellipse( frame, center, cv::Size.new( face.width*0.5, face.height*0.5), 0, 0, 360, cv::Scalar.new( 255, 0, 255 ), 4, 8, 0 );
35
+ end
36
+ cv::imshow("key_points",frame)
37
+ cv::wait_key(-1)
@@ -0,0 +1,28 @@
1
+ require 'ropencv'
2
+ include OpenCV
3
+
4
+ image_name = File.join(Dir.getwd,'data',"sample.jpg")
5
+ frame = cv::imread(image_name)
6
+
7
+ detector = cv::HOGDescriptor.new
8
+ people_detector_vec = cv::HOGDescriptor.get_default_people_detector
9
+ default_people_detector_mat = cv::Mat.new(people_detector_vec.size, 1, cv::CV_32FC1, people_detector_vec.data, cv::Mat::AUTO_STEP)
10
+ detector.setsvm_detector(default_people_detector_mat)
11
+ founds = Std::Vector.new(cv::Rect)
12
+ founds_filtered = Std::Vector.new(cv::Rect)
13
+ window = Std::Vector::Double.new()
14
+
15
+ detector.detect_multi_scale(frame, founds, window)
16
+
17
+ founds.each do |found|
18
+
19
+ r = cv::Rect.new(found)
20
+ r.x += (r.width*0.1).to_i
21
+ r.width = (r.width*0.8).to_i
22
+ r.y += (r.height*0.07).to_i
23
+ r.height = (r.height*0.8).to_i
24
+ cv::rectangle(frame, r.tl, r.br, cv::Scalar.new(0,255,0), 3)
25
+
26
+ end
27
+ cv::imshow("hog_descriptor",frame)
28
+ cv::wait_key(-1)
@@ -1,12 +1,12 @@
1
1
  require 'ropencv'
2
2
  include OpenCV
3
3
 
4
- img = cv::imread("logo.png")
4
+ img = cv::imread(File.join("data","logo.png"))
5
5
  gray = cv::Mat.new
6
- cv::cvtColor(img,gray,CV_BGR2GRAY)
6
+ cv::cvtColor(img,gray,cv::COLOR_BGR2GRAY)
7
7
 
8
8
  circles = cv::Mat.new
9
- cv::HoughCircles(gray, circles, CV_HOUGH_GRADIENT, 1, gray.rows/10, 10, 20 );
9
+ cv::HoughCircles(gray, circles, cv::HOUGH_GRADIENT, 1, gray.rows/10, 10, 20 );
10
10
  circles = circles.reshape(1,circles.cols)
11
11
 
12
12
  circles.each_row do |circle|
@@ -1,8 +1,8 @@
1
1
  require 'ropencv'
2
2
  include OpenCV
3
3
 
4
- img1 = cv::imread('tsukuba_l.png',CV_LOAD_IMAGE_GRAYSCALE)
5
- img2 = cv::imread('tsukuba_r.png',CV_LOAD_IMAGE_GRAYSCALE)
4
+ img1 = cv::imread(File.join('data','tsukuba_l.png'),CV_LOAD_IMAGE_GRAYSCALE)
5
+ img2 = cv::imread(File.join('data','tsukuba_r.png'),CV_LOAD_IMAGE_GRAYSCALE)
6
6
  if (img1.empty() || img2.empty())
7
7
  puts("Can't read one of the images\n")
8
8
  return -1
@@ -28,6 +28,6 @@ matcher.match(descriptors1, descriptors2, matches)
28
28
 
29
29
  # drawing the results
30
30
  img_matches=cv::Mat.new(3, 4, cv::CV_64FC1)
31
- cv::drawMatches(img1, keypoints1, img2, keypoints2, matches, img_matches)
31
+ cv::draw_matches(img1, keypoints1, img2, keypoints2, matches, img_matches)
32
32
  cv::imshow("matches", img_matches)
33
33
  cv::waitKey(0)
data/ext/helper.rb CHANGED
@@ -94,7 +94,7 @@ def find_opencv
94
94
  opencv_version = out.read.chomp
95
95
 
96
96
  ##add opencv headers
97
- headers = if opencv_version >= "2.4.4" && opencv_version < "2.4.7.0"
97
+ headers = if opencv_version >= "2.4.4" && opencv_version < "2.4.9.0"
98
98
  ["opencv2/core/core_c.h", "opencv2/core/types_c.h",
99
99
  "opencv2/core/core.hpp", "opencv2/flann/miniflann.hpp",
100
100
  "opencv2/imgproc/imgproc_c.h", "opencv2/imgproc/types_c.h",
@@ -310,6 +310,9 @@ module OpenCV
310
310
 
311
311
  class Mat
312
312
  include Enumerable
313
+ DISPLAYED_ROWS_MAX = 100
314
+ DISPLAYED_COLS_MAX = 100
315
+
313
316
  class << self
314
317
  alias :rbind_new :new
315
318
 
@@ -332,6 +335,10 @@ module OpenCV
332
335
  Cv::Mat.new(obj.size,1,Cv::CV_32FC3,obj.data,Cv::Mat::AUTO_STEP).__obj_ptr__
333
336
  elsif obj.is_a?(Std::Vector::Fixnum)
334
337
  Cv::Mat.new(obj.size,1,Cv::CV_32SC1,obj.data,Cv::Mat::AUTO_STEP).__obj_ptr__
338
+ elsif obj.is_a?(Std::Vector::Float)
339
+ Cv::Mat.new(obj.size,1,Cv::CV_32FC1,obj.data,Cv::Mat::AUTO_STEP).__obj_ptr__
340
+ elsif obj.is_a?(Std::Vector::Double)
341
+ Cv::Mat.new(obj.size,1,Cv::CV_64FC1,obj.data,Cv::Mat::AUTO_STEP).__obj_ptr__
335
342
  elsif obj.is_a?(Array)
336
343
  h,w,e= if obj.first.is_a? Array
337
344
  if obj.find {|array| array.find(Float)}
@@ -526,19 +533,23 @@ module OpenCV
526
533
  end
527
534
 
528
535
  def pretty_print(pp)
529
- format = case type & 7
530
- when CV_8U
531
- '%3.u'
532
- else
533
- '%6.3f'
534
- end
535
- str = to_a.map do |r|
536
- str = r.map do |e|
537
- sprintf(format,e)
538
- end.join(" ")
539
- "|#{str}|"
540
- end.join("\n")
541
- pp.text str
536
+ if(rows <= DISPLAYED_ROWS_MAX && cols <= DISPLAYED_COLS_MAX)
537
+ format = case type & 7
538
+ when CV_8U
539
+ '%3.u'
540
+ else
541
+ '%6.3f'
542
+ end
543
+ str = to_a.map do |r|
544
+ str = r.map do |e|
545
+ sprintf(format,e)
546
+ end.join(" ")
547
+ "|#{str}|"
548
+ end.join("\n")
549
+ pp.text str
550
+ else
551
+ pp.text self.to_s
552
+ end
542
553
  end
543
554
 
544
555
  def each
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.14'
4
- s.date = '2014-02-16'
3
+ s.version = '0.0.15'
4
+ s.date = '2014-03-12'
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = ['Alexander Duda']
7
7
  s.email = ['Alexander.Duda@dfki.de']
metadata CHANGED
@@ -1,32 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ropencv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Alexander Duda
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-02-16 00:00:00.000000000 Z
12
+ date: 2014-03-12 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rbind
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: 0.0.24
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: 0.0.24
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: ffi
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ~>
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ~>
39
44
  - !ruby/object:Gem::Version
@@ -52,14 +57,19 @@ files:
52
57
  - CMakeLists.txt
53
58
  - License.txt
54
59
  - README.md
60
+ - examples/data/haarcascade_frontalface_alt.xml.gz
61
+ - examples/data/jolie.jpeg
62
+ - examples/data/logo.png
63
+ - examples/data/sample.jpg
64
+ - examples/data/tsukuba_l.png
65
+ - examples/data/tsukuba_r.png
55
66
  - examples/file_storage.rb
56
67
  - examples/find_homography.rb
57
68
  - examples/find_keypoints.rb
69
+ - examples/harr_cascade.rb
70
+ - examples/hog_descriptor.rb
58
71
  - examples/hough_circles.rb
59
- - examples/logo.png
60
72
  - examples/match_keypoints.rb
61
- - examples/tsukuba_l.png
62
- - examples/tsukuba_r.png
63
73
  - ext/CMakeLists.txt
64
74
  - ext/extconf.rb
65
75
  - ext/helper.rb
@@ -89,26 +99,27 @@ files:
89
99
  homepage: http://www.ropencv.aduda.eu
90
100
  licenses:
91
101
  - BSD
92
- metadata: {}
93
102
  post_install_message:
94
103
  rdoc_options: []
95
104
  require_paths:
96
105
  - lib
97
106
  required_ruby_version: !ruby/object:Gem::Requirement
107
+ none: false
98
108
  requirements:
99
- - - '>='
109
+ - - ! '>='
100
110
  - !ruby/object:Gem::Version
101
111
  version: '0'
102
112
  required_rubygems_version: !ruby/object:Gem::Requirement
113
+ none: false
103
114
  requirements:
104
- - - '>='
115
+ - - ! '>='
105
116
  - !ruby/object:Gem::Version
106
117
  version: 1.3.6
107
118
  requirements: []
108
119
  rubyforge_project:
109
- rubygems_version: 2.0.3
120
+ rubygems_version: 1.8.23
110
121
  signing_key:
111
- specification_version: 4
122
+ specification_version: 3
112
123
  summary: Ruby bindings for opencv 2.4.4 and higher
113
124
  test_files: []
114
125
  has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: ed24be2b4f9b19d2ab4170ad578b3d78d36958e4
4
- data.tar.gz: 4d4520ac61ca76f16bf3a7961f6240f2c6cf9f10
5
- SHA512:
6
- metadata.gz: 47aea3c934fe8500236d0ad798dad58d6abaeafe1fe6c0e9fdf47635da080b6549df5ca777ed99a6b68c959c7a64d91db889c17c04a1091487189fe074e88cb9
7
- data.tar.gz: b1e32dda67c171d45095c114b0550c0ebdd0c7bb46577636673be39edd95d98c965fbe208df74efa2fb32bcc5b3b4151bd492189e103c1220773d0162232e90b