OpenCV:面向python像素处理

文章目录

  • 一、像素的定义
  • 二、图像的表示方法
    • 1、二值图像
    • 2、灰度图像
    • 3、彩色图像
  • 三、处理
    • 1、利用Numpy库模拟黑色图像
    • 2、读取一个灰度图像进行处理
    • 3、利用Numpy库模拟彩色图像
    • 4、随机生成一个彩色图像
  • 四、感兴趣区域(ROI)
  • 五、总结

一、像素的定义

像素:是指在由一个数字序列表示的图像中的一个最小单位,称为像素。
像素是图像构成的基本单位,像素处理是图像处理的基本操作,可以通过位置索引的形式对图像内的元素进行访问、处理。

二、图像的表示方法

图像的基本表示方法可以分为:二值图像、灰度图像、彩色图像。

1、二值图像

二值图像是指仅仅包含黑色和白色两种颜色的图像。
OpenCV:面向python像素处理_第1张图片
计算机处理的时候,会将图片划分为一个个小的方块,每一个小方块作为一个独立的处理单元,叫做像素点,每一个白色的方块处理为1,相反黑色的方块处理为0,然后存入计算机。

2、灰度图像

二值图像虽然表示简单,但是图像不够细腻,如果需要表现出来更多的细节,就需要使用更多的颜色,而不仅仅是二值图像的黑和白。对比于二值图像的0和1,灰度图像采用了更多的数字。

通常计算机将灰度处理为256个灰度级,用数值区间[0,255]表示,255表示纯白色,0表示纯黑色。

可以使用8位二进制表示二值图像,只存在0和255两种灰度级,因此二值图像也算是一种特殊的灰度图像。
OpenCV:面向python像素处理_第2张图片
部分区域的数值表示:
OpenCV:面向python像素处理_第3张图片

3、彩色图像

彩色图像可以表示更丰富的信息。
具有多种色彩空间:RGB、GRAY、XYZ、YCrCb、HSV、HLS、CIELab、CIELuv*、Bayer等。
色彩空间也叫作颜色空间、彩色空间等。

RGB色彩空间较为常用:
在RGB色彩空间内具有三个通道,分别为R通道、G通道、B通道,每个通道的范围都是在数值区间[0,255],然后用三个通道的组合表示各种颜色。

部分RGB颜色对照表:
在这里插入图片描述
在计算机中使用三维数组表示一副RGB色彩空间的彩色图像,并且注意在OpenCV中通道的顺序为BGR,也就是在第一个通道存放B的信息,在最后一个通道存放R的信息。
OpenCV:面向python像素处理_第4张图片

三、处理

图像可以理解成为一个数组,因此在面向python的OpenCV中,图像就是Numpy库中的数组。

1、利用Numpy库模拟黑色图像

使用Numpy库生成一个全是0的二维数组,来模拟表示一个黑色图像。

import cv2
import numpy as np
temp = np.zeros((100,100),dtype = np.uint8)
print("前\n",temp)
cv2.imshow("qian",temp)
print("读取像素点temp[0,3]=",temp[0,3])
temp[0,3] = 255
print("后\n",temp)
print("读取修改后像素点temp[0,3]=",temp[0,3])
cv2.imshow("hou",temp)
cv2.waitKey()
cv2.destroyAllWindows()

结果展示:
修改前:
OpenCV:面向python像素处理_第5张图片
读取修改前的像素点
在这里插入图片描述
修改前的图像
OpenCV:面向python像素处理_第6张图片
修改后:
OpenCV:面向python像素处理_第7张图片
读取修改后的像素点
在这里插入图片描述
修改后的图像
OpenCV:面向python像素处理_第8张图片
(在图像的左上方向有一个白色的点,为修改的结果,为方便观看,大家可以复制程序进行验证,大家观看的时候,可以模拟大一点的数组,现象更加明显)

2、读取一个灰度图像进行处理

在本地读取一个灰度图像,然后对数组进行修改。

import cv2
ppp=cv2.imread("D:\pmjcv\pbc.png",0)
cv2.imshow("qian",ppp)
print("前\n",ppp)
for i in range(50,150):
    for j in range(50,150):
        ppp[i,j]=255
cv2.imshow("hou",ppp)
print("后\n",ppp)
cv2.waitKey()
cv2.destroyAllWindows()

修改前:
修改前像素点
OpenCV:面向python像素处理_第9张图片
修改前图像
OpenCV:面向python像素处理_第10张图片
修改后像素点
OpenCV:面向python像素处理_第11张图片
修改后图像

OpenCV:面向python像素处理_第12张图片
(可以明显看到左上方向白色为修改部分)

3、利用Numpy库模拟彩色图像

利用Numpy库生成三维数组,分别表示三个通道的情况,表示彩色图像。

import cv2
import numpy as np
temp = np.zeros((600,900,3),dtype = np.uint8)
temp[:,0:150,0]=255
temp[:,150:300,1]=255
temp[:,300:450,2]=255
temp[:,450:600,0]=255
temp[:,600:750,1]=255
temp[:,750:900,2]=255
print("caise\n",temp)
cv2.imshow("caise",temp)
cv2.waitKey()
cv2.destroyAllWindows()

部分像素点展示

OpenCV:面向python像素处理_第13张图片

图像展示

OpenCV:面向python像素处理_第14张图片

4、随机生成一个彩色图像

利用Numpy库

import cv2
import numpy as np
temp = np.random.randint(0,256,size=[500,600,3],dtype=np.uint8)
print("caise\n",temp)
cv2.imshow("caise",temp)
cv2.waitKey()
cv2.destroyAllWindows()

部分像素点
OpenCV:面向python像素处理_第15张图片
彩色图像

四、感兴趣区域(ROI)

在图像处理中,我们要针对某一个特定区域进行处理的时候,就会对这一个特定区域感兴趣,这个区域就可以称作为感兴趣区域(ROI),设置成感兴趣区域之后,就可以对这个区域整体进行操作,方便减少处理的时间,更加高效。

import cv2
temp = cv2.imread("D:\pmjcv\pbc.png",cv2.IMREAD_UNCHANGED)
roi = temp[200:300,200:300]
cv2.imshow("yuanshitu",temp)
cv2.imshow("roi",roi)
cv2.waitKey()
cv2.destroyAllWindows()

原始图片
OpenCV:面向python像素处理_第16张图片
ROI区域
OpenCV:面向python像素处理_第17张图片

五、总结

面向python的像素处理,还有很多功能,上说内容是这段时间的学习总结仍然还不是很全面,需要进一步深入学习、向其他人探讨。

上述内容为学习总结,希望对大家可以有所帮助,如有遗漏或者错误请在评论区中指正,期待与大家的讨论!!!

你可能感兴趣的:(计算机视觉OpenCV,opencv,计算机视觉,python)