图像处理基础
1.图像读取、显示、保存
1.读取图像cv2.imread(filename, flags) flags的值:
cv2.IMREAD_UNCHANGED -1 #原图
cv2.IMREAD_GRAYSCALE 0 #灰度图
cv2.IMREAD_COLOR 1 #BGR图像,默认
cv2.IMREAD_ANYDEPTH 2 #对应深度图像
cv2.ANYCOLOR 4 #以任何可能的格式读图
2.显示图像cv2.imshow(winname, mat) #显示函数cv2.waitkey(delay) #等待按键函数
destroyWindow(winname)#销毁窗口函数
destroyAllWindows()#销毁所有窗口函数
3.保存图像cv2.imwrite(filename, img)
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()
简易方法
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv_show('Dog3',img1)
#**图像保存**
cv2.imwrite('littledoge.jpg',img)
2.图像像素处理
*
二值图像(仅包含黑色和白色) 因图像比较简单,只有两种颜色,所以一个bit位0/1就可以表示 灰度图像
二值图像表示起来方便,但是由于只有两种颜色,所表示的图像不够细腻,而灰度图像采用更多数值来体现不同的颜色。
通常,计算机把灰度处理为256个灰度级,[0, 255],其中,0表示纯黑,255表示纯白正好用一个字节就可以表示(8位) 彩色图像
仅介绍常见的RGB色彩空间,其中存在R(red), G(Green), B(Blue)三个通道。每个值都在[0,
255]以内,用这三个色彩通道的组合表示颜色,故需要三个字节来表示。
#**访问图像,修改像素**
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()
ROI
img=cv2.imread('dog.jpg')
dog=img[0:50,0:200]
cv2.imshow('dog_roi',dog)
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()
通道拆分-通过函数拆分
dog=cv2.imread('dog.jpg')
b,g,r=cv2.split(dog)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
cv2.waitKey()
cv2.destroyAllWindows()
© Fu Xianjun. All Rights Reserved.