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.mzph.cn/pingmian/43526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python的51job招聘数据采集与可视化项目实践

项目背景与目标 在当今竞争激烈的就业市场中,深入分析招聘信息对于求职者和企业都具有重要意义。基于Python的51job招聘数据采集与可视化项目旨在通过自动化手段高效获取大量招聘信息,并对这些数据进行深度分析和展示。 51job作为中国领先的招聘网站&…

RockyLinux9上安装Nacos2.3.0(非Docker安装)

RockyLinux9上安装Nacos2.3.0 说明什么是Nacos下载并安装创建一个nacos-conf数据库修改application.properties文件 启动访问网址查看是否成功 开启访问鉴权 说明 本文采用的是:安装包安装,非Docker安装,系统采用的Rocky Linux9.4。   当前…

C++ 【 Open3D 】 读取、可视化并保存点云

一、读取常见点云 #include <iostream> #include <Open3D/Open3D.h>int main(int argc, char* argv[]) {std::string fileName("hand.pcd");auto cloud_ptr std::make_shared<open3d::geometry::PointCloud>();if (open3d::io::ReadPointCloud(f…

警钟!电池储能安全事故频发!物联网技术如何加强储能安全排查?

在新能源时代背景下&#xff0c;储能系统作为能源转型的关键支撑技术&#xff0c;其安全问题日益凸显&#xff0c;尤其是近期海外电池项目连续发生的事故&#xff0c;为全球储能行业敲响了警钟。面对这一挑战&#xff0c;物联网技术以其强大的数据采集、智能分析与远程监控能力…

Python基础知识——(002)

文章目录 P8——7. input函数的使用 基本的输入函数input P9——8. Python中的注释 P10——9. Python中的缩进与本章总结 本章总结 P11——10. 章节习题 P8——7. input函数的使用 基本的输入函数input 语法结构&#xff1a; x input(提示文字) 注意事项&#xff1a;无论输…

PMON的解读和开发

提示&#xff1a;龙芯2K1000PMON相关记录 文章目录 1 PMON的发展和编译环境PMONPMON2000 2 PMON2000的目录结构3 Targets目录的组成4 PMON编译环境的建立5 PMON2000的框架6 异常向量表7 Pmon的空间分配8 PMON的汇编部分(starto.S或sbdreset.S)的解读Start.SC代码部分dbginit 9 …

【Adobe】Adobe Dimension 3D渲染和设计软件

一、Adobe Dimension软件介绍 1. 软件背景与功能 Adobe Dimension最初于1994年推出&#xff0c;最初称为“QuarkXPress 3D”&#xff0c;后逐渐发展为现在的Adobe Dimension。作为Adobe Creative Suite的一部分&#xff0c;Dimension与其他Adobe创意软件&#xff08;如Photos…

点云曲面提取

csdn是不是有有什么大bing&#xff1f;gif只能上传5m我吐了在线GIF动图压缩 - docsmall 在线GIF动图压缩工具,在线GIF动图压缩软件 代码整理中

单元测试Spring 上下文加载过程中遇到的阻塞或死锁问题

IDEA单元测试一直转圈&#xff0c;阻塞&#xff0c;前置后置的方法都不执行&#xff0c;无任何输出 1.单元测试类 SpringBootTest(classes {BareMetalApplication.class}) RunWith(SpringRunner.class) public class K8sUserNfsStoreInitServiceImplTest {BeforeEachpublic…

全域数据处理

#!/usr/bin/env python # coding: utf-8# In[6]:# encoding=utf-8 # encoding=utf-8 import pandas as pd import numpy as np import re import time import subprocess,sys #import logging from operator import itemgetter import os import logging定义一个类,用于下文…

【结构性型模式-适配器模式】

定义 将一个类的接口转换成客户希望的另外一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式分为类适配器模式和对象适配器模式&#xff0c;前者类之间的耦合度比后者高&#xff0c;且要求程序员了解现有组件库中的相关组件的内部结…

基于Java+SpringMvc+Vue技术的图书管理系统的设计与实现(60页论文参考)

博主介绍&#xff1a;硕士研究生&#xff0c;专注于Java技术领域开发与管理&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架构思想、较扎实的技术功底和资深的项目管理经…

RISC-V 指令系统

指令系统 指令集 指令集从本质上可以分为复杂指令集&#xff08;Complex Instruction Set Computing&#xff0c;CISC&#xff09;和精简指令集&#xff08;Reduced Instruction Set Computing&#xff0c;RISC&#xff09;两种。复杂指令集的特点是能够在一条指令内完成很多…

贪心算法合集一

1005.K次取反后最大化的数组和 给定一个整数数组 A&#xff0c;我们只能用以下方法修改该数组&#xff1a;我们选择某个索引 i 并将 A[i] 替换为 -A[i]&#xff0c;然后总共重复这个过程 K 次。&#xff08;我们可以多次选择同一个索引 i。&#xff09; 以这种方式修改数组后…

如何理解数据模型?颗粒度、维度及指标?

问题1 什么是数据模型&#xff1f; 数据模型反映在数据库中就是一张表&#xff0c;该表把他分开来看有以下关注的点。 &#xff08;1&#xff09;主键&#xff1a;表明该表主要的分析对象&#xff0c;比如我们的分析对象是订单、是商品、是门店&#xff0c;那么主键就是订单id,…

Qt 线程 QThread类详解

Qt 线程中QThread的使用 在进行桌面应用程序开发的时候&#xff0c; 假设应用程序在某些情况下需要处理比较复杂的逻辑&#xff0c; 如果只有一个线程去处理&#xff0c;就会导致窗口卡顿&#xff0c;无法处理用户的相关操作。这种情况下就需要使用多线程&#xff0c;其中一个…

你所不知道的关于AI的27个冷知识——算法的作用

算法的作用 亲爱的朋友们,今天我们要探讨的是一个关于“魔法配方”的故事,也就是AI世界里的算法。这些算法就像是古老的魔法咒语,让AI能够在我们生活中的各个角落施展奇迹。让我们一起来揭开这些神奇算法的面纱,看看它们是如何在幕后默默工作的。 什么是算法? 首先,让…

昇思MindSpore学习笔记6-02计算机视觉--ResNet50迁移学习

摘要&#xff1a; 记录MindSpore AI框架使用ResNet50迁移学习方法对ImageNet狼狗图片分类的过程、步骤。包括环境准备、下载数据集、数据集加载、构建模型、固定特征训练、训练评估和模型预测等。 一、概念 迁移学习的方法 在大数据集上训练得到预训练模型 初始化网络权重参数…

【机器学习】特征选择:精炼数据,提升模型效能

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 特征选择&#xff1a;精炼数据&#xff0c;提升模型效能引言为何进行特征选择&a…

Android面试题汇总-框架技术

一、OkHttp OkHttp是一个流行的HTTP客户端库&#xff0c;用于发送和接收HTTP网络请求。以下是OkHttp的关键特性和工作原理的概述&#xff1a; 执行请求: execute() 方法: 同步执行HTTP请求&#xff0c;返回Response对象。enqueue() 方法: 异步执行HTTP请求&#xff0c;通过Ca…