# -*- coding: utf-8 -*
import cv2
def imshow(imgname,img):
h ,w = img.shape[:2]
cv2.namedWindow(imgname, cv2.WINDOW_NORMAL)
cv2.resizeWindow(imgname, int(w * 0.3), int(h * 0.3))
cv2.imshow(imgname, img)
def SlidWindow(img,winSize,winStep):
retGlobal, im21 = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
print("retGlobal:", retGlobal)
# 定义初始值
x = 0
y = 0
w = img.shape[1]
h = img.shape[0]
while(1):#整个循环过程是个死循环
if(x + winSize + winStep > w):#图的右边边界,42可以自己给定,6是步进的
x = 0
y += winStep#步进为6
x += winStep
if(y + winSize > h):#不满足条件,退出结束
break
else:
x = x + winStep
# print(x, y, x + winSize, y + winSize)
imcopy = img.copy()
imcopy2 = img.copy()
imcopyRoi = imcopy2[y:y+ winSize,x:x+ winSize]
cv2.rectangle(imcopy, (x, y), (x + winSize, y + winSize), (0, 0, 0), 5)
retLocal, im3 = cv2.threshold(imcopyRoi, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
thre = 0
if retGlobal > retLocal:
thre = retGlobal
else:
thre = retLocal
ret, result = cv2.threshold(imcopyRoi, thre, 255, cv2.THRESH_BINARY)
imshow("result", result) # 显示
imshow("imcopy",imcopy)#显示
cv2.waitKey(10) # 按0退出
if __name__ == '__main__':
# img = cv2.imread('20200608\\20200608183812.jpg',0) #识别的好的
img = cv2.imread('20200608\\202006081838126.jpg', 0) # 识别的不好的
# img = cv2.Canny(img, 100, 200)
# dst = cv2.equalizeHist(img)
winSize = 100
winStep = 20
SlidWindow(img, winSize, winStep)
滑窗法
最新推荐文章于 2024-03-16 16:36:57 发布