mirror of
https://github.com/ruby-opencv/ruby-opencv
synced 2023-03-27 23:22:12 -04:00
95 lines
2.8 KiB
Ruby
95 lines
2.8 KiB
Ruby
module Cv
|
|
class CvMat < Mat
|
|
@@depth_table = {
|
|
cv8u: CV_8U,
|
|
cv8s: CV_8S,
|
|
cv16u: CV_16U,
|
|
cv16s: CV_16S,
|
|
cv32s: CV_32S,
|
|
cv32f: CV_32F,
|
|
cv64f: CV_64F
|
|
}
|
|
@@depth_table2 = @@depth_table.invert
|
|
|
|
def initialize(rows, cols, depth = CV_8U, channels = 3)
|
|
depth = @@depth_table[depth] if depth.is_a? Symbol
|
|
type = OpenCV::CV_MAKETYPE(depth, channels)
|
|
super(rows, cols, type)
|
|
end
|
|
|
|
def depth
|
|
@@depth_table2[super]
|
|
end
|
|
|
|
def channel
|
|
self.channels
|
|
end
|
|
|
|
def save_image(filename, params = {})
|
|
raise TypeError unless params.is_a? Hash
|
|
save(filename, params.to_a.flatten)
|
|
end
|
|
|
|
def line(p1, p2, options = {})
|
|
color = options[:color] || Scalar.new
|
|
super(p1, p2, color, options)
|
|
end
|
|
|
|
def line!(p1, p2, options = {})
|
|
color = options[:color] || Scalar.new
|
|
super(p1, p2, color, options)
|
|
end
|
|
|
|
def self.load(filename, iscolor = 1)
|
|
CvMat::imread_as(filename, iscolor, CvMat)
|
|
end
|
|
|
|
def encode(ext, options = {})
|
|
raise TypeError unless options.is_a? Hash
|
|
imencode(ext, options.to_a.flatten)
|
|
end
|
|
|
|
def self.decode(buf, iscolor = 1)
|
|
Mat::imdecode_as(buf, iscolor, CvMat)
|
|
end
|
|
|
|
def sobel(dx, dy, aperture_size = 3)
|
|
depth = (self.depth == :cv8u) ? CV_16S : CV_32F
|
|
super(depth, dx, dy, aperture_size)
|
|
end
|
|
|
|
def laplace(aperture_size = 3)
|
|
depth = (self.depth == :cv8u) ? CV_16S : CV_32F
|
|
laplacian(depth, aperture_size)
|
|
end
|
|
|
|
def convert_scale_abs(option = {})
|
|
alpha = option[:scale] || 1.0
|
|
beta = option[:shift] || 0
|
|
super(alpha, beta)
|
|
end
|
|
|
|
def self.add_weighted(src1, alpha, src2, beta, gamma)
|
|
OpenCV::add_weighted(src1, alpha, src2, beta, gamma)
|
|
end
|
|
|
|
# cv::cvtColor
|
|
[:BGR2BGRA, :RGB2RGBA, :BGRA2BGR, :RGBA2RGB, :BGR2RGBA, :RGB2BGRA,
|
|
:RGBA2BGR, :BGRA2RGB, :BGR2RGB, :RGB2BGR, :BGRA2RGBA, :RGBA2BGRA,
|
|
:BGR2GRAY, :RGB2GRAY, :GRAY2BGR, :GRAY2RGB, :GRAY2BGRA, :GRAY2RGBA,
|
|
:BGRA2GRAY, :RGBA2GRAY, :BGR2BGR565, :RGB2BGR565, :BGR5652BGR,
|
|
:BGR5652RGB, :BGRA2BGR565, :RGBA2BGR565, :BGR5652BGRA, :BGR5652RGBA,
|
|
:GRAY2BGR565, :BGR5652GRAY, :BGR2BGR555, :RGB2BGR555, :BGR5552BGR,
|
|
:BGR5552RGB, :BGRA2BGR555, :RGBA2BGR555, :BGR5552BGRA, :BGR5552RGBA,
|
|
:GRAY2BGR555, :BGR5552GRAY, :BGR2XYZ, :RGB2XYZ, :XYZ2BGR, :XYZ2RGB,
|
|
:BGR2YCrCb, :RGB2YCrCb, :YCrCb2BGR, :YCrCb2RGB, :BGR2HSV, :RGB2HSV,
|
|
:BGR2Lab, :RGB2Lab, :BayerBG2BGR, :BayerGB2BGR, :BayerRG2BGR, :BayerGR2BGR,
|
|
:BayerBG2RGB, :BayerGB2RGB, :BayerRG2RGB, :BayerGR2RGB, :BGR2Luv, :RGB2Luv,
|
|
:BGR2HLS, :RGB2HLS, :HSV2BGR, :HSV2RGB, :Lab2BGR, :Lab2RGB, :Luv2BGR, :Luv2RGB,
|
|
:HLS2BGR, :HLS2RGB].each do |method_name|
|
|
define_method method_name do
|
|
cvt_color(eval("COLOR_#{method_name}"), 0)
|
|
end
|
|
end
|
|
end
|
|
end
|