#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()
vim+python+OpenCV学习三 : 对图像的像素处理
最新推荐文章于 2024-01-13 22:41:48 发布