opencv图像基本操作解析与实操

图片操作

cv2.namedWindow() 创建命名窗口

cv2.imshow()显示窗口

cv2.destroyAllwindws()摧毁窗口

cv2.resizeWindow()改变窗口大小

cv2.waitKey()等待用户输入

cv2.imread()读取图像

img.shape 图片h、w、c(高、宽、通道数

python 复制代码
import cv2    # opencv读取的格式是BGR
import matplotlib.pyplot as plt
import numpy as np

# cv2.IMREAD_COLOR 彩色图像
# cv2.IMREAD_GRAYSCALE 灰度图像
img = cv2.imread('img1.jpg',cv2.IMREAD_COLOR)

# 图像显示
cv2.imshow('img1',img)
# 等待时间,毫秒级,0表示任意键中止
cv2.waitKey(0)
cv2.destroyAllWindows()

视频操作

cv2.VideoCapture() 可以捕获摄像头,用数字来控制不同的设备,例如0,1

如果是视频文件,直接指定好路径即可。

python 复制代码
vc = cv2.VideoCapture('video1.mp4')
# 检查是否打开正确
if vc.isOpened():
    open,frame = vc.read() # 每次读取1帧,再read再读取下一帧
                           # 返回的第一个值是bool类型,第二个值是当前这一帧的图像(三维数组)
else:
    open = False
# 通常情况下
while open:
    ret,frame = vc.read()
    if frame is None:
        break
    if ret == True:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # cv2.cvtColor(图像,转换方法)
        cv2.imshow('result',gray)
        if cv2.waitKey(10) & 0xFF == 27: # 27是esc键
            break
vc.release()
cv2.destroyAllWindows()

ROI

Region Of Interest 直译为:感兴趣的区域

作用为:截取部分图像数据

python 复制代码
# ROI
img = cv2.imread('img1.jpg')
if img is not None:
    img_partA = img[0:200,0:200] # ROI操作,img[h,w]
                                 # 本质是操作数组
    cv2.imshow('img1',img_partA)
    cv2.imshow('img2',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

颜色通道提取

python 复制代码
b,g,r = cv2.split(img) # 提取bgr
img = cv2.merge(b,g,r) # 通过bgr组合出一张图像

只保留R通道显示

python 复制代码
img = cv2.imread("img1.jpg",cv2.IMREAD_COLOR)
b,g,r = cv2.split(img)
# 只保留R   [h,w,c] c表示通道,根据bgr索引,b为0,g为1,r为2
cur_img = img.copy()
cur_img[:,:,0] = 0  # b通道清零
cur_img[:,:,1] = 0  # g通道清零
cv2.imshow("cur_img",cur_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

只保留G通道显示

python 复制代码
img = cv2.imread("img1.jpg",cv2.IMREAD_COLOR)
b,g,r = cv2.split(img)
# 只保留R   [h,w,c] c表示通道,根据bgr索引,b为0,g为1,r为2
cur_img = img.copy()
cur_img[:,:,0] = 0  # b通道清零
cur_img[:,:,2] = 0  # r通道清零
cv2.imshow("cur_img",cur_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

只保留B通道显示

python 复制代码
img = cv2.imread("img1.jpg",cv2.IMREAD_COLOR)
b,g,r = cv2.split(img)
# 只保留R   [h,w,c] c表示通道,根据bgr索引,b为0,g为1,r为2
cur_img = img.copy()
cur_img[:,:,1] = 0  # g通道清零
cur_img[:,:,2] = 0  # r通道清零
cv2.imshow("cur_img",cur_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

边界填充

python 复制代码
img = cv2.imread("img1.jpg",cv2.IMREAD_COLOR)
top_size,bottom_size,left_size,right_size = (50,50,50,50)

# cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType) borderType为边界填充类型
replicate = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REFLECT101)
wrap = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_WRAP)
constant = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_CONSTANT,value=0)

数值计算

python 复制代码
# 部分数值计算(如图像融合)前提需要两图像shape值相同
img1 = cv2.imread("img1.jpg",cv2.IMREAD_COLOR)
img2 = cv2.imread("img2.jpg",cv2.IMREAD_COLOR)
img3 = img1 + 10    # 相当于3个通道中每一个像素数值都加10
img4 = img1 + img2  # 两张图像中每个像素的rgb三通道数值相加,
                    # 以rgb888为例,如果一个像素的r相加后>255,则该数值等于相加后%255
img5 = cv2.add(img1,img2) # 两张图rgb相加,如果>255,则取最大值255

图像融合

python 复制代码
# 图像融合前提需要两图像shape值相同
img1 = cv2.imread("img1.jpg",cv2.IMREAD_COLOR)
img2 = cv2.imread("img2.jpg",cv2.IMREAD_COLOR)

# cv2.addWeighted(img1,img1权重,img2,img2权重,偏置项(整体提亮多少))
h2 = img2.shape[0]
w2 = img2.shape[1]
img1_new = cv2.resize(img1,(w2,h2))
res = cv2.addWeighted(img1_new,0.4,img2,0.6,0)
cv2.imshow('res',res)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
Percent_bigdata18 小时前
数据治理平台选型解析:AI大模型与智能体如何重塑企业数字基座
大数据·人工智能
牛客企业服务18 小时前
AI面试监考:破解在线面试作弊难题
人工智能·面试·职场和发展
面包会有的,牛奶也会有的。18 小时前
AI 测试平台:WHartTest V1.3.0 更新优化架构
人工智能
2501_9419820518 小时前
结合 AI 视觉:使用 OCR 识别企业微信聊天记录中的图片信息
人工智能·ocr·企业微信
事变天下18 小时前
肾尚科技完成新一轮融资,加速慢性肾脏病(CKD)精准化管理闭环渗透
大数据·人工智能
GEO AI搜索优化助手18 小时前
范式革命——从“关键词”到“意图理解”,搜索本质的演进与重构
人工智能·搜索引擎·生成式引擎优化·ai优化·geo搜索优化
大刘讲IT18 小时前
2025年企业级 AI Agent 标准化落地深度年度总结:从“对话”到“端到端价值闭环”的范式重构
大数据·人工智能·程序人生·ai·重构·制造
一个没有感情的程序猿18 小时前
前端实现人体骨架检测与姿态对比:基于 MediaPipe 的完整方案
机器学习·计算机视觉·前端框架·开源
2301_8234380218 小时前
【无标题】解析《采用非对称自玩实现强健多机器人群集的深度强化学习方法》
数据库·人工智能·算法
沛沛老爹18 小时前
Web开发者快速上手AI Agent:提示词应用优化实战
人工智能·ai·agent·提示词·rag·入门知识