from matplotlib import pyplot as plt # cv2.imread()用于读取图片文件 # imread函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形式 image = cv2.imread('shengwuxibao.jpg') # cv2.cvtColor(p1,p2) 是颜色空间转换函数,p1是需要转换的图片,p2是转换成何种格式。 # cv2.COLOR_BGR2GRAY 将BGR格式转换成灰度图片 gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) # plt.subplot(131) # 其中131表示我们整个图是由一行三列的子图构成的 # cv2.imShow()函数可以在窗口中显示图像 plt.subplot(131),plt.imshow(image,'gray') # xticks :设置x轴 y轴的位置 plt.title('source image'),plt.xticks([]),plt.yticks([]) # hist:在x轴上绘制定量数据的分布特征(用于连续数据,而柱状图用于离散数据) # image.ravel():将多为数组降为一维数组。 256是bins 每32为是1bin 总共8个bin plt.subplot(132),plt.hist(image.ravel(),256) plt.title('Histogram'),plt.xticks([]),plt.yticks([]) #v2.threshold()函数:在opencv中比较常用,但一开始不是很理解是什么意思。 #Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst #src:表示的是图片源 #thresh:表示的是阈值(起始值) #maxval:表示的是最大值 #type:表示的是这里划分的时候使用的是什么类型的算法**,常用值为0(cv2.THRESH_BINARY)** # 返回两个参数 ret1 应该是阈值分割点 th1 应该是 经过处理后的图片 # cv2.THRESH_BINARY(黑白二值) # cv2.THRESH_BINARY_INV(黑白二值反转) ret1,th1 = cv2.threshold(gray,0,255,cv2.THRESH_OTSU) print('ret1',ret1) print('th1',th1) plt.subplot(133),plt.imshow(th1,'gray') plt.title('OTSU,threshold is'+str(ret1)),plt.xticks([]),plt.yticks([]) plt.show()
截图: