OpenCv除了可以获取图像之外,还可以对图像进行一下处理操作,比如像素值的获取并修改,

查看图像的数据类型,拆分图像通道,合并图像通道。通过索引来快速修改像素的通道等

下面简单的介绍几个基本的操作:

1.获取像素值并修改
import cv2
"""
功能:获取像素值并修改
根据像素的行和列的坐标获取像素值,对于BGR图像来说,返回的值为B,G,R.
对灰度图像而言,会返回它的灰度值(亮度-intensity)
"""""
# 读入一副图像
img = cv2.imread("feifei.jpeg")
# px=img[100,100]
blue = img[100, 100, 0]
# 修改像素值
img[100, 100] = [255, 255, 255]
print(img[100, 100])

"""
获取像素并修改的改进方法
函数:array.item()
import cv2
import numpy as np
img=cv2.imread("feifei.jpeg")
print(img.item(10,10,2))
"""
#展示图片
# cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
2.查看图像的像素数目和图像的数据类型。
import cv2
"""
函数:img.shape
    :img.size返回图像的像素数目
    :img.dtype返回图像的数据类型。
功能:获取图片的属性:行,列,通道数据类型,像素数目等
img.shape可以获取图像的形状,它的返回值是一个包含行数,列数,通道数的元祖。
注意:如果图像是灰度图,返回值仅有行数和列数,所以通过检查
这个返回值就可以知道加载的是灰度图还是彩色图。
"""
img2 = cv2.imread("feifei.jpeg")
#返回像素
print(img2.shape)
#返回像素的数目
print(img2.size)
#返回图像的数据类型
print(img2.dtype)
#展示图片
cv2.imshow("image2", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.拆分和合并图像通道。有时我们需要对BGR三个通道进行操作,需要把BGR
拆分成单个通道。
import cv2
"""
函数:cv2.split()拆分图像通道
    cv2.merge()合并图像通道
功能:有时我们需要对BGR三个通道进行操作,需要把BGR
    拆分成单个通道。
注意:cv2.split()是一个比较耗时的操作。
"""
img3=cv2.imread("feifei.jpeg")
#获取三通道的值
b,g,r=cv2.split(img3)
print(b,g,r)
#合并三通道
img3=cv2.merge((b,g,r))
cv2.imshow("image3", img3)
cv2.waitKey(0)
cv2.destroyAllWindows()
4.通过索引来快速修改像素的通道。
import cv2
"""
功能:通过索引来快速修改像素的通道
"""
img4=cv2.imread("feifei.jpeg")
img4[:,:,2]=0
cv2.imshow("image4", img4)
cv2.waitKey(0)
cv2.destroyAllWindows()