Opencv之对图片的处理和运算

Opencv实现对图片的处理和修改

目录

灰度图


读取灰度图

  • imread('地址',cv2.IMREAD_GRAYSCALE)
    灰度图
  • imread('地址',0)
    灰度图
  • imwrite('地址',图片变量)
    图片保存

代码展示:

python 复制代码
b = cv2.imread('at1.png',cv2.IMREAD_GRAYSCALE)
cv2.imshow('gry',b)
w = cv2.waitKey(100000)
c= cv2.imread('at1.png',0)
cv2.imshow('gry_0',c)
cv2.waitKey(100000)
cv2.imwrite('at1_gry.png',b)

运行结果:

转换灰度图

  • cv2.CvtColor(图像变量,cv2.COLOR_BGR2GRAY)
    灰度图

代码展示:

python 复制代码
a = cv2.imread('at1.png')
cv2.imshow('t1',a)
cv2.waitKey(100000)
b = cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)
cv2.imshow('t2',b)
cv2.waitKey(100000)

运行结果:

RBG图


单通道图

单通道图不表现颜色,表现为灰色

方法一
  • 图片变量名:,:,n
    n值为0、1、2,分别是B、G、R单通道图

代码展示:

python 复制代码
a = cv2.imread('at1.png')
a_b = a[:,:,0]
cv2.imshow('a_b',a_b)
cv2.waitKey(100000)
a_g = a[:,:,1]
cv2.imshow('a_g',a_g)
cv2.waitKey(100000)
a_r = a[:,:,2]
cv2.imshow('a_r',a_r)
cv2.waitKey(100000)

运行结果:

方法二

b,g,r = 图像变量.split()

代码展示:

python 复制代码
a = cv2.imread('at1.png')
b,g,r = cv2.split(a)
cv2.imshow('r',r)
cv2.waitKey(10000)

运行结果:

单通道图显色

图片变量名:,:,n = 0

运行代码:

python 复制代码
a = cv2.imread('at1.png')
a_new = a.copy()
a_new[:,:,2] = 0
cv2.imshow('a_new',a_new)
cv2.waitKey(10000)

运行结果:

合并单通道图

merge((b,g,r))

代码展示:

python 复制代码
a = cv2.imread('at1.png')
b,g,r = cv2.split(a)
cv2.imshow('r',r)
cv2.waitKey(10000)
m = cv2.merge((b,g,r))
cv2.imshow('b_g_r',m)
cv2.waitKey(10000)

运行结果:

图片截取


am:n,x:y高,宽

截取部分图像

代码展示:

python 复制代码
a = cv2.imread('at1.png')
cv2.imshow('c',a)
cv2.waitKey(10000)
b = a[100:300,100:300]
cv2.imshow('a_m',b)
cv2.waitKey(10000)

运行结果:

图片打码


需要导入numpy

  • am:n,x:y = np.random.randint(0,256,(m-n,x-y,3))
  • 0-256,256不取,实为0-255,

代码展示:

python 复制代码
a = cv2.imread('at1.png')
a[100:200,100:200] = np.random.randint(0,256,(100,100,3))
cv2.imshow('c',a)
cv2.waitKey(10000)

运行结果:

图片组合


  • bm:n,x:y = am:n,x:y
    a在b中,大小要一致

代码展示:

python 复制代码
a = cv2.imread('at1.png')
b = cv2.imread('at1_gry.png')
b[100:200,100:300] = a[100:200,100:300]
cv2.imshow('a_b',b)
cv2.waitKey(10000)

运行结果:

缩放


格式1

  • resize(a,dsize=None,fx=m,fy=n)
    fx,fy表示等比如0.5对宽高缩放

格式2

cv2.resize(a,(m,n))

图像大小为m宽,n高,

代码展示:

python 复制代码
a = cv2.imread('at1.png')
cv2.imshow('a',a)
cv2.waitKey(10000)
a_small = cv2.resize(a,dsize=None,fx=0.5,fy=0.5)
cv2.imshow('a_small',a_small)
cv2.waitKey(10000)
b_small = cv2.resize(a,(250,300))
cv2.imshow('b_small',b_small)
cv2.waitKey(10000)
cv2.destroyAllWindows()

运行结果:

图像运算


图像大小都要一致

+

图像+m

m为数组,当像素值大于255时,该值-256为最终值

am:n,x:y+bm1:n1,x1:y1

间隔大小要相同,当像素值大于255时,该值-256为最终值

代码展示:

python 复制代码
a = cv2.imread('at1.png')
b = cv2.imread('bt1.jpg')
c = a + 10
cv2.imshow('a',a)
cv2.waitKey(10000)
cv2.imshow('b',b)
cv2.waitKey(10000)
cv2.imshow('a+10',c)
cv2.waitKey(10000)
d = a[100:300,100:300] + b[100:300,100:300]
cv2.imshow('a+b',d)
cv2.waitKey(10000)

运行结果:

add

add(a,b)

a,b大小要相同

当a,b的像素值相加,像素值大于255时,该值为255

代码展示:

python 复制代码
 a = cv2.imread('at1.png')
b = cv2.imread('bt1.jpg')
a = cv2.resize(a,(400,400))
b = cv2.resize(b,(400,400))
e = cv2.add(a,b)
cv2.imshow('a_add_b',e)
cv2.waitKey(10000)

运行结果:

加权运算

addWeighted(a,占比,b,占比,0)

a,b大小相同,按占比显示

代码展示:

python 复制代码
a = cv2.imread('at1.png')
b = cv2.imread('bt1.jpg')
a = cv2.resize(a,(400,400))
b = cv2.resize(b,(400,400))
f = cv2.addWeighted(a,0.5,b,0.5,0)
cv2.imshow('a_addweighted_b',f)
cv2.waitKey(10000)
cv2.destroyAllWindows()

运行结果:

相关推荐
terry600几秒前
企业数据查询接口防爬实战:图形验证码服务端校验接入与限流设计(附Python)
python·信息与通信·图形验证码·反爬虫·人机验证·行为验证码·滑动拼图验证
一级新生1 分钟前
Dify 日常使用手册(小白版)
人工智能·docker·云原生·eureka·dify·ai工具
量化炼金 (CodeAlchemy)1 分钟前
【Python】pandas vs polars 简单性能对比测试
开发语言·python·pandas
Ai-_Man2 分钟前
我需要批量导出Poe左边栏所有对话,而不是一条具体的对话内容,你们AI导出鸭可以吗?
开发语言·前端·javascript·人工智能·小程序
学习论之费曼学习法3 分钟前
无人值守AI内容矩阵实战(7):Playwright 发布器避坑——编辑器竞态、索引延迟与风控
python·线性代数·矩阵·编辑器·浏览器自动化·playwright·踩坑记录
涵美女程序猿6 分钟前
AI 商品图工具把循环扇细节改错了?Lingko AI 按原片逐项回查
人工智能
hey you~7 分钟前
语音机器人怎么配置,才能自动生成通话文字记录方便复盘?
人工智能·语音识别·语音机器人·离线转写·语音机器人通话转写·通话录音转文字
wuyk5559 分钟前
PyQt6-第06讲-主窗口框架
python·pyqt
Pin_Qing9 分钟前
缓存能活多久,现在是个要算的参数
java·大数据·开发语言·人工智能·程序人生
ss.li10 分钟前
rppg相关论文阅读笔记10.22
论文阅读·笔记·python