当前位置:   article > 正文

Opencv+Python学习记录2:图像处理的基本操作——像素处理(代码示例)_python对像素点的c通道进行处理,怎么操作

python对像素点的c通道进行处理,怎么操作

像素处理是昨天和今天学习的内容。

像素是图像构成的基本单位,像素处理是图像处理的基本操作,可以通过位置索引的形式对图像内的元素进行访问,处理。

一,二值图像和灰度图像

1.使用Numpy库生成一个元素值都是0的二维数组,用来模拟一幅黑色图像

  1. # 使用Numpy库生成一个元素值都是0的二维数组,用来模拟一幅黑色图像
  2. import cv2
  3. import numpy as np
  4. img=np.zeros((8,8),dtype=np.uint8)
  5. print("imag=\n",img)
  6. cv2.imshow("one",img)
  7. print("读取像素点img[0,3]=",img[0,3])
  8. img[0,3]=255
  9. print("修改后img=\n",img)
  10. print("读取修改后像素点img[0,3]=",img[0,3])
  11. cv2.imshow("two",img)
  12. cv2.waitKey()
  13. cv2.destoryAllWindows()

输出如下:

2.读取一个灰度图像,并对其像素进行访问,修改 

  1. # 读取一个灰度图像,并对其像素进行访问,修改
  2. import cv2
  3. img=cv2.imread("rainbow5.bmp",0)
  4. cv2.imshow("before",img)
  5. for i in range(10,100):
  6. for j in range(80,100):
  7. img[i,j]=255
  8. cv2.imshow("after",img)
  9. cv2.waitKey()
  10. cv2.destoryAllWindows()
  11. # 因为此处我们没有灰度图像,故此处暂不执行

因为此处博主没有灰度图像,所以没有执行这个部分,感兴趣的朋友可以找灰度图像试一试。

二,彩色图像

1.使用Numpy生成三维数组,用来观察三个通道值的变化情况

  1. # 使用Numpy生成三维数组,用来观察三个通道值的变化情况
  2. # 结果是生成三张图片,蓝色,绿色,红色
  3. import numpy as np
  4. import cv2
  5. # -----------------------蓝色通值道--------------
  6. blue=np.zeros((300,300,3),dtype=np.uint8)
  7. blue[:,:,0]=255
  8. print("blue=\n",blue)
  9. cv2.imshow("blue",blue)
  10. # -----------------------绿色通值道--------------
  11. green=np.zeros((300,300,3),dtype=np.uint8)
  12. green[:,:,1]=255
  13. print("green=\n",green)
  14. cv2.imshow("green",green)
  15. # -----------------------红色通值道--------------
  16. red=np.zeros((300,300,3),dtype=np.uint8)
  17. red[:,:,2]=255
  18. print("red=\n",red)
  19. cv2.imshow("red",red)
  20. # -----------------------释放窗口--------------
  21. cv2.waitKey()
  22. cv.destoryAllWindows()

输出如下:

 2.使用Numpy生成一个三维数组,用来观察三个通道值的变化情况

  1. # 使用Numpy生成一个三维数组,用来观察三个通道值的变化情况
  2. # 生成一张三色图
  3. import numpy as np
  4. import cv2
  5. img=np.zeros((300,300,3),dtype=np.uint8)
  6. img[:,0:100,0]=255
  7. img[:,100:200,1]=255
  8. img[:,200:300,2]=255
  9. print("img=\n",img)
  10. cv2.imshow("img",img)
  11. cv2.waitKey()
  12. cv2.destoryAllWindows()

 输出如下:

3.使用Numpy生成一个三位数组,用来模拟一幅BGR模式的彩色图像,并对其进行访问,修改 

  1. # 使用Numpy生成一个三位数组,用来模拟一幅BGR模式的彩色图像,并对其进行访问,修改
  2. import numpy as np
  3. img=np.zeros((2,4,3),dtype=np.uint8)#利用zeros()生成一个2*4*3的数组,对应“2行4列3个通道”的BGR图像
  4. print("img=\n",img)# 打印图像当前的值
  5. print("读取像素点img[0,3]=",img[0,3])#访问第0行,第3列位置上的B通道,G通道,R通道三个像素点
  6. print("读取像素点img[1,2,2]=",img[1,2,2])#访问第1行,第2列第2个通道位置上的像素点
  7. img[0,3]=255# 修改img中第0行第3列位置上的像素值,三个通道的像素值都会被修改为255
  8. img[0,0]=[66,77,88]# 修改img中第0行第0列位置上的像素值,三个通道的像素值都会被修改为[66,77,88]
  9. img[1,1,1]=3# 修改img中第1行第1列第1个通道(G通道)位置上的像素值,将其修改为3
  10. img[1,2,2]=4# 修改img中第1行第2列第2个通道(R通道)位置上的像素值,将其修改为4
  11. img[0,2,0]=5# 修改img中第0行第2列第0个通道(B通道)位置上的像素值,将其修改为5
  12. # 最后两行使用print语句观察img和img[1,2,2]的值
  13. print("修改后img\n",img)
  14. print("读取修改后像素点img[1,2,2]=",img[1,2,2])
'
运行

输出如下:

 4.读取一幅彩色图像,并对其像素进行访问,修改

  1. # 读取一幅彩色图像,并对其像素进行访问,修改
  2. import cv2
  3. img=cv2.imread("moon.png")
  4. cv2.imshow("before",img)
  5. print("访问img[0,0]=",img[0,0])
  6. print("访问img[0,0,0]=",img[0,0,0])
  7. print("访问img[0,0,1]=",img[0,0,1])
  8. print("访问img[0,0,2]=",img[0,0,2])
  9. print("访问img[50,0]=",img[50,0])
  10. print("访问img[100,0]=",img[100,0])
  11. # 区域一 这一段代码对应图像左上角区域(即"第0行到第49行"与"第0列到第99列"的行列交叉区域,我们称之为区域一)
  12. for i in range(0,50):
  13. for j in range(0,100):
  14. for k in range(0,3):
  15. img[i,j,k]=255 #白色 借助img[i,j,k]=255的语句将该区域的三个通道的像素值都设置为255,让该区域变成白色
  16. # 区域二 这一段代码对应区域一正下方区域(即"第50行到第99行"与"第0列到第99列"的行列交叉区域,我们称之为区域二)
  17. for i in range(50,100):
  18. for j in range(0,100):
  19. img[i,j]=[128,128,128]# 灰色 借助img[i,j]=[128,128,128]的语句将该区域的三个通道的像素值都设置为128,让该区域变成灰色
  20. # 区域三 这一段代码对应区域一正下方区域(即"第100行到第149行"与"第0列到第99列"的行列交叉区域,我们称之为区域三)
  21. for i in range(100,150):
  22. for j in range(0,100):
  23. img[i,j]=0 #黑色 借助img[i,j]=0的语句将该区域的三个通道的像素值都设置为0,让该区域变成黑色
  24. cv2.imshow("after",img)
  25. print("修改后img[0,0]=",img[0,0])
  26. print("修改后img[0,0,0]=",img[0,0,0])
  27. print("修改后img[0,0,1]=",img[0,0,1])
  28. print("修改后img[0,0,2]=",img[0,0,2])
  29. print("修改后img[50,0]=",img[50,0])
  30. print("修改后img[100,0]=",img[100,0])
  31. cv2.waitKey()
  32. cv2.destroyAllWindows()

输出如下:

这里用的是博主非常喜欢的《星月夜》的一角

 最后想说一下的是,代码中的注释部分可以好好看一下,个人感觉蛮重要的

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号