451xxx

自学python-opencv(3)超大图像二值化

import  cv2
import numpy as np
def large_image_binary(images):
#超大图像二值化
print(images.shape)
cw=128
ch=128
h,w=images.shape[0:2]
gray=cv2.cvtColor(images,cv2.COLOR_BGR2GRAY)
for row in range(0,h,ch):
for col in range (0,w,cw):
#获取分块
roi=gray[row:row+ch,col:col+cw]
print(np.std(roi), np.mean(roi))
#针对空白图像,不处理,可以提高效率或者去噪
dev=np.std(roi)
#小于15的值 过滤成白色
if dev<15:
gray[row:row + ch, col:col + cw] = 255
else:
#局部阈值也会很清晰
#dst=cv2.adaptiveThreshold(roi,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,27,22)
#全局阈值采用这种
'''
并且在cv2.threshold的方法参数中还得加上语句cv2.THRESH_OTSU

这里面第三个参数maxval参数表示与THRESH_BINARY和THRESH_BINARY_INV阈值类型一起使用设置的最大值。

而我们使用的灰度图像最大则为255,所以设置为255即可

THRESH_OTSU最适用于双波峰 THRESH_TRIANGLE最适用于单个波峰,最开始用于医学分割细胞等'''
ret,dst=cv2.threshold(roi,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)
gray[row:row + ch, col:col + cw] = dst
#np.mean 数组求均值
#print(np.std(dst),np.mean(dst))
cv2.imwrite("./images/shufathreshold.png",gray)



print("-----------hi python-------------")
img=cv2.imread("./images/shufa.jpg")
cv2.namedWindow("imput images",cv2.WINDOW_AUTOSIZE)
cv2.imshow("imput images",img)
large_image_binary(img)
cv2.waitKey(0)
cv2.destroyWindow('all')
--------------------------------------------------------------------------------------------

1.可以采用分块方法

2.先缩放处理就行二值化,然后还原大小

 


numpy.mean(a, axis, dtype, out,keepdims )
mean()函数功能:求取均值
经常操作的参数为axis,以m * n矩阵举例:
axis 不设置值,对 m*n 个数求均值,返回一个实数
axis = 0:压缩行,对各列求均值,返回 1* n 矩阵
axis =1 :压缩列,对各行求均值,返回 m *1 矩阵
--------------------------
import numpy as np
print(np.std(binary),np.mean(binary))

通过上面获取图像的标准差和平均值,当标准差为0,平均值为255时,代表该区域为空白区域

arr = [1, 2, 3, 4, 5]
 # 均值
np.mean(arr)
# 方差
np.var(arr)
# 标准差
np.std(arr)
-----------------------------------------------------------------------------------
binary = cv.adaptiveThreshold(roi, 255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY, 127, 20)  #局部阈值
-------------------------------------------------------------------------------------
ret,binary = cv.threshold(roi, 0, 255,cv.THRESH_BINARY|cv.THRESH_OTSU)  #全局阈值
-----------------------------------------------------------------------------------

 

 














posted on 2020-09-25 22:27  451xxx  阅读(56)  评论(0)    收藏  举报

导航

/* 看板娘 */