方法:将cvCanny与ruby-opencv一起使用

时间:2012-12-08 19:18:17

标签: ruby opencv

我想知道如何在ruby-opencv中使用cvCanny。我找不到任何适当的文件。 这就是我所要做的......

require "rubygems"
require "opencv"
include OpenCV

original_window = GUI::Window.new "original"
hough_window = GUI::Window.new "hough circles"

image = IplImage::load "stuff.jpg"
gray = image.canny(0.3, 0.8)

hough_window.show gray
GUI::wait_key

错误:

$ ruby houghcircle.rb
houghcircle.rb:11:in `canny': /Users/someuser/Development/Workspaces/2012/Libs/OpenCV-2.4.3/modules/imgproc/src/canny.cpp:282: error: (-215) src.size == dst.size && src.depth() == CV_8U && dst.type() == CV_8U in function cvCanny (OpenCV::CvStsAssert)
    from houghcircle.rb:11

2 个答案:

答案 0 :(得分:2)

error: (-215) src.size == dst.size && src.depth() == CV_8U && dst.type() == CV_8U in function cvCanny (OpenCV::CvStsAssert)

这是因为您应该使用带参数cvtColor的{​​{1}}将图像转换为灰度(单通道图像)。 Canny只能应用于此类图像。

答案 1 :(得分:0)

受到来自stackoverflow.com的@ArtemStorozhuk和github.com上的@ ser1zw提供的解决方案的启发。
我在Ruby 2.3,opencv 2.4.13和ruby-opencv 0.0.16的环境下尝试了以下解决方案。

mat = OpenCV::CvMat.load("image.jpg") # load a image in 3ch    
gray = mat.BGR2GRAY  # same as cvCvtColor(mat, gray, CV_BGR2GRAY)   

参考:
1. @ArtemStorozhuk提供的解决方案。
2. https://github.com/ruby-opencv/ruby-opencv/issues/9由@ ser1zw在github.com提供。