python将图像分割成两半

Python017

python将图像分割成两半,第1张

import os

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年度语言。