vim+python+OpenCV学习三 : 对图像的像素处理

来源:互联网 发布:via浏览器 知乎 编辑:程序博客网 时间:2024/05/22 01:31
#coding=utf-8  #这个不能没有,除非把 _vimrc 配置给解决掉'''1、与C++不同,在Python中灰度图的img.ndim = 2,而C++中灰度图图像的通道数img.channel() =12、为什么使用np.random.random()?这里使用了numpy的随机数,Python自身也有一个随机数生成函数。这里只是一种习惯,np.random模块中拥有更多的方法,而Python自带的random只是一个轻量级的模块。不过需要注意的是np.random.seed()不是线程安全的,而Python自带的random.seed()是线程安全的。如果使用随机数时需要用到多线程,建议使用Python自带的random()和random.seed(),或者构建一个本地的np.random.Random类的实例。'''import cv2import numpy as np#椒盐效果函数def salt(img,n):    for k in range(n): # n的个数就是循环的次数也是椒盐点的个数        i=int(np.random.random()*img.shape[1]);  # img.shape[]中,1 是l列轴,0 是行轴        j=int(np.random.random()*img.shape[0]);        if img.ndim==2: #通道数为2 时            img[j,i]=255        elif img.ndim==3:            img[j,i,0]=255            img[j,i,1]=255            img[j,i,2]=255                return img#我自己再定义一个保存的函数,只要名字不用jpgdef savePicture(img,str):    cv2.imwrite("C:\\Users\Administrator\\Desktop\\test\\"+str+".jpg",img)    returnif __name__=='__main__':     #这句话有两个效果,一是在被调用时不执行其下语句    #其二也相当与主函数,把该执行的给阔起来,其效果和C中的main函数差不多    img=cv2.imread("E:\\testpictures\\meizilittle.jpg")    saltImage=salt(img,5000)    savePicture(saltImage,"saltImage")    cv2.imshow("Salt",saltImage)    cv2.waitKey(0)    cv2.destroyAllWindows()

0 0
原创粉丝点击