图像处理基础
像素处理
#图像读取
import cv2
img=cv2.imread('dog.jpg')
cv2.imshow('Dog',img)
cv2.waitKey()
cv2.destroyAllWindows()
img1=cv2.imread('dog.jpg',cv2.IMREAD_GRAYSCALE)
img2=cv2.imread('dog.jpg',cv2.IMREAD_COLOR)
cv2.imshow('Dog2',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
像素处理
1.二值图像(仅包含黑色和白色) 因图像比较简单,只有两种颜色,所以一个bit位0/1就可以表示
2.灰度图像
二值图像表示起来方便,但是由于只有两种颜色,所表示的图像不够细腻,而灰度图像采用更多数值来体现不同的颜色。
通常,计算机把灰度处理为256个灰度级,[0, 255],其中,0表示纯黑,255表示纯白正好用一个字节就可以表示(8位)
3.彩色图像
仅介绍常见的RGB色彩空间,其中存在R(red), G(Green), B(Blue)三个通道。每个值都在[0, 255]以内,用这三个色彩通道的组合表示颜色,故需要三个字节来表示。
4.Numpy库
numpy库中zeros()和ones()函数均可以生成一个数组
5.通道操作
1)通过索引拆分
B = img[: ,:, 0]
G = img[:, :, 1]
R = img[:, :, 2]
2)通过函数拆分
B, G, R = cv2.split(img)
3)通道合并
Img = cv2.merge([B , G ,R])
6.感兴趣区域ROI
Img[200:400, 200:400]
#访问图像,修改像素
img=cv2.imread("dog.jpg")
cv2.imshow("before",img)
print("访问img[0,0]=",img[0,0])
print("访问img[0,0,0]=",img[0,0,0])
print("访问img[0,0,1]=",img[0,0,1])
print("访问img[0,0,2]=",img[0,0,2])
print("访问img[50,0]=",img[50,0])
print("访问img[100,0]=",img[100,0])
#区域1
for i in range(0,50):
for j in range(0,100):
for k in range(0,3):
img[i,j,k]=255 #白色
#区域2
for i in range(50,100):
for j in range(0,100):
img[i,j]=[128,128,128] #灰色
#区域3
for i in range(100,150):
for j in range(0,100):
img[i,j]=0 #黑色
cv2.imshow("after",img)
print("修改后img[0,0]=",img[0,0])
print("修改后img[0,0,0]=",img[0,0,0])
print("修改后img[0,0,1]=",img[0,0,1])
print("修改后img[0,0,2]=",img[0,0,2])
print("修改后img[50,0]=",img[50,0])
print("修改后img[100,0]=",img[100,0])
cv2.waitKey()
cv2.destroyAllWindows()
import numpy as np
imgrad=np.random.randint(0,256,size=[256,256,3],dtype=np.uint8)
cv2.imshow("demo",imgrad)
cv2.waitKey()
cv2.destroyAllWindows()
``
```python
img2=np.random.randint(0,256,size=[256,256,3],dtype=np.uint8)
for i in range(0,50):
for j in range(0,100):
for k in range(0,3):
img2[i,j,k]=255
cv2.imshow("before",imgrad)
cv2.imshow('after',img2)
cv2.waitKey()
cv2.destroyAllWindows()
通道拆分
#通道拆分-通过索引拆分
import cv2
dog=cv2.imread('dog.jpg')
cv2.imshow('dog',dog)
b=dog[:,:,0]
g=dog[:,:,1]
r=dog[:,:,2]
cv2.imshow("b",b)
cv2.imshow("g",g)
cv2.imshow("r",r)
cv2.waitKey()
cv2.destroyAllWindows()
© Fu Xianjun. All Rights Reserved.