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

详细介绍: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()用来关闭所有窗口

http://www.jsqmd.com/news/382561/

相关文章:

  • 第11届新加坡国际亚新艺术节圆满落幕 700余选手共赴艺术盛宴
  • 大数据架构中的数据生命周期管理策略
  • 方达炬〖发明未知种品〗:合股利润增加值
  • Zig介绍
  • 因果推理在AI决策系统中的实现与应用
  • 大数据时代:如何打造高价值数据产品的10个关键步骤
  • 2026年知名的环保地暖板,高抗压地暖板厂家行业实力名录 - 品牌鉴赏师
  • 移动话费充值卡回收时需要注意哪些问题呢? - 京顺回收
  • 安装Java (Linxu 和 Windows 环境)
  • 2026年有实力的外墙挤塑板,室内挤塑板厂家品牌推荐榜单 - 品牌鉴赏师
  • MongoDB助力大数据高效存储与处理
  • 2026年2月石墨聚苯板制造厂家推荐,节能保温板材生产实力解析 - 品牌鉴赏师
  • 2026年优秀的模塑聚苯板,外墙石墨板厂家行业精选名录 - 品牌鉴赏师
  • 2026年诚信的室内岩棉板,憎水岩棉板厂家选购推荐手册 - 品牌鉴赏师
  • SIEMENS西门子杯 2021初赛电梯最终版:西门子六部十层电梯程序跑分解析
  • 【毕业设计】SpringBoot+Vue+MySQL 火锅店管理系统平台源码+数据库+论文+部署文档
  • SpringBoot+Vue 交通管理在线服务系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • AI绘画风格迁移:用Z-Image-Turbo快捷模仿大师作品技法
  • unity 实现3D空间音效特性:从0到1避坑指南(附完整代码)
  • Selenium EdgeDriver深度解析
  • Selenium GeckoDriver深度解析
  • 寒假第18天
  • 【CTFshow-pwn系列】03_栈溢出【pwn 046】详解:Ret2Libc 之 64位动态泄露
  • Selenium ChromeDriver深度解析
  • 摸鱼神器,大神开发
  • 如何借助腾讯云防护直播云服务器?
  • Python Web 开发进阶实战:无障碍深度集成 —— 构建真正包容的 Flask + Vue 应用 - 指南
  • Java 多进程/多线程管理 vs PHP-FPM
  • Rust 宏 ! - 教程
  • 2026年评价高的开利防爆风机盘管厂家推荐及选择指南 - 品牌鉴赏师