news 2026/5/10 6:00:33

opencv基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
opencv基础

一、读取图片

import cv2 a=cv2.imread('2.png') #读取图片 print(a) cv2.imshow('qie',a) #显示图片,显示图片的名称,数据 b=cv2.waitKey(10000)

import cv2来导入opencv库(cv2是别名)

通过cv2.imread('图片路径')方法填入图片路径来读取图片

通过cv2.imshow('显示框名称',图片变量)

cv2.waitKey() 的参数是毫秒数,表示窗口停留时间,参数为0时会一直停留

二、灰度图片

1.第一种

cv2.cvtColor(图片变量,cv2.COLOR_BGR2GRAY)

通过cv2.cvtColor方法填入参数cv2.COLOR_BGR2GRAY可以将图片变成灰度图

2.第二种
b=cv2.imread('图片路径',0)

在用cv2.imread方法读取图片时可以填入参数0变成灰度图

三、图片的剪裁

a = cv2.imread('2.png')
b = a[30:230,100:300] #对原图进行切片
cv2.imshow('qiepian',b)
cv2.waitKey(0)

通过a[30:230,100:300] 对图片进行区域剪裁,x轴30-230,y轴100-300

四、图片的打码

图片的打码本质上就是通过随机数字的生成是颜色混乱导致打码

通过a[100:200,200:300]=np.random.randint(0,256,(100,100,3))选取一个从 (200,100) 到 (300,200) 的矩形区域(宽 100 像素、高 100 像素),并将这个区域的所有像素值替换成随机生成的 BGR 颜色值。

五、图片的组合与缩放

1.组合

a=cv2.imread('1.png')
b=cv2.imread('2.png')
b[200:300,200:300]=a[100:200,100:200]

通过将一张图片的部分裁剪下来填充到另一张图片上,注意要保持裁剪的大小与填充的大小一致

2.缩放

b=cv2.imread('2.png')
b_new=cv2.resize(b, (500,500))
b_new=cv2.resize(b, dsize=None,fx=0.5,fy=0.5)#缩放到原来的一半

第一个是将图片 b 强制缩放到 宽度 500 像素、高度 500 像素 的固定尺寸,不管原图的宽高比例是多少。

第二个参数:

dsize=None:表示不指定固定目标尺寸,缩放尺寸由 fx 和 fy 决定(必须设为 None 才能生效比例缩放);
fx=0.5:宽度方向的缩放比例(0.5 代表缩小到原来的 50%,2 代表放大到原来的 2 倍);
fy=0.5:高度方向的缩放比例(和 fx 保持一致时,图片比例不变;不一致时仍会变形);

六、图像的运算

#对于+号运算,当数字小于255不变,大于255时得到的数减去256 a=cv2.imread('2.png') b=cv2.imread('1.png') c=a+10 cv2.imshow('c',c) cv2.waitKey(0) c=a[50:350,50:350]+b[50:350,50:350] cv2.imshow('a+b',c) cv2.waitKey(0) cv2.destroyAllWindows() #图像的加权运算 a=cv2.imread('2.png') b=cv2.imread('3.png') a=cv2.resize(a,(400,400)) b=cv2.resize(b,(400,400)) c=cv2.addWeighted(a,0.5,b,0.5,10) cv2.imshow('add',c) cv2.waitKey(0) cv2.destroyAllWindows()

1.纯加法运算:当数字小于255不变,大于255时得到的数减去256

2.加权运算:通过cv2.addWeighted(a,0.5,b,0.5,10)方法使用

参数:第一个0.5是a图像的权重(透明度占比),第二个0.5是b图像的权重,10表示亮度偏移值(常数),可正可负:- 正数:整体提亮(比如 10);- 负数:整体变暗(比如 - 10);- 0:不调整亮度。

注意:两个图片的权重相加为1是最常用的 “无损融合”(像素值不会溢出);如果权重和大于 1,像素值可能超过 255,会被截断为 255会导致图片过曝;如果权重和小于 1,图片整体会变暗。

七、视频文件读取

#打开视频文件 video_capture=cv2.VideoCapture("222.mp4") #视像头:0 #检查视频是否成功打开 if not video_capture.isOpened(): print("无法打开") exit() #循环读取视频帧 while True: #逐帧读取视频 ret, frame = video_capture.read() #ret是布尔值是否成功读取,frame是读取的帧 if not ret: break #将图像从一种颜色空间转化另一种颜色 frame = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #显示当前帧 cv2.imshow('Video',frame) #检查用户是否按下esc键,是退出循环 if cv2.waitKey(20)==27: break #释放资源 video_capture.release() cv2.destroyAllWindows()

1.通过cv2.VideoCapture("222.mp4")方法在双引号内填入视频文件路径即可读取,填入参数0就是打开你电脑的摄像头进去读取

2.video_capture.read()这个方法可以将形成视频的每一帧图片读取到

3.video_capture.release()这个方法来释放视频资源

4.cv2.destroyAllWindows()用来关闭所有窗口

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 1:36:08

快速部署通用图像抠图方案|基于CV-UNet镜像实现高效Alpha通道提取

快速部署通用图像抠图方案|基于CV-UNet镜像实现高效Alpha通道提取 1. 引言:图像抠图的工程化需求与挑战 在电商、广告设计、影视后期和AI内容生成等场景中,高质量图像抠图是基础且高频的需求。传统手动抠图效率低,而早期算法&am…

作者头像 李华
网站建设 2026/5/9 20:22:11

HY-MT1.5-1.8B完整部署:支持网页、字幕、文档多场景

HY-MT1.5-1.8B完整部署:支持网页、字幕、文档多场景 1. 引言:轻量级翻译模型的工程突破 随着多语言内容在互联网中的占比持续上升,高效、精准且低资源消耗的神经机器翻译(NMT)模型成为跨语言应用的核心基础设施。然而…

作者头像 李华
网站建设 2026/5/1 11:03:34

GPT-OSS-20B-WEBUI技术文档:API接口定义与调用示例

GPT-OSS-20B-WEBUI技术文档:API接口定义与调用示例 1. 技术背景与核心价值 随着大语言模型在自然语言处理领域的广泛应用,高效、可扩展的推理服务成为工程落地的关键环节。GPT-OSS-20B-WEBUI 是基于 OpenAI 开源理念构建的一套本地化部署方案&#xff…

作者头像 李华
网站建设 2026/5/2 19:22:03

保存工作流文件的小技巧,团队协作更高效

保存工作流文件的小技巧,团队协作更高效 在使用 Z-Image-ComfyUI 进行图像生成的过程中,工作流的可复用性与团队协作效率是决定项目推进速度的关键因素。ComfyUI 的节点式设计虽然带来了高度灵活的流程控制能力,但也对“如何有效管理、共享和…

作者头像 李华
网站建设 2026/5/6 16:44:10

Youtu-2B企业级部署:支持二次集成的API服务搭建

Youtu-2B企业级部署:支持二次集成的API服务搭建 1. 背景与技术定位 随着大语言模型(LLM)在企业场景中的广泛应用,如何在有限算力条件下实现高性能、低延迟的本地化部署,成为众多开发者和企业的核心诉求。Youtu-LLM-2…

作者头像 李华
网站建设 2026/5/5 23:23:04

足球大小盘怎么看(大小指数)?

足球中的大小盘是对一场比赛90分钟内(不含加时赛),双方总进球的一个玩法。也是进球数的一种不错的判断方法,一般会先预设出一个“盘口值”,比如2.5球,你可以预测总进球数“大于”或者“小于”这个值,也就是…

作者头像 李华