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度)为例:
对此,你可以采用下面的方式来解决:
使用python将图片改为灰度图或黑白图有三种方式:1. 使用cv2库将图片改为灰度图2. 利用PIL库将图片改为黑白图3. 利用PIL库将图片改为灰度图。
Python [7] 已经成为最受欢迎的程序设计语言之一。自从2004年以后,python的使用率呈线性增长。Python 2于2000年10月16日发布,稳定版本是Python 2.7。Python 3于2008年12月3日发布,不完全兼容Python 2。 [6] 2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。