Opencv | Opencv 基于图像的运算

目录

  • [一. OpenCV 基于图像的运算](#一. OpenCV 基于图像的运算)
    • [1 cv.item( ) 获取图像某个位置的像素值](#1 cv.item( ) 获取图像某个位置的像素值)
    • [2. cv. itemset( ) 修改图像某个位置的像素值](#2. cv. itemset( ) 修改图像某个位置的像素值)
    • [3. cv.split( ) / cv.merge( ) 通道的分割与合并](#3. cv.split( ) / cv.merge( ) 通道的分割与合并)
    • [4. cv.copyMakeBorder ( ) 添加边框](#4. cv.copyMakeBorder ( ) 添加边框)
    • [5. cv.addWeighted ( ) 图像融合 / 权重和](#5. cv.addWeighted ( ) 图像融合 / 权重和)
    • [6. cv.threshold 二值化操作](#6. cv.threshold 二值化操作)
    • [7. cv.add ( ) 加法操作](#7. cv.add ( ) 加法操作)
    • [8. cv.subtract ( ) 减法操作](#8. cv.subtract ( ) 减法操作)
    • [9. cv.multiply ( ) 乘法操作](#9. cv.multiply ( ) 乘法操作)
    • [10. cv.divide ( ) 除法操作](#10. cv.divide ( ) 除法操作)
  • [二. OpenCV 基于图像的逻辑运算](#二. OpenCV 基于图像的逻辑运算)
    • [1. cv.bitwise_not ( )按位非操作](#1. cv.bitwise_not ( )按位非操作)
    • [2. cv.bitwise_and ( ) 按位与操作](#2. cv.bitwise_and ( ) 按位与操作)
    • [3. cv.bitwise_or ( ) 按位或操作](#3. cv.bitwise_or ( ) 按位或操作)
    • [4. cv.bitwise_xor ( ) 按位异或操作](#4. cv.bitwise_xor ( ) 按位异或操作)

一. OpenCV 基于图像的运算

python 复制代码
img = cv.imread("sky.png",-1)
print(img.size)  # 750000
print(img.shape)  # (500, 500, 3)
print(img.dtype)  # uint8:无符号的整数8位,即(0-255)

1 cv.item( ) 获取图像某个位置的像素值

复制代码
	cv.item( ) 
	作用:
		一次只能查看一个通道某个点
	【注意】
		读取图像格式为BGR

2. cv. itemset( ) 修改图像某个位置的像素值

复制代码
	cv. itemset( )
	作用:
		一次只能修改一个通道某个个点的像素值
	【注意】
		读取图像格式为BGR

3. cv.split( ) / cv.merge( ) 通道的分割与合并

复制代码
	cv.split ( )  分割图像的通道
	cv.merge ( )  融合多个通道

4. cv.copyMakeBorder ( ) 添加边框

复制代码
	cv.copyMakeBorder(src, top, bottom, left, right, borderType, dst=None, value=None)
	参数:
		src:输入的图片
		top/bottom/left/right:相应方向上的边框宽度
		borderType:
			要添加边框的类型,具体有:
				cv.BORDER_REPLICATE:使用最边界的像素值代替
				cv.BORDER_REFLECT:添加的边框像素将是边界元素的镜面反射
				cv.BORDER_REFLECT_101/cv.BORDER_DEFAULT:边界反射,边界像素不保留
				cv.BORDER_WRAP:看例子
				cv.BORDER_CONSTANT:添加的边界框像素值为常数(需要额外再给定一个参数)
		dst:输出图像;Python接口一般不用这个参数
		value:如果borderType为cv.BORDER_CONSTANT时,需要填充的常数值

5. cv.addWeighted ( ) 图像融合 / 权重和

复制代码
	cv2.addWeighted(src1,alpha,src2.beta,gamma)
	参数:
		alpha:src1的权重
		beta:src2的权重
		gamma:偏置项
	非官方:
		加权和
	相当于:
		w1 * x1 + w2 * x2 + b
	注意:
		有偏置项

6. cv.threshold 二值化操作

复制代码
	retval, threshold_img = cv.threshold(src, thresh, maxval, type)
	参数:
		src: 输入图像,通常是灰度图像
		thresh: 阈值,用于决定像素值如何被分类
		maxval: 当像素值高于(或低于,取决于阈值类型)阈值时,像素的新值
		type: 阈值类型
			  cv.THRESH_BINARY,
			  cv.THRESH_BINARY_INV
			  cv.THRESH_TRUNC
			  cv.THRESH_TOZERO
			  cv.THRESH_TOZERO_INV
	作用:
		基于一个阈值,将图像中的像素值转换为两个可能的值:通常是黑色和白色
			即: 0(黑色)和1(白色)/ 0(黑色)和255(白色)

7. cv.add ( ) 加法操作

复制代码
	两张图片相加,shape必须相同
	
	图片对应位置相加,如果相加后出现值大于255的情况,统一置为255
		解决方法:
		1. 相加图片权重相同
		2. 相加图片权重不同

8. cv.subtract ( ) 减法操作

复制代码
	对应位置相减,如果小于0,统一置为0

9. cv.multiply ( ) 乘法操作

复制代码
	对应位置相乘,如果大于255,统一置为255

10. cv.divide ( ) 除法操作

复制代码
	对应位置相除,如果小于0,统一置为0

二. OpenCV 基于图像的逻辑运算

1. cv.bitwise_not ( )按位非操作

复制代码
	图像位运算,对图像的每个像素值进行"非"操作,即:dst=np.uint8(~src)

2. cv.bitwise_and ( ) 按位与操作

复制代码
	图像位运算,对两个图像的每个像素值之间进行"与"操作,即: dst=np.uint8(src1 & src2)

3. cv.bitwise_or ( ) 按位或操作

复制代码
	图像位运算,对两个图像的每个像素值之间进行"或"操作,即: dst=np.uint8(src1 | src2)

4. cv.bitwise_xor ( ) 按位异或操作

复制代码
	图像位运算,对两个图像的每个像素值之间进行"异或"操作,即: dst=np.uint8(src1 ^ src2)

感谢阅读🌼

如果喜欢这篇文章,记得点赞👍和转发🔄哦!

有任何想法或问题,欢迎留言交流💬,我们下次见!

本文相关代码存放位置

Opencv 基于图像的运算

祝愉快🌟!


相关推荐
小程故事多_80几秒前
破局 AI 编码乱象:SDD 规范驱动 + OpenSpec+SuperPowers 双框架,让 AI 写对每一行可追溯代码
开发语言·人工智能·aigc·ai编程
枫叶v.几秒前
Prompt Engineering、Context Engineering、Harness Engineering:它们到底是什么关系呢
大数据·人工智能·prompt
杜子不疼.1 分钟前
AI Agent 智能体开发入门:AutoGen 多智能体协作实战教程
java·人工智能·spring
财经汇报2 分钟前
联易融的“反直觉“之年:供应链金融估值重构进行时
人工智能·金融
CoderJia程序员甲2 分钟前
GitHub 热榜项目 - 日榜(2026-04-08)
人工智能·ai·大模型·github·ai教程
人道领域2 分钟前
OpenClaw 源码泄露风波:一场由 “手滑” 引发的 AI 安全大地震
人工智能·安全·open claw
Mr.Cheng.6 分钟前
ALPHAEDIT: NULL-SPACE CONSTRAINEDKNOWLEDGE EDITING FOR LANGUAGE MODELS
人工智能·语言模型·自然语言处理
枫叶林FYL6 分钟前
【自然语言处理 NLP】7.1.2 表示工程与推理监控
人工智能·机器学习·自然语言处理
sali-tec6 分钟前
C# 基于OpenCv的视觉工作流-章46-矩形卡尺
图像处理·人工智能·opencv·算法·计算机视觉
白小筠7 分钟前
自然语言处理之RNN及其变体
人工智能·rnn·自然语言处理