当前位置: 首页 > 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()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 电动卡丁车语音芯片方案选型:让驾驶体验更智能、更安全
  • el-date-picker 禁用 之前 和 之后 的时间
  • uniapp easycom组件冲突
  • 云服务部署和管理:容器化与微服务的融合之道
  • mybatisplus不想输出批量插入和查询日志
  • 观察矩阵(View Matrix)、投影矩阵(Projection Matrix)、视口矩阵(Window Matrix)及VPM矩阵及它们之间的关系
  • 微服务-初级篇
  • mac|Mac压缩与解压缩
  • 在程序中引用cuda.memory函数监控GPU内存
  • Linux系统编程——线程控制
  • 聚道云赋能,财务流程大提速,NC凭证对接一键通!
  • js面试题2024
  • tessy 单元测试:小白入门指导手册
  • DAY2:插件学习
  • 【Word】快速对齐目录
  • 时间复杂度分析经典问题——最大子序列和
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Android 架构优化~MVP 架构改造
  • C++类中的特殊成员函数
  • const let
  • Docker: 容器互访的三种方式
  • httpie使用详解
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux后台研发超实用命令总结
  • Lucene解析 - 基本概念
  • node和express搭建代理服务器(源码)
  • SAP云平台里Global Account和Sub Account的关系
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 收藏好这篇,别再只说“数据劫持”了
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • (23)Linux的软硬连接
  • (31)对象的克隆
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (LLM) 很笨
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)WCF的Binding模型
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (十八)Flink CEP 详解
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)Linux下编译安装log4cxx
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .bat批处理(六):替换字符串中匹配的子串
  • .Net 6.0--通用帮助类--FileHelper
  • .NET C# 配置 Options
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET MVC第三章、三种传值方式
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET6 命令行启动及发布单个Exe文件
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET命名规范和开发约定