android

android opencv之旅(三)灰化和阈值化处理

2018-06-22  本文已影响111人  风少侠

我们知道了灰度图像比彩色图像包含的信息量要小很多,所以很多情况下我们可以把图像灰化以后再处理,可以减小计算量。

灰化

Mat dst = new Mat();
Imgproc.cvtColor(temp, dst, Imgproc.COLOR_BGR2GRAY);

cvtColor函数是opencv中的图片色彩转换的函数,最后一个参数代表转换类型,BGR、BGRA、GRAY等之间的相互转换。

阈值化

阈值化也可以称为二值化,把每个像素值都和一个预定的阈值比较,再根据结果调整像素值。

Imgproc.threshold(src, dst, thresh, maxval, type);

参数列表:

什么才是符合条件?
首先说一下二值化的几种模式:

type 说明
THRESH_BINARY 超过thresh的像素点值被设置为maxval,反之设为0
THRESH_BINARY_INV 超过thresh的像素点值被设置为0,反之设为maxval
THRESH_TRUNC 超过thresh的像素点值被设置为thresh,反之不变
THRESH_TOZERO 超过thresh的像素点值不变,反之设为0
THRESH_TOZERO_INV 超过thresh的像素点值设为0,反之不变
THRESH_MASK
THRESH_OTSU 使用otsu算法选取一个最优的阈值,配合前五种type使用
THRESH_TRIANGLE 使用triangle算法选取一个最优的阈值,配合前五种type使用

示例代码:

Mat dst = new Mat();
Imgproc.threshold(src, dst, 60, 255, Imgproc.THRESH_BINARY);

这段代码的意思就是将原灰度图中色值大于60的点的色值变成255,小于60的点变成0,使得图片呈明显的黑白化。


二值化.gif
上一篇下一篇

猜你喜欢

热点阅读