OpenCV的基础操作

OenCV的一些基础操作

  • 1.将图片转换为灰度图
  • 2.图片裁剪
  • 3.图片打码
  • 4.图片组合
  • 5.图片相加
    • [5.1 对一张图片整体像素值相加](#5.1 对一张图片整体像素值相加)
    • [5.2 对两张图片的像素值相加](#5.2 对两张图片的像素值相加)
    • [5.3 使用cv2.add( )函数对两张图片进行相加](#5.3 使用cv2.add( )函数对两张图片进行相加)
    • [5.4 对图片进行加权运算](#5.4 对图片进行加权运算)

1.将图片转换为灰度图

python 复制代码
import cv2
image = cv2.imread('qi e.png')#读取原图
image_gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#灰度图的处理
cv2.imshow('gray',image_gray)

这里我们读取一张企鹅图片,运行结果如下,左图为原图,右图为灰度图

2.图片裁剪

python 复制代码
a = cv2.imread(r'qi e.png')
b = a[40:260,350:600]  
cv2.imshow('yuantu',a)
cv2.imshow('qiepian',b)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • b = a[40:260,350:600] 这段代码是指在图片a中的 40-259 行、350-599 列这个范围的图片裁剪下来。运行结果如下:

3.图片打码

python 复制代码
import cv2
import numpy as np

a = cv2.imread(r'1.jpg')
a[100:200,200:300] = np.random.randint(0,256,(100,100,3))  
cv2.imshow('masaike',a)
cv2.waitKey(1000000)
cv2.destroyAllWindows()
  • a[100:200,200:300] = np.random.randint(0,256,(100,100,3)) 这段代码是指在图片a中选取了行索引从 100 到 199(共100行),列索引从 200 到 299(共100列)的区域。并且在这区域内生成一个随机数组,数值范围是 [0, 256)(即0到255,适合表示像素值)。数组的形状是 (100, 100, 3),即100行、100列、3个通道(RGB)。这个随机数组会覆盖 a 的切片区域。
  • 运行结果如下:

4.图片组合

python 复制代码
import cv2
import numpy as np
# 图片组合
a = cv2.imread('1.png')
b = cv2.imread('qi e.png')
b[200:350,200:350] = a[50:200,100:250]  #注意:矩阵的大小必须要统一
cv2.imshow('b',b)
cv2.imshow('a',a)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • b[200:350,200:350] = a[50:200,100:250] 这段代码是指将图片 a 中的 50 到 199行(共150行)、 100 到 249(共150列)的区域覆盖到 b 中的200 到 349行(共150行)、 200 到 349(共150列)。并且这个区域上组合区域的矩阵大小必须要统一
  • 图片 b 还是企鹅图片
  • 图片 a 如下:
  • 图片a与b的组合:

5.图片相加

5.1 对一张图片整体像素值相加

python 复制代码
import cv2
a = cv2.imread('qi e.png')
c = a+10
cv2.imshow('yuan',a)
cv2.imshow('a+10',c)
cv2.waitKey(0)
  • 这段代码是对图片 a 中的所有区域像素值进行加 10 的操作,得到 c
  • 如下是运行结果:

5.2 对两张图片的像素值相加

python 复制代码
import cv2
a = cv2.imread('qi e.png')
b = cv2.imread('1.jpg')
c = a[50:450,50:400]+b[50:450,50:400]
cv2.imshow('a+b',c)
cv2.waitKey(0)
  • 两张图片相加的区域中矩阵大小必须统一
  • 下图是图片 a 与图片 b 的相加结果:

5.3 使用cv2.add( )函数对两张图片进行相加

python 复制代码
a = cv2.imread('qi e.png')
b = cv2.imread('1.jpg')
b = cv2.resize(b,(400,400))
a = cv2.resize(a,(400,400))
c = cv2.add(a,b)  #也可以这样使用
cv2.imshow('a add b',c)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 对于cv2.add()运算,当对图像a,图像b进行加法求和时,遵循以下规则:当某位置像素相加得到的数值小于255时,该位置数值为两图像该位置像素相加之和 当某位置像素相加得到的数值大于255时,该位置数值为255。
  • 下图是结果:

5.4 对图片进行加权运算

python 复制代码
a = cv2.imread('qi e.png')
b = cv2.imread('1.jpg')
b = cv2.resize(b,(400,400))
a = cv2.resize(a,(400,400))

c = cv2.addWeighted(a,0.2,b,0.8,10) #
cv2.imshow('addWrighted',c)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 图片加权运算就是在计算两幅图像的像素值之和时,对两幅图像的权重考虑进来,可以用公式表示为dst = src1×a+src×b+y
  • 可以通过调整a和b的权重对图片进行相加
相关推荐
2501_924731471 小时前
复杂路况下车牌识别准确率↑19%:陌讯动态特征融合算法实战解析
人工智能·算法·目标检测·计算机视觉·目标跟踪
LgZhu(Yanker)6 小时前
27、企业维修保养(M&R)全流程管理:从预防性维护到智能运维的进阶之路
大数据·运维·人工智能·erp·设备·维修·保养
ModelWhale6 小时前
“大模型”技术专栏 | 和鲸 AI Infra 架构总监朱天琦:大模型微调与蒸馏技术的全景分析与实践指南(上)
人工智能·大模型·大语言模型
lxmyzzs8 小时前
【图像算法 - 08】基于 YOLO11 的抽烟检测系统(包含环境搭建 + 数据集处理 + 模型训练 + 效果对比 + 调参技巧)
人工智能·yolo·目标检测·计算机视觉
霖008 小时前
ZYNQ实现FFT信号处理项目
人工智能·经验分享·神经网络·机器学习·fpga开发·信号处理
GIS数据转换器9 小时前
AI 技术在智慧城市建设中的融合应用
大数据·人工智能·机器学习·计算机视觉·系统架构·智慧城市
竹子_239 小时前
《零基础入门AI:传统机器学习进阶(从拟合概念到K-Means算法)》
人工智能·算法·机器学习
上海云盾-高防顾问9 小时前
DDoS 防护的未来趋势:AI 如何重塑安全行业?
人工智能·安全·ddos
Godspeed Zhao9 小时前
自动驾驶中的传感器技术17——Camera(8)
人工智能·机器学习·自动驾驶·camera·cis
摆烂工程师10 小时前
GPT-5 即将凌晨1点进行发布,免费用户可以使用 GPT-5
前端·人工智能·程序员