【Opencv 系列】第1章 图像基础
通过本套课程,可以学到:
1.opencv的基本操作
2.两个案例,目标追踪&人脸识别
对重点内容,我会提示,包括我再准备这套课程过程中遇到的坑点!
最后代码我会放到git上,章节顺序一致:https://github.com/justinge/opencv_tutorial.git
系列文章目录
第1章 Opencv 图像基础 和 argparse模块
第2章 Opencv 读取、保存图片和视频
第3章 Opencv 图像的8种变换
第4章 Opencv 直方图
第5章 Opencv 画出基本图形以及显示文本
第6章 Opencv 人脸检测(Haar/dlib) & 关键点检测
第7章 Opencv 目标跟踪
第8章 Opencv 人脸识别
文章目录
- 系列文章目录
- 1 知识点
- 1.1 基本概念
- 1.2. 坐标系
- 1.3 基本操作
- 1.4 BGR顺序
- 2. 实际应用
- 2.1 对待彩色图
- 2.2 用plt的方式显示图片
- 3. argparse模块
- 3.1 使用方式
- 总结
1 知识点
1.1 基本概念
像素:计算机屏幕上所能显示的最小单位。用来表示图像的单位。
RGB,R : Red,G : Green,B : Blue,范围0~255。



1.2. 坐标系
这个logo像素是:18 X 20 = 360 pixels
坐标系的原点(0,0)在左上角,每一个点的坐标是:
(height, width, channel)。

1.3 基本操作
基于彩色图片
- 读取图片: cv2.imread()
- 读取图片的形状: img.shape. 返回一个(rows,heights,channels) 注意和pytorch不同
- 获取图片大小: img.size, 返回 rowsheightschannels.
- 显示图片:cv2.imshow()
- 等待:cv2.waitKey(0)
- 关闭:cv2.destroyAllWindows()
基于灰度图片
- 读取图片: cv2.imread(img,cv2.IMREAD_GRAYSCALE)
- 获取图片形状:img.shape,返回一个(rows,heights), 注意这里没有channels了 因为就一个通道了.
1.4 BGR顺序
opencv的 channel顺序是BGR, pillow模块和pytorch都是RGB的,这个需要注意,另外还有channels=4的一种格式的图片.png的,读取的时候需要转成三维的,反正吧,不是3channel,就转成3channel是个好习惯. 一般框架都会有这一步.

一个像素点也是有三个值的.
2. 实际应用
2.1 对待彩色图

import cv2
img = cv2.imread("../images/children.jpg")
# 显示图片
cv2.imshow('image1',img)
# 把一块写成红色
img[6:40,6:40] = (0,0,255)
cv2.imshow('image2',img)
# 等待
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()
给logo的颜色换个顺序

2.2 用plt的方式显示图片
import matplotlib.pyplot as plt
plt.subplot(121)
plt.imshow(img_logo)
plt.subplot(122)
plt.imshow(img_logo_new)
plt.show()

3. argparse模块
看名字 argparse = arg+parse 也就是命令行参数解析的意思
argparse模块使编写用户友好的命令行接口变得容易,程序定义了它需要的参数,而argparse将找出如何从sys.argv中解析这些参数,argparse模块还会自动生成帮助和使用消息,并在用户给程序提供无效参数时发出错误信息。
3.1 使用方式
import argparse # 导入库
parser = argparse.ArgumentParser() # 获取所有参数
parser.add_argument(“-n1”, “--number one”, help=“第一个参数”, type=int) # 添加参数1
parser.add_argument(“-n2”, “--number two”, help=“第二个参数”, type=int) # 添加参数2
args = parser.parse_args() # 解析所有参数
(1)官网教程1:
https://docs.python.org/3/howto/argparse.html
(2)官网教程2:https://docs.python.org/3/library/argparse.html#module-argparse
总结
## 两种方式来挑整通道顺序
img_logo_new = cv2.cvtColor(img_logo, cv2.COLOR_BGR2RGB) # BGR -> RGB## 手动方式转成RGB
b,g,r = cv2.split(img_logo)
img_new = cv2.merge([r, g, b])
git地址:https://github.com/justinge/opencv_tutorial.git
相关文章:
【Opencv 系列】第1章 图像基础
通过本套课程,可以学到: 1.opencv的基本操作 2.两个案例,目标追踪&人脸识别 对重点内容,我会提示,包括我再准备这套课程过程中遇到的坑点! 最后代码我会放到git上,章节顺序一致:https://github.com/justinge/opencv_tutorial.git 系列文章目录 第1章 Opencv 图像基础 和 …...
创建和销毁对象——遇到多个构造器参数时要考虑使用构建器
静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数。比如用一个类表示包装食品外面显示的营养成分标签。这些标签中有几个域是必需的:每份的含量、每罐的含量以及每份的卡路里。还有超过20个的可选域:总脂肪量、饱和脂…...
【c++学习】入门c++(中)
目录一. 前言二. 函数重载1. 概念2.函数名修饰规则三 .引用(&)1. 概念2. 引用特性3.应用1.做参数2. 做返回值3. 传值、传引用效率比较4.引用和指针的区别四 . 结语一. 前言 小伙伴们大家好,今天我们继续学习c入门知识,今天的…...
论文阅读_AlphaGo_Zero
论文信息 name_en: Mastering the game of Go without human knowledge name_ch: 在没有人类知识的情况下掌握围棋游戏 paper_addr: http://www.nature.com/articles/nature24270 doi: 10.1038/nature24270 date_publish: 2017-10-01 tags: [‘深度学习’,‘强化学习’] if: 6…...
一文教你用Python创建自己的装饰器
python装饰器在平常的python编程中用到的还是很多的,在本篇文章中我们先来介绍一下python中最常使用的staticmethod装饰器的使用。 目录一、staticmethod二、自定义装饰器python类实现装饰器python函数嵌套实现装饰器多个装饰器调用三、带参数的装饰器一、staticmet…...
华为OD机试 - 任务总执行时长(JS)
任务总执行时长 题目 任务编排服务负责对任务进行组合调度。参与编排的任务又两种类型,其中一种执行时长为taskA,另一种执行时长为taskB。任务一旦开始执行不能被打断,且任务可连续执行。服务每次可以编排num个任务。 请编写一个方法,生成每次编排后的任务所有可能的总执…...
pytorch离线快速安装
1.pytorch官网查看cuda版本对应的torch和torchvisionde 版本(ncvv -V,nvidia-sim查看cuda对应的版本) 2.离线下载对应版本,网址https://download.pytorch.org/whl/torch_stable.html 我下载的: cu113/torch-1.12.0%2Bcu113-cp37-cp37m-win_…...
华为OD机试 - 数组合并(JS)
数组合并 题目 现在有多组整数数组,需要将他们合并成一个新的数组。 合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中, 取完的内容会删除掉, 如果该行不足固定长度或者已经为空, 则直接取出剩余部分的内容放到新的数组中,继续下一行。 如样例1,获得长度3,先遍…...
不要让GPT成为你通向“学业作弊”的捷径——使用GPT检测工具来帮助你保持正确的方向
不要让GPT成为你通向“学业作弊”的捷径——使用GPT检测工具来帮助你保持正确的方向 最近,多所美国高校以及香港大学等都明确禁止在校使用ChatGPT等智能文本生成工具。GPT(Generative Pre-trained Transformer)是一种自然语言处理技术&#x…...
基于matlab的斜视模式下SAR建模
一、前言此示例说明如何使用线性 FM (LFM) 波形对基于聚光灯的合成孔径雷达 (SAR) 系统进行建模。在斜视模式下,SAR平台根据需要从宽侧斜视一定角度向前或向后看。斜视模式有助于对位于当前雷达平台位置前面的区域进行…...
15-基础加强-1-类加载器反射
文章目录1.类加载器1.1类加载器【理解】1.2类加载的过程【理解】1.3类加载的分类【理解】1.4双亲委派模型【理解】1.5ClassLoader 中的两个方法【应用】2.反射2.1反射的概述【理解】2.2获取Class类对象的三种方式【应用】 第1步:获取类的Class对象2.3反射获取构造方…...
基于SSM,Spring, BootStrap 毕业设计管理系统的设计与实现
目录 一.前言介绍 二、主要技术 2.1 SSM框架介绍 2.2 MYSQL数据库 2.3 持久层框架MyBatis 2.4 前端框架BootStrap 三. 系统设计 3.1 系统架构设计 3.2 系统功能模块 3.2.1 学生模块 3.2.2 教师模块 3.2.3 管理员模块 四、数据库设计 4.1 数据分析 4.2 概念设计 …...
一招鉴别真假ChatGPT,并简要介绍ChatGPT、GPT、GPT2和GPT3模型之间的区别和联系
以下内容除红色字体部分之外,其他均来源于ChatGPT自动撰写。 ChatGPT是基于GPT模型的对话生成模型,旨在通过对话模拟实现自然语言交互。它是为了改善人机对话体验而设计的,主要应用于聊天机器人、智能客服等场景。 与GPT模型相比,…...
华为OD机试 - 特异性双端队列(JS)
特异性双端队列 题目 有一个特异性的双端队列,该队列可以从头部到尾部添加数据,但是只能从头部移除数据。 小A一次执行 2n 个指令往队列中添加数据和移除数据, 其中 n 个指令是添加数据(可能从头部也可以从尾部添加) 依次添加 1 到 n , n 个指令是移出数据 现在要求移除数…...
Nginx自动封禁可疑Ip
文章目录一、Nginx封禁ip1、简介2、nignx 禁止IP访问2.1 方法一2.2 方法二3、关于 deny 的使用二、脚本自动封禁Ip1、流程介绍2、脚本实战2.1 核心脚本解释2.2 编写shell脚本2.3 crontab定时一、Nginx封禁ip 1、简介 在网站维护过程中,有时候我们需要对一些IP地址…...
分布式事务--理论基础
1、事务基础 1.1、什么是事务 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。 1.2、本地事务 在同一个进程内,控制同一数据源的事务,称为本地事务。例如数据库事务。 在计…...
Matlab数学建模常用算法及论文插图绘制模板资源合集
最近有很多朋友咨询我关于Matlab论文插图绘制方面的问题。 问了一下,这些朋友中,除了写博士论文的,大部分都是要参加美赛的。 这让我突然想起,自己曾经为了水论文,购买过一批Matlab数学建模的资料。 想了想…...
C语言【动态内存管理 后篇】
动态内存管理 后篇🫅经典例题🤦♂️题目1🤦♂️题目2🤦♂️题目3🤦♂️题目4🫅C/C程序的内存开辟前面的一篇文章动态内存管理 前篇,我们已经了解过了动态内存管理的相关信息,…...
四大步骤,教你彻底关闭Win10自动更新
文章目录一、禁用Windows Update服务二、在组策略里关闭Win10自动更新相关服务三、禁用任务计划里边的Win10自动更新四、在注册表中关闭Win10自动更新参考资料一、禁用Windows Update服务 1、同时按下键盘 Win R,打开运行对话框,然后输入命令 services…...
通信算法之一百零四:QPSK完整收发仿真链路
1.发射机物理层基带仿真链路 1.1 % Generates the data to be transmitted [transmittedBin, ~] BitGenerator(); 2.2 % Modulates the bits into QPSK symbols modulatedData QPSKModulator(transmittedBin); 2.3 % Square root Raised Cosine Transmit Filter %comm…...
手把手教你用NEWLab搭建智能温控系统(附完整代码)
手把手教你用NEWLab搭建智能温控系统(附完整代码) 在智能家居和工业自动化领域,温度控制始终是核心需求之一。无论是保持室内舒适环境,还是确保精密设备的稳定运行,一套可靠的温控系统都不可或缺。对于物联网初学者和…...
Node.js全栈项目集成Wan2.1-UMT5:实时视频生成进度推送
Node.js全栈项目集成Wan2.1-UMT5:实时视频生成进度推送 最近在做一个挺有意思的项目,需要把Wan2.1-UMT5这个视频生成模型集成到我们自己的系统里。用户上传一段文字描述,系统就能生成一段短视频。听起来挺酷,对吧?但问…...
LongCat-Image-Edit V2影视后期应用:特效预处理与素材生成
LongCat-Image-Edit V2影视后期应用:特效预处理与素材生成 在影视后期制作中,每一个镜头的完美呈现都需要经过精心的打磨和处理。传统的后期流程往往需要艺术家们手动完成特效预处理、素材生成和连续帧编辑,这不仅耗时耗力,还难以…...
终极指南:如何参与Carbonyl开源终端浏览器项目贡献
终极指南:如何参与Carbonyl开源终端浏览器项目贡献 【免费下载链接】carbonyl Chromium running inside your terminal 项目地址: https://gitcode.com/gh_mirrors/ca/carbonyl Carbonyl是一个创新的开源项目,它让Chromium浏览器能够在终端中运行…...
原神玩家效率革命:BetterGI开源自动化解决方案全解析
原神玩家效率革命:BetterGI开源自动化解决方案全解析 【免费下载链接】better-genshin-impact 🍨BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools For …...
Flash内容重生:CefFlashBrowser如何让经典Flash游戏与课件重获新生
Flash内容重生:CefFlashBrowser如何让经典Flash游戏与课件重获新生 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 你是否还在怀念那些曾经风靡一时的Flash游戏?是…...
HY-MT1.5-1.8B助力内容本地化:一键翻译33种语言,保留原文格式
HY-MT1.5-1.8B助力内容本地化:一键翻译33种语言,保留原文格式 1. 引言 1.1 多语言翻译的挑战与机遇 在全球化的数字时代,内容本地化已成为企业出海、文化交流和技术传播的关键环节。传统翻译工具往往面临三大痛点:语言覆盖有限…...
老旧Windows 7系统硬件适配难题的技术解决方案:开源社区驱动的扩展支持包
老旧Windows 7系统硬件适配难题的技术解决方案:开源社区驱动的扩展支持包 【免费下载链接】win7-sp2 UNOFFICIAL Windows 7 Service Pack 2, to improve basic Windows 7 usability on modern systems and fully update Windows 7. 项目地址: https://gitcode.com…...
gte-base-zh Docker Compose部署:一键编排Xinference+gte-base-zh+WebUI服务栈
gte-base-zh Docker Compose部署:一键编排Xinferencegte-base-zhWebUI服务栈 1. 引言:为什么需要一键部署文本嵌入服务? 如果你正在做智能客服、文档检索或者内容推荐系统,肯定遇到过一个问题:怎么让计算机真正“理解…...
SDMatte模型推理参数详解:平衡速度与精度的调优手册
SDMatte模型推理参数详解:平衡速度与精度的调优手册 1. 前言:为什么需要参数调优 第一次用SDMatte抠图时,你可能遇到过这种情况:明明模型效果很好,但要么等半天才出结果,要么生成边缘毛毛糙糙。这往往是因…...
