2

我想知道如何将 cvCanny 与 ruby​​-opencv 一起使用。我找不到任何合适的文档。这就是我必须要做的……</p>

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
4

2 回答 2

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

cvtColor那是因为您应该使用with 参数将图像转换为灰度(单通道图像)CV_BGR2GRAY。Canny 只能应用于此类图像。

于 2012-12-08T19:24:17.037 回答
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 提供。

于 2016-06-26T00:51:14.200 回答