我想知道如何在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
答案 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提供。