第一章 图像处理基础

一、基本词汇

imread Image read的意思,读取图像
imshow Image show的意思,显示图像
waitkey 等待按键
destroyWindow 关闭窗口
filename 文件名
flags 标示
imwrite image write的意思,写图像即保存图像
UNCHANGED 不变的
GRAYSCALE 灰度
ANYDEPTH 任意深度
ANYCOLOR 任意颜色
winname 窗口名字
delay 等待
shape 形状
dtype 类型
size 大小
split 拆分
merge 合并
random 随机的
randint 随机整数

二、图像读取、显示、保存

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()
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)

三、图像像素处理

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()
#***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()
bgr=cv2.merge([b,g,r])
rgb=cv2.merge([r,g,b])
cv2.imshow("dog",dog)
cv2.imshow("bgr",bgr)
cv2.imshow("rgb",rgb)
cv2.waitKey()
cv2.destroyAllWindows()

© Fu Xianjun. All Rights Reserved.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值