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

Python OpenCV 教学取得视频资讯

这篇教学会介绍使用OpenCV,取得影像的长宽尺寸、以及读取影像中某些像素的颜色数值。

因为程式中的OpenCV 会需要使用镜头或GPU,所以请使用本机环境( 参考:使用Python 虚拟环境) 或使用Anaconda Jupyter 进行实作( 参考:使用Anaconda ) ,并安装OpenCV 函式库( 参考:OpenCV函式库)。

shape 取得长宽与色版数量

使用OpenCV 的imread() 方法读取的影像后,透过shape 属性,能取得影像的宽、长和色版数量,通常色版数量( 色彩通道) 会由R、G、B 色光三原色组成,如果影像不具有三个色版,则只会取得宽与长。

import cv2
img = cv2.imread('meme.jpg')
print(img.shape)            # 得到 (360, 480, 3)
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)              # 按下任意键停止
cv2.destroyAllWindows()

size 取得像素总数

使用OpenCV 的imread() 方法读取的影像后,透过size 属性,能取得影像的像素总数,像素总数为「宽x 长x 色版数量」

import cv2
img = cv2.imread('meme.jpg')
print(img.size)            # 518400 ( 360x480x3 )
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

dtype 取得数据类型

使用OpenCV 的imread() 方法读取的影像后,透过dtype 属性,能取得影像的数据类型

import cv2
img = cv2.imread('meme.jpg')
print(img.dtype)            # uint8
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

取得每个像素的色彩资讯

使用OpenCV 的imread() 方法读取的影像后,可以印出图片的「三维阵列」资讯,以下方的程式码为例,可以印出一张4x4 的图片阵列,可以看到每一个像素都有B、G、R 三个颜色资讯,颜色范围均是0~255 ( 范例图片将4x4 放大,比较容易理解)。

import cv2
img = cv2.imread('meme-test.png')
print(img)
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

了解原理后,也可以使用变数来装载图片的色彩资讯。

import cv2
img = cv2.imread('meme-test.png')
b, g, r = cv2.split(img)
print(b)
print(g)
print(r)
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

既然能取得图片的每个像素资讯,就能针对这些像素进行修改,举例来说,透过阵列切片赋值的方法,就能将一张去除图片中的红色、绿色或蓝色。

import cv2
img_blue = cv2.imread('meme.jpg')
img_green = cv2.imread('meme.jpg')
img_red = cv2.imread('meme.jpg')
img_blue[:,:,1] = 0    # 将绿色设为 0
img_blue[:,:,2] = 0    # 将红色设为 0
img_green[:,:,0] = 0   # 将蓝色设为 0
img_green[:,:,2] = 0   # 将红色设为 0
img_red[:,:,0] = 0     # 将蓝色设为 0
img_red[:,:,1] = 0     # 将绿色设为 0
cv2.imshow('oxxostudio blue', img_blue)
cv2.imshow('oxxostudio green', img_green)
cv2.imshow('oxxostudio red', img_red)
cv2.waitKey(0)
cv2.destroyAllWindows()

http://www.lryc.cn/news/396314.html

相关文章:

  • 高频面试题基本总结回顾1(含笔试高频算法整理)
  • 【回溯+双指针算法题记录】回文字符串汇总
  • 【AI资讯早报】AI科技前沿资讯概览:2024年7月10日早报
  • DDR3 SO-DIMM 内存条硬件总结(一)
  • 磁力搜索引擎是什么?为什么有些资源喜欢用磁力链接?
  • Vue基础--v-model/v-for/事件属性/侦听器
  • 『大模型笔记』GraphRAG:用于复杂数据发现的新工具现已在GitHub上发布
  • LabVIEW机器视觉技术在产品质量检测中有哪些应用实例
  • 【Linux】多线程_2
  • 58、基于径向基神经网络的曲线拟合(matlab)
  • 3.上传图片(阿里云空间,oss验证)
  • 仪表板展示|DataEase看中国:2023年中国新能源汽车经济运行情况分析
  • “Numpy数据分析与挖掘:高效学习重点技能“
  • 百川工作手机实现销售管理微信监控系统
  • RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了
  • 华为防火墙 拓扑搭建1
  • Linux 利用命名空间创建一个自己的“容器“
  • RAG的学习与实践——LangChain和LlamaIndex学习笔记
  • Python爬虫原理以及3个小案例(源码)
  • Vagrant配合VirtualBox搭建虚拟机
  • Elasticsearch 建议(Suggesters):实现自动补全和拼写检查
  • 部署过docker后,防火墙firewall与iptables的基本指令
  • 华为 RIP 协议中 RIP 兼容版本、RIPv1、RIPv2 在收发 RIP 报文时的区别
  • 深度学习pytorch多机多卡网络配置桥接方法
  • 服务器信息获取工具
  • uniapp 防止重复提交数据
  • 线程池工具类
  • 印尼“支付宝” DANA 如何借力 OceanBase 实现3个“关键零”
  • 2018-2022 年份微博签到数据集
  • Avalonia开发实践(二)——开发带边框的Grid