当前位置: 首页 > article >正文

Opencv之对图片的处理和运算

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

目录

  • Opencv实现对图片的处理和修改
    • 灰度图
      • 读取灰度图
      • 转换灰度图
    • RBG图
      • 单通道图
        • 方法一
        • 方法二
      • 单通道图显色
      • 合并单通道图
    • 图片截取
    • 图片打码
    • 图片组合
    • 缩放
      • 格式1
      • 格式2
    • 图像运算
      • +
        • 图像+m
        • a[m:n,x:y]+b[m1:n1,x1:y1]
      • add
      • 加权运算

灰度图


读取灰度图

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

代码展示:

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)
    灰度图

代码展示:

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单通道图

代码展示:

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

代码展示:

a = cv2.imread('at1.png')
b,g,r = cv2.split(a)
cv2.imshow('r',r)
cv2.waitKey(10000)

运行结果:
在这里插入图片描述

单通道图显色

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

运行代码:

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

代码展示:

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)

运行结果:
在这里插入图片描述

图片截取


a[m:n,x:y]高,宽
截取部分图像
代码展示:

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

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

代码展示:

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)

运行结果:
在这里插入图片描述

图片组合


  • b[m:n,x:y] = a[m:n,x:y]
    a在b中,大小要一致

代码展示:

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高,

代码展示:

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为最终值

a[m:n,x:y]+b[m1:n1,x1:y1]

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

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

代码展示:

 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大小相同,按占比显示

代码展示:

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

运行结果:
在这里插入图片描述


http://www.kler.cn/a/449321.html

相关文章:

  • Java代码覆盖率super-jacoco
  • 【uni-app】2025最新uni-app一键登录保姆级教程(包含前后端获取手机号方法)(超强避坑指南)
  • 工业摄像机基于电荷耦合器件的相机
  • 记录一个SVR学习
  • GraalVM完全指南:云原生时代下使用GraalVM将Spring Boot 3应用转换为高效Linux可执行文件
  • MFC/C++学习系列之简单记录9——简单加法
  • 【初阶数据结构与算法】八大排序算法之交换排序(冒泡排序,快速排序---hoare、挖坑法、lomuto双指针3种版本)
  • RCE 命令执行漏洞 过滤模式 基本的过滤问题 联合ctf题目进行实践
  • 【蓝桥杯——物联网设计与开发】拓展模块4 - 脉冲模块
  • CentOS7网络配置,解决不能联网、ping不通外网、主机的问题
  • 使用 Python 实现 WebSocket 服务器与客户端通信
  • 【Unity Shader】【图形渲染】Shader数学基础9 - 缩放矩阵
  • html 通用错误页面
  • 航模锂电池使用
  • GESP CCF C++六级编程等级考试认证真题 2024年12月
  • 安全删除硬件并弹出媒体(弹出显卡)问题处理
  • 大模型系列——投机解码:Prompt Lookup Decoding代码解读
  • 使用pdf2zh遇到的问题
  • 海天味业:困境突围,再寻增长
  • CV实战项目----YOLO
  • SoftMoE:From sparse to soft mixtures of experts
  • Postman集合转JMeter脚本
  • AI应用-本地模型实现AI生成PPT(简易版)
  • C++ 函数编程题
  • 远程医疗:科技助力健康触手可及
  • linux socket编程之udp_dict_serve服务端--引入配置文件