数学之路-python计算实战(8)-机器视觉-图像二值化
2014-07-11 18:24
501 查看
二值化
hreshold
Applies a fixed-level threshold to each array element.C++: double threshold(InputArray src, OutputArray dst, double thresh, doublemaxval, int type)Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dstC: double cvThreshold(const CvArr* src, CvArr* dst, double threshold, doublemax_value, int threshold_type)
Parameters: | src – input array (single-channel, 8-bit or 32-bit floating point). dst – output array of the same size and type as src. thresh – threshold value. maxval – maximum value to use with the THRESH_BINARY andTHRESH_BINARY_INV thresholding types. type – thresholding type (see the details below). |
---|
THRESH_BINARY_INV
THRESH_TRUNC
THRESH_TOZERO
THRESH_TOZERO_INV
Also, the special value THRESH_OTSU may be combined with one of the above values. In this case, the function determines the optimal threshold value using the Otsu’s algorithm and uses it instead of the specified thresh . The function returns the computed threshold value. Currently, the Otsu’s method is implemented only for 8-bit images.
import cv2
fn="test3.jpg"
myimg=cv2.imread(fn)
img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY)
retval, newimg=cv2.threshold(img,40,255,cv2.THRESH_BINARY)
cv2.imshow('preview',newimg)
cv2.waitKey()
cv2.destroyAllWindows()
本博客所有内容是原创,如果转载请注明来源
http://blog.csdn.net/myhaspl/
[b][/b]
[b]自适应二值化[/b]
[b]adaptiveThreshold函数可以二值化,也可以提取边缘:[/b]
Python: cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) → dst
C: void cvAdaptiveThreshold(const CvArr* src, CvArr* dst, double max_value, intadaptive_method=CV_ADAPTIVE_THRESH_MEAN_C, intthreshold_type=CV_THRESH_BINARY, int block_size=3, double param1=5 )
src – Source 8-bit single-channel image. dst – Destination image of the same size and the same type as src . maxValue – Non-zero value assigned to the pixels for which the condition is satisfied. See the details below. adaptiveMethod – Adaptive thresholding algorithm to use,ADAPTIVE_THRESH_MEAN_C orADAPTIVE_THRESH_GAUSSIAN_C . See the details below. thresholdType – Thresholding type that must be eitherTHRESH_BINARY or THRESH_BINARY_INV . blockSize – Size of a pixel neighborhood that is used to calculate a threshold value for the pixel: 3, 5, 7, and so on. C – Constant subtracted from the mean or weighted mean (see the details below). Normally, it is positive but may be zero or negative as well. block_size参数决定局部阈值的block的大小,block很小时,如block_size=3 or 5 or 7时,表现为边缘提取函数。当把block_size设为比较大的值时,如block_size=21、51等,便是二值化 下面是提取边缘 import cv2 fn="test3.jpg" myimg=cv2.imread(fn) img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY) newimg=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,5,2) cv2.imshow('preview',newimg) cv2.waitKey() cv2.destroyAllWindows() 二值化如下: import cv2 fn="test3.jpg" myimg=cv2.imread(fn) img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY) newimg=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,51,2) cv2.imshow('preview',newimg) cv2.waitKey() cv2.destroyAllWindows() |
相关文章推荐
- 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)
- 数学之路-python计算实战(12)-机器视觉-图像增强
- 数学之路-python计算实战(16)-机器视觉-滤波去噪(邻域平均法滤波)
- 数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波)
- 数学之路-python计算实战(21)-机器视觉-拉普拉斯线性滤波
- 数学之路-python计算实战(7)-机器视觉-图像产生加性零均值高斯噪声
- 数学之路-python计算实战(10)-机器视觉-透视投影
- 数学之路-python计算实战(9)-机器视觉-图像插值仿射
- 数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)
- 数学之路-python计算实战(19)-机器视觉-卷积滤波
- 数学之路-python计算实战(9)-机器视觉-图像插值仿射
- 数学之路-python计算实战(11)-机器视觉-图像增强
- 数学之路-python计算实战(22)-机器视觉-sobel非线性滤波
- 数学之路-python计算实战(18)-机器视觉-滤波去噪(双边滤波与高斯滤波 )
- 数学之路-python计算实战(7)-机器视觉-图像产生加性零均值高斯噪声
- 数学之路-python计算实战(18)-机器视觉-滤波去噪(双边滤波与高斯滤波 )
- 数学之路-python计算实战(11)-机器视觉-图像增强
- 数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)
- 数学之路-python计算实战(20)-机器视觉-拉普拉斯算子卷积滤波
- 数学之路-python计算实战(20)-机器视觉-拉普拉斯算子卷积滤波