python-opencv 培训课程笔记(1)

python-opencv 培训课程笔记(1)

博主参加了一次opencv库的培训课程,把课程所学整理成笔记,供大家学习,第一次课程包括如下内容:

1.读取图像

2.保存图像

3.使用opencv库显示图像

4.读取图像为灰度图像

5.读取视频或者摄像头

6.颜色通道的拆分和合并

7.边界填充

8.图像大小修改操作(resize)

9.数值计算

下面我们就开始内容介绍:
首先需要先导入相关库:

import os
import cv2
import  matplotlib.pyplot as plt
import numpy as np

第二步设置我们的文件读取路径,和文件保存路径:

path=r'D:\learn\photo\cv\cat.jpg'
path_dog=r'D:\learn\photo\cv\dog.jpg'
path2=r'D:\learn\photo\cv\cat_save.jpg'

1.读取图像


# imread(path,way)
#way=0 灰度图。way=1 彩图
img=cv2.imread(path)
img_dog=cv2.imread(path_dog)

imread默认读取彩图,如果后面加一个参数0,那么读取的就是灰度图。

2.保存图像

cv2.imwrite(path2,img_gray)

3.使用opencv库显示图像



def cv_show(name,img):
    cv2.imshow(name,img)
    #cv2.waitKey(0),接收0,表示窗口暂停
    cv2.waitKey(0)
    #销毁所有窗口
    cv2.destroyAllWindows()
cv_show('cat',img)

显示如下:
在这里插入图片描述

4.读取图像为灰度图像


img_gray=cv2.imread(path,0)

cv_show('gray_cat',img_gray)

在这里插入图片描述

5.读取视频或者摄像头

path_video=r'D:\learn\photo\cv\test.mp4'
vc=cv2.VideoCapture(0)#启用摄像头
vc=cv2.VideoCapture(path_video)#读取视频





if vc.isOpened():
    ret,frame=vc.read()

else :
    ret=False

while ret:
    if ret :
        img_c=cv2.cvtColor(frame,1)#进行通道转换
        cv2.imshow('video',img_c)
           # cv_show('video',frame)
        if cv2.waitKey(100) & 0xFF==27:
            break
    ret,frame=vc.read()

在这里插入图片描述

6.颜色通道的拆分和合并

def img_rgb_split(img):


    r,g,b=cv2.split(img)
    print(r.shape)
    return r,g,b

#颜色通道的合并

def img_rgb_merge(r,g,b):

   img=cv2.merge(r,g,b)
   return img

r,g,b=img_rgb_split(img)

cv_show('r_cat',r)
cv_show('g_cat',g)
cv_show('b_cat',b)

在这里插入图片描述

在这里插入图片描述

7.边界填充


top_size,bottom_size,left_size,right_size=(50,50,50,50)
#复制法,复制最边缘像素 
replicate=cv2.copyMakeBorder(
    img,
    top_size,bottom_size,left_size,right_size,
    borderType=cv2.BORDER_REFLECT


    )
#反射法,在图像中指定像素的两边进行反射复制,
replicate101=cv2.copyMakeBorder(
    img,
    top_size,bottom_size,left_size,right_size,
    borderType=cv2.BORDER_REFLECT101


    )
#反射法,#以最边缘像素为轴
replicate_101=cv2.copyMakeBorder(
    img,
    top_size,bottom_size,left_size,right_size,
    borderType=cv2.BORDER_REFLECT_101


    )
#包装法
wrap=cv2.copyMakeBorder(
    img,
    top_size,bottom_size,left_size,right_size,
    borderType=cv2.BORDER_WRAP

    )

#常量法
constrant=cv2.copyMakeBorder(
    img,
    top_size,bottom_size,left_size,right_size,
    borderType=cv2.BORDER_CONSTANT,
    value=0

    )

plt.subplot(231)
plt.imshow(img)
plt.title('img')

plt.subplot(232)
plt.imshow(replicate)
plt.title('REFLECT')
plt.subplot(233)
plt.imshow(replicate101)
plt.title('REFLECT101')
plt.subplot(234)
plt.imshow(replicate_101)
plt.title('REFLECT_101')
plt.subplot(235)
plt.imshow(wrap)
plt.title('wrap')
plt.subplot(236)
plt.imshow(constrant)
plt.title('constrant')
plt.show()

在这里插入图片描述

8.图像大小修改操作(resize)

img_dog=cv2.resize(img_dog,(500, 414))

9.数值计算


img_cat=img+10
plt.subplot(231)
plt.imshow(img)
plt.title('cat')

plt.subplot(232)
plt.imshow(img_cat)
plt.title('cat+10')

img_cat_dog=img+img_dog

plt.subplot(233)
plt.imshow(img_cat_dog)
plt.title('cat+dog')
plt.subplot(234)
plt.imshow(img_dog)
plt.title('dog')

img_weight=cv2.addWeighted(img,0.4,img_dog,0.6,0)
plt.subplot(235)
plt.imshow(img_weight)
plt.title('cat+dog_wight')

plt.show()

结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/165705.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

常见树种(贵州省):003柏类

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、柏木 …

【Go入门】Web工作方式

【Go入门】 Web工作方式 我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后,到底隐藏了些什么呢? 对于普通的上网过程,系统其实是这样做的&…

OpenAI Assistants-API简明教程

OpenAI在11月6号的开发者大会上,除了公布了gpt4-v、gpt-4-turbo等新模型外,还有一个assistants-api,基于assistants-api开发者可以构建自己的AI助手,目前assistants-api有三类的工具可以用。首先就是之前大火的代码解释器(Code In…

Ubuntu系统安装Python3.6.8-Python源代码编译安装-Python环境安装

一、背景 本文将着重介绍如何在Python环境下,安装Python3.6.8,以满足在Ubuntu系统中使用Python的需求。 二、详细步骤 安装Python的方法有很多,本文中我们采用源代码的方式安装Python,首先我们需要下载Python源代码:源…

Lesson 04 模板入门

C:渴望力量吗,少年? 文章目录 一、泛型编程1. 引入2. 函数模板(1)函数模板概念(2)函数模板格式(3)函数模板的原理(4)函数模板的实例化&#xff08…

【ATTCK】MITRE Caldera-路径发现插件

CALDERA是一个由python语言编写的红蓝对抗工具(攻击模拟工具)。它是MITRE公司发起的一个研究项目,该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的,能够较真实地APT攻击行为模式。 通过CALDERA工具,安全…

git基本用法和操作

文章目录 创建版本库方式:Git常用操作命令:远程仓库相关命令分支(branch)操作相关命令版本(tag)操作相关命令子模块(submodule)相关操作命令忽略一些文件、文件夹不提交其他常用命令 创建版本库方式: 创建文件夹 在目录下 右键 Git Bush H…

git rebase 和 git merge的区别?以及你对它们的理解?

文章目录 前言是什么分析区别后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:git操作相关 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢…

卡尔曼滤波器在车流量检测中的应用

目录 1. 作者介绍2. 卡尔曼滤波器2.1 卡尔曼滤波概述2.2 标志性发展2.3 卡尔曼公式理解 3. 车流量检测3.1 背景介绍3.2 实现过程3.2.1 YOLOv3网络模型结构3.2.2 SORT算法3.2.3 基于虚拟线圈法的车辆统计 4. 算法实现4.1 Kalman.py4.2 完整代码4.3 结果展示 1. 作者介绍 吴思雨…

【STM32】IIC(Inter Integrated Cirruit--集成电路总线)

【单片机】14-I2C通信之EEPROM-CSDN博客 一、IIC总线协议介绍 1.IIC简介 同步(有时钟频率),半双工(同一个时间只能接收或者发送),串行(一个字节一个字节传输),高位读取…

卷积神经网络(VGG-16)海贼王人物识别

文章目录 前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)我的环境: 2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集5. 归一化 三、构建VGG-16网络1. 官方模型(已打包好&#xff…

小迪笔记(1)——操作系统文件下载反弹SHELL防火墙绕过

名词解释 POC:验证漏洞存在的代码; EXP:利用漏洞的代码; payload:漏洞利用载荷, shellcode:漏洞代码, webshell:特指网站后门; 木马:强调控制…

MVSNet论文笔记

MVSNet论文笔记 摘要1 引言2 相关基础2.1 多视图立体视觉重建(MVS Reconstruction)2.2 基于学习的立体视觉(Learned Stereo)2.3 基于学习的多视图的立体视觉(Learned MVS) Yao, Y., Luo, Z., Li, S., Fang,…

Linux 零拷贝splice函数

Linux splice 函数简介 splice 是 Linux 系统中用于在两个文件描述符之间移动数据的系统调用。它的主要作用是在两个文件描述符之间传输数据&#xff0c;而无需在用户空间进行数据拷贝。也是零拷贝操作. 函数原型 #include <fcntl.h> ssize_t splice(int fd_in, loff_…

『Spring Boot Actuator Spring Boot Admin』 实现应用监控管理

前言 本文将会使用 Spring Boot Actuator 组件实现应用监视和管理&#xff0c;同时结合 Spring Boot Admin 对 Actuator 中的信息进行界面化展示&#xff0c;监控应用的健康状况&#xff0c;提供实时警报功能 Spring Boot Actuator 简介 官方文档&#xff1a;Production-rea…

【Java 进阶篇】JQuery 事件绑定:`on` 与 `off` 的奇妙舞曲

在前端开发的舞台上&#xff0c;用户与页面的互动是一场精彩的表演。而 JQuery&#xff0c;作为 JavaScript 的一种封装库&#xff0c;为这场表演提供了更为便捷和优雅的事件绑定方式。其中&#xff0c;on 和 off 两位主角&#xff0c;正是这场奇妙舞曲中的核心演员。在这篇博客…

【C++】一文全解C++中的异常:标准库异常体系&自定义异常体系(含代码演示)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.C语言传统的处理错误的方式二.C异常…

Unity中Shader法线贴图(上)

文章目录 前言一、法线纹理的作用二、为什么法线贴图长这样&#xff1f;&#xff08;蓝色&#xff09;三、法线贴图能使纹理采样时&#xff0c;进行偏移采样四、在Shader中使用法线贴图1、在属性面板定义一个变量来接收法线贴图2、在使用前声明 _NormalTex3、在片元着色器中&am…

SQLite 安装和 Java 使用教程

SQLite是一个C语言库&#xff0c;它实现了一个小型、快速、自包含、高可靠性、功能齐全的SQL数据库引擎。SQLite是世界上使用最多的数据库引擎。SQLite内置于所有手机和大多数计算机中&#xff0c;并捆绑在人们每天使用的无数其他应用程序中。 SQLite文件格式稳定、跨平台、向…

系列三、GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈

一、关系 GC算法&#xff08;引用计数法、复制算法、标记清除算法、标记整理算法&#xff09;是方法论&#xff0c;垃圾收集器是算法的落地实现。 二、4种主要垃圾收集器 4.1、串行垃圾收集器&#xff08;Serial&#xff09; 它为单线程环境设计&#xff0c;并且只使用一个线程…