我最近将我的项目库从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
。
OpenCVSharp中的Flip方法声明为here。
EmguCV中的Flip方法在4162行here上声明。它将dst设置为null(IntPtr.Zero in其定义)。
翻转的原始OpenCV文档是here。
对于dst
,要么指定一个cvArr
(无论IplImage
还是cvMat
与你称之为cvArr
的Flip
大小相同。
这意味着翻转的数组将被放置在您传入的cvArr
中,如dst
,OpenCV中的源数组src
和OpenCVSharp中的this
将保持不变。
如果dst
为null,则数组将被翻转到位。这意味着您的源数组将更改为翻转数组。
如果你想要和以前一样的行为,你可以安全地调用myImage.Flip(null, FlipMode.Y);
,其中myImage是你给定的IplImage
或cvMat
。
如果您使用的是旧版OpenCVSharp,那么Flip也会获取源参数,而不是从调用对象获取它。例如,Flip(img, null, FlipMode FlipMode.Y);