我正在将使用旧OpenCV包装器的应用程序转换为EmguCV(更新且非常好的包装器)。
到目前为止,一切都很好,只是在我的一堂课上,我使用了3个轨迹条来调整一些过滤器的阈值。轨迹条是在旧包装中使用此代码创建的,这正是它在openCV C++中创建的方式
cvlib.cvCreateTrackbar("minH", "Couleur", ref dValueMin, 256, new cvlib.CvTrackbarDelegate(onTrackbarSlide));
轨迹条是使用OpenCV的HighGui创建的,轨迹条在我很确定Emgu团队会将其从包装中删除,并用更好的东西替换它,但我在文档中找不到任何关于这方面的信息。有人能建议我如何做到这一点吗?
谢谢!
p.S.:我已经在谷歌上搜索过了,所有的问题都没有答案。。。我希望在Stack Overflow上有更多的运气。
如果仍然相关
public delegate void CallbackDelegate(int pos);
[DllImport("opencv_highgui249", CallingConvention = CallingConvention.Cdecl, EntryPoint = "cvCreateTrackbar")]
public static extern int CvCreateTrackbar([MarshalAs(UnmanagedType.LPStr)] String trackbar_name, [MarshalAs(UnmanagedType.LPStr)] String window_name,
[In,Out] ref int value, int count, [MarshalAs(UnmanagedType.FunctionPtr)] CallbackDelegate callbackPtr);
public static IntPtr capture = IntPtr.Zero;
public static void myTrackbarCallback(int pos)
{
CvInvoke.cvSetCaptureProperty(capture, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_POS_FRAMES, pos);
}
...
CallbackDelegate cbd = new CallbackDelegate(myTrackbarCallback);
...
CvCreateTrackbar("Position", "original", ref currentPosition, frames, cbd);