import re
import sys
import time
import random
# add system headers here...
#导入cv模块
import cv2 as cv
#读取图像,支持 bmp、jpg、png、tiff 等常用格式
height = 0
length = 0
key = 0
picPath = "E:\\python3.4.0-amd\\project\\imageProcess\\tamamo.jpg"
if not os.path.exists(picPath):
print("picture not exists! exit!")
sys.exit()
srcImage = cv.imread(picPath)
if srcImage is None:
print("read picture failed! exit!")
sys.exit()
size = srcImage.shape
height = size[0]
length = size[1]
print("srcImage: height(%u) length(%u)"%(height,length))
#显示原图
#cv.imshow("srcImage",srcImage)
#创建窗口并显示图像
mid = int(length / 2)
leftImage = srcImage[0:height, 0:mid]
cv.namedWindow("leftImage",cv.WINDOW_NORMAL)
cv.resizeWindow("leftImage", mid, height)
cv.imshow("leftImage",leftImage)
rightIamge = srcImage[0:height, mid:length]
cv.namedWindow("rightIamge",cv.WINDOW_NORMAL)
cv.resizeWindow("rightIamge", mid, height)
cv.imshow("rightIamge",rightIamge)
cv.waitKey(0)
#释放窗口
cv.destroyAllWindows()
上一期提到的图像阈值处理,不仅可以实现获取你想要的目标区域(作为mask使用),还可以帮你获取图像的边缘信息,那关于图像边缘,本期将从另外的角度来处理。对边缘信息与背景差异较大的场景,你也可以使用threshold分割,不过若阈值不好选取,Laplacian梯度算子就不失为一直尝试方案,而且上网看看,关于Laplacian算子还可以用来判断图像的模糊程度,这个在相机的自动对焦当中,是否可以尝试判断下?
不过处理的效果并不理想,图像低灰阶部分边缘信息丢失严重。
对于sobel,laplacian算子我们可以使用cv2.filter2D()来实现,配置相应的核模板即可,如实现提取水平方向边缘信息:
你可以依据实际的应用需求来配置提取边缘的角度信息,这里以45度角(垂直向下逆时针旋转45度)为例:
对此,你可以采用下面的方式来解决: