本仓库是官方gocv的fork,原始的README请查看这里。
本fork主要修改了官方gocv接口中,部分与其他语言的结果不一致的API,同时还添加了部分新的API。
-
before
// c语言结构体 typedef struct RotatedRect { Contour pts; Rect boundingRect; Point center; Size size; double angle; } RotatedRect; // go语言结构体 type RotatedRect struct { Contour []image.Point BoundingRect image.Rectangle Center image.Point Width int Height int Angle float64 }
-
after
// c语言结构体 typedef struct RotatedRect { Contour pts; Rect boundingRect; Point2f center; Size2f size; double angle; } RotatedRect; // go语言结构体 type RotatedRect struct { Contour []image.Point BoundingRect image.Rectangle Center Point2f Width float32 Height float32 Angle float64 }
这其中主要修改 center
和 size
两个参数的类型,在C++和Python的OpenCV中,center
和 size
都是支持float
的,但是在原版gocv中,直接固定为int
,这样会导致RotatedRect
相关的操作会出现偏差。
- 相关API修改
func BoxPoints(rect RotatedRect, pts *Mat)
func MinAreaRect(points []image.Point) RotatedRect
func FitEllipse(points []image.Point) RotatedRect
C++中warpPerspective
函数包含7个可选参数,但是在gocv的接口中只给出了4个参数,后3个参数全部固定,因此当后3个参数为其他内容时,会导致计算偏差。
因此,此处新增一个WarpPerspectiveWithParams
函数,保留全部7个可调节参数,保证结果的一致性。
- 添加API
func WarpPerspectiveWithParams(src Mat, dst *Mat, m Mat, sz image.Point, flags InterpolationFlags, borderType BorderType, borderValue color.RGBA)
除了gocv提供的一些API外,还有一些个人需要的API,这里会逐渐添加,目前添加的API包括
// 矩阵与向量的广播操作,适合图像各通道独立计算
func (m *Mat) AddScalar(value Scalar)
func (m *Mat) SubtractScalar(value Scalar)
func (m *Mat) MultiplyScalar(value Scalar)
func (m *Mat) DivideScalar(value Scalar)