1
2function createButton(bar_name::String, on_change, userdata, type::Int32 = 0, initial_button_state::Bool = false)
3    func =  (x)->on_change(x, userdata)
4    CxxWrap.gcprotect(userdata)
5    CxxWrap.gcprotect(func)
6    CxxWrap.gcprotect(on_change)
7    return jl_cpp_cv2.createButton(bar_name,func, type, initial_button_state)
8end
9
10function setMouseCallback(winname::String, onMouse, userdata)
11    func =  (event, x, y, flags)->onMouse(event, x, y, flags, userdata)
12    CxxWrap.gcprotect(userdata)
13    CxxWrap.gcprotect(func)
14    CxxWrap.gcprotect(onMouse)
15    return jl_cpp_cv2.setMouseCallback(winname,func)
16end
17
18function createTrackbar(trackbarname::String, winname::String, value::Ref{Int32}, count::Int32, onChange, userdata)
19    func =  (x)->onChange(x, userdata)
20    CxxWrap.gcprotect(userdata)
21    CxxWrap.gcprotect(func)
22    CxxWrap.gcprotect(onChange)
23    return jl_cpp_cv2.createTrackbar(trackbarname, winname, value, count, func)
24end
25
26function CascadeClassifier(filename::String)
27	return cpp_to_julia(jlopencv_cv_cv_CascadeClassifier_cv_CascadeClassifier_CascadeClassifier(julia_to_cpp(filename)))
28end
29
30
31function detect(cobj::cv_Ptr{T}, image::InputArray, mask::InputArray) where {T <: Feature2D}
32	return cpp_to_julia(jlopencv_cv_cv_Feature2D_cv_Feature2D_detect(julia_to_cpp(cobj),julia_to_cpp(image),julia_to_cpp(mask)))
33end
34detect(cobj::cv_Ptr{T}, image::InputArray; mask::InputArray = (CxxMat())) where {T <: Feature2D} = detect(cobj, image, mask)
35
36
37function detectMultiScale(cobj::CascadeClassifier, image::InputArray, scaleFactor::Float64, minNeighbors::Int32, flags::Int32, minSize::Size{Int32}, maxSize::Size{Int32})
38	return cpp_to_julia(jlopencv_cv_cv_CascadeClassifier_cv_CascadeClassifier_detectMultiScale(julia_to_cpp(cobj),julia_to_cpp(image),julia_to_cpp(scaleFactor),julia_to_cpp(minNeighbors),julia_to_cpp(flags),julia_to_cpp(minSize),julia_to_cpp(maxSize)))
39end
40detectMultiScale(cobj::CascadeClassifier, image::InputArray; scaleFactor::Float64 = Float64(1.1), minNeighbors::Int32 = Int32(3), flags::Int32 = Int32(0), minSize::Size{Int32} = (Size{Int32}(0,0)), maxSize::Size{Int32} = (Size{Int32}(0,0))) = detectMultiScale(cobj, image, scaleFactor, minNeighbors, flags, minSize, maxSize)
41
42function empty(cobj::CascadeClassifier)
43	return cpp_to_julia(jlopencv_cv_cv_CascadeClassifier_cv_CascadeClassifier_empty(julia_to_cpp(cobj)))
44end
45
46function SimpleBlobDetector_create(parameters::SimpleBlobDetector_Params)
47	return cpp_to_julia(jlopencv_cv_cv_SimpleBlobDetector_create(julia_to_cpp(parameters)))
48end
49SimpleBlobDetector_create(; parameters::SimpleBlobDetector_Params = (SimpleBlobDetector_Params())) = SimpleBlobDetector_create(parameters)
50