opencv学习笔记2

opencv学习笔记2

  • 图像处理基础

1.图像的基本表示方法
二值图像:
仅仅包含黑色和白色两周颜色的图像,将白色像素点处理为1,黑色像素点处理为0。
灰度图像
二值图像不够细腻
计算机将灰度处理为256个灰度级,用区间[0,255]来表示。255表示纯白色,0表示纯黑色。其余的数 值表示从黑到白之间不同级别的灰度。
彩色图像
不同的彩色空间表示方法虽然不同,但是各种彩色空间之间可以通过公式进行转换

2.像素处理
opencv最小的数据类型是无符号的8位数,因此opencv中并没有二值图像这种数据类型,二值图像是经过处理得到的,利用0表示黑色,255表示白色。
可以说二值图像为特殊的灰度图像。
可以使用img[0,0]访问图像的img的第0行和第0列的像素点
第一个索引表示行,第二个表示列

例子1

import cv2
import numpy as np
img = np.zeros((8,8),dtype=np.uint8)
print("img=\n",img)
cv2.imshow('one',img)
print("读取像素点img[0,3]=",img[0,3])
img[0,3] = 255
print('修改后的img= \n',img)
print("读取修改后的像素点img[0,3]=",img[0,3])
cv2.imshow('two',img)
cv2.waitKey()
cv2.destroyAllWindows()

例子2
读取灰度图像,并对其像素进行访问

import cv2
img = cv2.imread('src\lena.tiff',0)#0代表将图片调整为单通道灰度图像
cv2.imshow('before',img)
for i in range(10,100):
    for j in range(80,100):
        img[i,j] = 255
cv2.imshow('after',img)
cv2.waitKey()
cv2.destroyAllWindows()

opencv学习笔记2_第1张图片
opencv学习笔记2_第2张图片
2彩色图像
RGB模式的图像在读入opencv中进行处理时,会按照行方向一次读取该RGB图像的B,G,R通道,并将像素点以行为单位存储在ndarry的列中。

可以使用表达式访问数组中的值
img[0,0,0]访问图像的img的B通道第0行,第0列
第一个索引表示行
第二个索引表示列
第三个索引表示颜色通道

import cv2
import numpy as np
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('demo',img)
cv2.waitKey()
cv2.destroyAllWindows()

opencv学习笔记2_第3张图片

3使用numpy.array访问像素
item(行,列)和itemset(索引值,新值)函数

import cv2
import numpy as np
img = np.random.randint(10,99,size=(5,5),dtype=np.uint8)
print("img = \n",img)
print("像素点img.item(3,2)为",img.item(3,2))
img.itemset((3,2),255)
print("修改后的img.item(3,2)",img.item(3,2))
cv2.imshow('demo',img)
cv2.waitKey()
cv2.destroyAllWindows()

你可能感兴趣的:(opencv学习笔记,opencv,python)