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