gocv截取图片
C++的opencv库是可以直接截取某个图片的部分的,比如:
Mat src = imread("image.png");
Rect crop(1, 1, 64, 67);
Mat rez = src(crop);
如上代码,读取image.png并截取其中的矩形部分。
但是gocv中的Mat并没有像C++那样的构造方法,传入一个矩形Rect就可以构造一个Mat。
Google了一下,发现Github上面有人提了issue,正是我想要的答案:https://github.com/hybridgroup/gocv/issues/535
解决方法是这样的,使用Mat.Region()方法:
croppedMat := img.Region(image.Rect(100, 100, 200, 200))
resultMat := croppedMat.Clone()
示例
我这里有一个图片image.png如下图:
然后现在我要把它横着截取上面一半出来:
func main() {
src := gocv.IMRead("image.png", gocv.IMReadColor)
croppedMat := src.Region(image.Rect(0, 0, src.Cols(), src.Rows()/2))
resultMat := croppedMat.Clone()
gocv.IMWrite("croppedMat.png", resultMat)
}
运行之后生成一个croppedMat.png,如下图: