python进行p图的程序_使用Python进行简单的图像处理

1、环境搭建

python安装好后(我的版本是2.7),需要在安装Numpy和opencv(注意对应的版本号)

1)numpy的安装:

在http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy网址下载Numpy的whl包,使用pip install D:\TDDownload\Python\numpy-1.10.4+mkl-cp27-cp27m-win32.whl命令安装

2)opencv的安装:

下载解压opencv后,将解压目录opencv文件夹中,build->python->2.7->x86下的文件cv2.pyd 复制到python2.7\Lib\site-packages 中

2、PyOpencv和CV2

网上看到的很多代码都用到一些highgui等等,这些都是PyOpencv的,在cv2中找不到。cv2扩展库是针对OpenCV 2版本以后创建的,cv2对图像的操作对象是Numpy数组,而原来的是cvmat和iplimage。

打开一个图像的方法不同:

array=cv2.imread("E://1.jpg")

iplimage = cv.LoadImage("E://1.jpg")

cv2里创建图片的方法使用numpy的函数:image= np.zeros(img.shape, np.uint8)

两个库的操作对象不同,虽然可以转换但还是不要混着用,cv2中找不到的一些方法,可以cv2里的cv2.cv里找到。

3、二值化:

图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。

#创建一个单通道的图片

new1= cv.CreateImage(cv.GetSize(image1), image1.depth, 1)

#将图片转换为一个灰度图

cv.CvtColor(image1,new1,cv.CV_BGR2GRAY)

#将灰度图进行二值化

cv.Threshold(new1, new1,91, 255, cv.CV_THRESH_BINARY_INV)

函数说明

Threshold(src, dst, threshold,max_value,threshold_type);

函数说明:

第一个参数表示输入图像,必须为单通道灰度图。

第二个参数表示输出的边缘图像,为单通道黑白图。

第三个参数表示阈值,超过这个阈值即判定为黑或白

第四个参数表示最大值。

第五个参数表示运算方法。

用cv2的实现:

image1 =cv2.imread(img1)

#灰度化

grey = cv2.cvtColor(image1,cv2.COLOR_BGR2GRAY)

#二值化(参数顺序和cv有些不同)

cv2.threshold(grey1,threshold, 255, cv2.THRESH_BINARY,grey1)

4、腐蚀和膨胀

腐蚀和膨胀是图像的形态学处理中最基本的操作,之后遇见的开操作和闭操作都是腐蚀和膨胀操作的结合运算。

#结构元素

element_shape = cv.CV_SHAPE_RECT

pos=2

element =cv.CreateStructuringElementEx(pos*2+1, pos*2+1, pos, pos,element_shape)

结构元素参数依次是结构元素类型(OpenCV中提供了宏定义MORPH_RECT、MORPH_CROSS和MORPH_ELLIPSE表示)、结构元素大小

#腐蚀

cv.Erode(new2,new2,element,2)

#膨胀

cv.Dilate(new2,new2,element,2)

Cv2的实现:

#腐蚀

cv2.erode(blur1,kernel)

#膨胀

cv2.dilate(blur1,kernel)

开运算是对图像先腐蚀后膨胀

闭运算是对图像先膨胀后腐蚀

开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不变。

闭运算能够填平小湖(小孔),弥合小裂缝,而总的位置和形状不变。

#开运算

cv.MorphologyEx(new1, new1, None, element, cv.CV_MOP_OPEN)

#闭运算

cv.MorphologyEx(new2, new2, None, element, cv.CV_MOP_CLOSE)

cv2的实现

open1 = cv2.morphologyEx(blur1, cv2.MORPH_OPEN, kernel)

result1 = cv2.morphologyEx(open1, cv2.MORPH_CLOSE, kernel)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值