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

#coding=utf-8  #这个不能没有,除非把 _vimrc 配置给解决掉

'''
1、与C++不同,在Python中灰度图的img.ndim = 2,而C++中灰度图图像的
通道数img.channel() =1
2、为什么使用np.random.random()?
这里使用了numpy的随机数,Python自身也有一个随机数生成函数。
这里只是一种习惯,np.random模块中拥有更多的方法,而Python自带
的random只是一个轻量级的模块。不过需要注意的是np.random.seed()不是线程安全的
,而Python自带的random.seed()是线程安全的。如果使用随机数时需要用到多线程,
建议使用Python自带的random()和random.seed(),
或者构建一个本地的np.random.Random类的实例。
'''


import cv2
import 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


#我自己再定义一个保存的函数,只要名字不用jpg
def savePicture(img,str):
    cv2.imwrite("C:\\Users\Administrator\\Desktop\\test\\"+str+".jpg",img)
    return

if __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()






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值