栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

OpenCV之图像处理基础篇

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV之图像处理基础篇

1. 图像的基本表示方法

主要涉及二值图像、灰度图像、彩色图像的基本表示方法。

1.1 二值图像

二值图像是指仅仅包含黑色和白色两种颜色的图像。
像素点是下图中的每一个小方块。计算机将白色像素点(白色小方块区域)处理为“1”,黑色像素点(黑色小方块区域)处理为“0”,以方便进行后续的存储和处理等操作。由于图像内只有黑色和白色两种不同的颜色,只使用一个比特位就能表示。

1.2 灰度图像

二值图像表示起来比较方便,但是因为其仅有黑白两种颜色,所表示的图像不够细腻。如果想要表现更多的细节,就需要使用更多的颜色。灰度图像采用了更多的数值以体现不同的颜色,使图像变得更丰富。
计算机将灰度处理为256个灰度级,用数值区间 [0,255]来表示,正好可以用一个字节(8个比特位)来表示。“255”表示纯白色,“0”表示纯黑色,其余的数值标示从纯白到纯黑之间不同级别的灰度。如果用8位二进制值来表示一副二值图像,使用灰度值255表示白色、灰度值0标示黑色,不存在其他灰度值的像素点。

1.3 彩色图像

彩色图像的三基色:红、绿、蓝。自然界中常见的各种色光都可以通过三基色按照一定的比例混合构成。
例1:使用Numpy生成一个三维数组,用来观察三个通道值的变化情况。
提示:使用Numpy中的zeros()函数可以生成一个元素值都是0的数组。可以直接使用数组的索引形式对其进行访问、修改。

import numpy as np
import cv2
img=np.zeros((300,300,3),dtype=np.uint8)
img[:,0:100,0]=255
img[:,100:200,1]=255
img[:,200:300,2]=255
print("img=n",img)

cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()

结果如下所示:

例2:使用Numpy生成一个三维数组,用来模拟一幅 BGR 模式的彩色图像,并对其进行访问、修改。
由于形成的数组太小,此处不放最终的结果。

import numpy as np
import cv2

#生成一个2*4*3大小的数组
img=np.zeros((2,4,3), dtype=np.uint8)
print("img=n",img)

print("读取像素点img[0,3]=",img[0,3])

img[0,3]=255
img[0,0]=[66,77,88]
img[1,1,1]=3
img[1,2,2]=4
img[0,2,0]=5
print("读取后,img=n",img)
print("读取修改后像素点img[1,2,2]=",img[1,2,2])

cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()

例3:读取一幅彩色图像,并对其像素进行访问、修改。

import cv2
img_ali=cv2.imread('G:/pic/ali_two.png')
cv2.imshow("before",img_ali)
print("访问img_ali[0,0]=",img_ali[0,0])
print("访问img_ali[0,0,0]=",img_ali[0,0,0])
print("访问img_ali[0,0,1]=",img_ali[0,0,1])
print("访问img_ali[0,0,2]=",img_ali[0,0,2])

print("访问img_ali[50,0]=",img_ali[50,0])
print("访问img_ali[100,0]=",img_ali[100,0])

#区域1  白色
for i in range(0,50):
    for j in range(0,100):
        for k in range(0,3):
            img_ali[i, j, k]=255

#区域2  灰色
for i in range(50,100):
    for j in range(0,100):
        img_ali[i, j]=[128,128,128]    

#区域3  黑色
for i in range(100,150):
    for j in range(0,100):
        img_ali[i, j]=0

cv2.imshow("after",img_ali)
print("访问img_ali[0,0]=",img_ali[0,0])
print("访问img_ali[0,0,0]=",img_ali[0,0,0])
print("访问img_ali[0,0,1]=",img_ali[0,0,1])
print("访问img_ali[0,0,2]=",img_ali[0,0,2])

print("访问img_ali[50,0]=",img_ali[50,0])
print("访问img_ali[100,0]=",img_ali[100,0])
cv2.waitKey()
cv2.destroyAllWindows()

结果如下所示:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/296181.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号