【问题标题】:Flipping an image horizontally in OpenCVSharp在 OpenCVSharp 中水平翻转图像
【发布时间】:2012-03-18 12:45:50
【问题描述】:

我最近将我的项目库从 Emgu CV 转移到了 OpenCVSharp。 Emgu CV中翻转图像(使用pictureBox)的代码是:

Image<Bgr,Byte> f = _capture.QueryFrame().Flip(Emgu.CV.CvEnum.FLIP.HORIZONTAL)

我尝试在 OpenCVSharp 中使用Flip(CvArr dst, FlipMode flip_mode) 方法,但没有成功。 我不知道dst 用什么。

【问题讨论】:

    标签: c# .net opencv emgucv flip


    【解决方案1】:

    OpenCVSharp 中的 Flip 方法声明为 here。

    EmguCV 中的 Flip 方法在第 4162 行 here 上声明。它将 dst 设置为 null(根据其定义,IntPtr.Zero in)。

    关于翻转的原始 OpenCV 文档是here。

    对于dst,请指定cvArr(IplImage 或cvMat 与您调用Flip 的cvArr 大小相同。

    这意味着翻转后的数组将放置在您作为dst 传入的cvArr 中,而您在OpenCV 中的源数组src 和OpenCVSharp 中的this 将保持不变。

    如果dst 为空,则数组将原地翻转。这意味着您的源数组将更改为翻转数组。

    如果你想要和以前一样的行为,你可以安全地调用myImage.Flip(null, FlipMode.Y);,其中myImage是你给定的IplImage或cvMat。

    如果您使用的是旧版本的 OpenCVSharp ,那么 Flip 也会使用 source 参数,而不是从调用对象中获取它。例如Flip(img, null, FlipMode FlipMode.Y);

    【讨论】:

    • 我认为你在最后的声明中所说的对我来说已经足够了。但是,它不起作用。我的代码是img = img.Flip(null, FlipMode.Y);,其中img定义为IplImage。
    • 什么不起作用?您不需要分配,因为传递 null 会修改图像。什么版本的 OpenCVSharp ?
    • 谢谢!我是愚蠢的。任务没有必要。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 2023-03-25
    • 2019-11-26
    • 2011-06-09
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多