Перевернуть изображение по горизонтали в OpenCVSharp - PullRequest
1 голос
/ 18 марта 2012

Я недавно переместил свою библиотеку проектов из Emgu CV в OpenCVSharp. Код для переворачивания изображения (используя pictureBox) в Emgu CV был:

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

Я пытался использовать метод Flip(CvArr dst, FlipMode flip_mode) в OpenCVSharp, но тщетно. Я не уверен, что использовать для dst.

1 Ответ

1 голос
/ 18 марта 2012

Метод Flip в OpenCVSharp объявлен здесь .

Метод Flip в EmguCV объявлен в строке 4162 здесь .Он устанавливает значение dst в null (IntPtr.Zero в соответствии с его определением).

Исходная документация OpenCV по флипу: здесь .

Для dst либо укажите cvArr (или IplImage или cvMat того же размера, что и cvArr, на который вы звоните Flip.

Это означает, что перевернутый массив будет помещен в cvArr, который вы передаете вкак dst и ваш исходный массив src в OpenCV и this в OpenCVSharp останутся без изменений.

Если dst равен нулю, то массив будет перевернут на месте. Это означает, что ваш исходный массивизменится на перевернутый массив.

Если вам нужно то же поведение, что и раньше, вы можете смело вызывать myImage.Flip(null, FlipMode.Y);, где myImage - ваш IplImage или cvMat.

Если вы используете более старую версию OpenCVSharp, то Flip также принимает аргумент источника вместо получения его от вызывающего объекта. Например: Flip(img, null, FlipMode FlipMode.Y);

...