我在Vscode学OpenCV 初步接触

OpenCV是一个开源的计算机视觉库,可以处理图像和视频数据。它包含了超过2500个优化过的算法,用于对图像和视频进行处理,包括目标识别、面部识别、运动跟踪、立体视觉等。OpenCV支持多种编程语言,包括C++、Python、Java等,可以在Windows、Linux、Mac OS X、Android等多个平台上使用。

图像

图像和视频数是指数字图像和数字视频中包含的像素或帧数。在数字图像中,图像数指的是图像中包含的像素数量,通常用宽度和高度的乘积来表示。在数字视频中,视频数指的是视频中包含的帧数,即视频中连续的静止图像序列数量。图像和视频数是指数字图像和数字视频中包含的像素或帧数。在数字图像中,图像数指的是图像中包含的像素数量,通常用宽度和高度的乘积来表示。在数字视频中,视频数指的是视频中包含的帧数,即视频中连续的静止图像序列数量。

我在Vscode学OpenCV

    • 图像
  • 如果遇到了cv2无法有智能提示的功能
  • 一、图像基本操作
    • 1.1 读取图像
      • 1.1.1 演示:
      • 1.1.2 支持
      • 1.1.3 flag
        • 部分解释:
          • 1.*.1_ 什么是alpha通道
          • 1.*.2_ 灰度图后使用 print 语句打印读取的图像数据。
    • 1.2 显示图像
      • 1.2.1 imshow函数__在一个窗口内显示读取的图像。
      • 1.2.2 namedWindow__创建指定名称的窗口
      • 1.2.3 waitKey函数
        • 1.2.3.1 要实现交互,可以使用cv2.waitKey函数来等待键盘输入
      • 1.2.4 destroyWindow函数
      • 1.2.5 destroyAllWindows
    • 1.3 保存图像 cv2.imwrite()

pip install opencv-contrib-python 直接安装编译好的 OpenCV 贡献库

如果遇到了cv2无法有智能提示的功能

就把你下载cv2的路径下安装包cv2的pyd复制到你现在使用的Python解释器路径的文件下面

一、图像基本操作

导入所需要的库(使用 pip install 完整路径文件名完成安装)

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

1.1 读取图像

 img = cv2.imread(filename, flags=None)
  • img是返回值,其值是读取到的图像。如果未读取到图像,则返回“None”。
  • filename 表示要读取的图像的完整文件名。
  • flags 是读取标记。该标记用来控制读取文件的类型

在这里插入图片描述

1.1.1 演示:

使用的照片:
在这里插入图片描述

# 图像IO操作
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt# 1.读取图像img = cv.imread("Pic/f2e919585490afd1bebd313257e7ad9.jpg")# 2、显示图像
## 2.1 OpenCV中的方法
cv.imshow("THIS Pi", img)
cv.waitKey(0)
# 按照窗口显示的
cv.destroyAllWindows()

在这里插入图片描述

1.1.2 支持

在这里插入图片描述

在这里插入图片描述

1.1.3 flag

在这里插入图片描述
在这里插入图片描述
cv2.IMREAD_UNCHANGED和cv2.IMREAD_GRAYSCALE是OpenCV库中用于读取图像的两种不同的模式。

  • cv2.IMREAD_UNCHANGED:这个模式会读取图像的原始数据,包括alpha通道(如果存在的话)。也就是说,如果图像是彩色的,那么它会保持彩色,如果图像有alpha通道,那么alpha通道也会被保留。

  • cv2.IMREAD_GRAYSCALE:这个模式会将图像转换为灰度图像。也就是说,无论原始图像是彩色的还是带有alpha通道的,读取后的图像都会是灰度的。加粗样式

- IMREAD_UNCHANGED = -1:返回原始图像,包括alpha通道(如果存在)在内的所有信息,即原始图像。- IMREAD_GRAYSCALE = 0:将图像转换为灰度图像。- IMREAD_COLOR = 1:返回BGR顺序的彩色图像,忽略alpha通道。- IMREAD_ANYDEPTH = 2:如果图像具有深度信息,保留这些信息(,则返回16/32位图像),否则将图像转换为8位。- IMREAD_ANYCOLOR = 4:尝试以最可能的颜色格式读取图像。- IMREAD_LOAD_GDAL = 8:使用GDAL驱动来读取图像。- IMREAD_REDUCED_GRAYSCALE_2 = 16, IMREAD_REDUCED_GRAYSCALE_4 = 32, IMREAD_REDUCED_GRAYSCALE_8 = 64:将图像转换为单通道灰度图像,并减少图像的大小(分别减少1/21/41/8)。- IMREAD_REDUCED_COLOR_2 = 17, IMREAD_REDUCED_COLOR_4 = 33, IMREAD_REDUCED_COLOR_8 = 65:转换图像为3通道BGR彩色图像,并减少图像的大小(分别减少1/21/41/8)。- IMREAD_IGNORE_ORIENTATION = 128:忽略EXIF元数据中的定位信息,不旋转图像。这些标志可以根据你的需求进行组合使用,例如,你可以同时使用IMREAD_GRAYSCALE和IMREAD_REDUCED_GRAYSCALE_2,这样OpenCV会读取灰度图像,并将其大小减少一半。
部分解释:
1.*.1_ 什么是alpha通道

Alpha通道是图像中的一个通道,它表示图像的透明度信息。在一个RGBA颜色模型中,R代表红色,G代表绿色,B代表蓝色,A代表Alpha,即透明度。
在这里插入图片描述

Alpha通道的值通常在0到255之间,其中0表示完全透明,255表示完全不透明。通过改变Alpha通道的值,我们可以改变图像的透明度。例如,如果我们将一个像素的Alpha值设置为127,那么这个像素将会是半透明的。

Alpha通道在图像处理中有很多应用,例如在合成两个图像时,我们可以通过调整Alpha通道的值来控制每个图像的可见度。

常见的色彩深度有:

  • 1位:二值图像,只有黑和白两种颜色。
  • 8位:灰度图像,可以表示256种不同的灰度级别。
  • 24位:真彩色图像,每个颜色通道(红、绿、蓝)使用8位,可以表示约1670万种颜色。
  • 32位:包含alpha通道的真彩色图像,每个颜色通道(红、绿、蓝和alpha)使用8位。

所以,如果你问的是像素可以表示的颜色数量,那么:

  • 1位色彩深度可以表示2种颜色。
  • 8位色彩深度可以表示256种颜色。
  • 24位色彩深度可以表示约1670万种颜色。
  • 32位色彩深度理论上可以表示约429亿种颜色,但实际上由于alpha通道表示的是透明度而非颜色,所以可表示的颜色数量仍然是约1670万种。

彩色深度标准通常有以下几种:

  • 8位色,每个像素所能显示的彩色数为2的8次方,即256种颜色。
  • 16位增强色,16位彩色,每个像素所能显示的彩色数为2的16次方,即65536种颜色。
  • 24位真彩色,每个像素所能显示的彩色数为24位,即2的24次方,约1680万种颜色。
  • 32位真彩色,即在24位真彩色图像的基础上再增加一个表示图像透明度信息的Alpha通道。
1.*.2_ 灰度图后使用 print 语句打印读取的图像数据。

输出图像的部分像素值

256个灰度等级,255代表全白,0表示全黑。
在这里插入图片描述
灰度图的显示的print
在这里插入图片描述
原格式的print
在这里插入图片描述

1.2 显示图像

在读取图像前判断图像文件是否存在,并在显示图像前判断图像是否存在

1.2.1 imshow函数__在一个窗口内显示读取的图像。

img = cv2.imshow( winname, mat )

winname 是窗口名称、mat 是要显示的图像。

cv2.imshow("THIS Pi", img)
cv2.imshow("THIS Pi", img)

如果是两个同名的,只会显示一个窗口

cv2.namedWindow("lesson")
cv2.imshow("THIS Pi", img)
cv2.imshow("lesson", img)  引用一个并不存在的窗口,并在其中显示指定图像

可以用cv2.imshow()来创建一个新窗口并显示图像。如果指定的窗口名称已存在,则会在该窗口中显示图像。如果指定的窗口名称不存在,则会创建一个新的窗口并显示图像。实际上,cv2.imshow()函数会完成窗口的创建和图像的显示两个步骤。

1.2.2 namedWindow__创建指定名称的窗口

 img = cv2.namedWindow( winname )

1.2.3 waitKey函数

cv2.waitKey( [delay] )

retval表示函数cv2.waitKey()的返回值。如果没有按键被按下,则返回-1;如果有按键被按下,则返回该按键的ASCII码。

delay表示等待键盘触发的时间,单位是毫秒。当该值设置为负数或零时,表示无限等待,即函数会一直等待键盘的触发。该值默认为0。
在这里插入图片描述

1.2.3.1 要实现交互,可以使用cv2.waitKey函数来等待键盘输入
import cv2# 读取图像
image = cv2.imread("image.jpg")while True:# 在窗口中显示图像cv2.imshow("Image", image)# 等待键盘输入,等待时间为0毫秒key = cv2.waitKey(0)# 如果按下键盘上的 "q" 键,退出循环if key == ord("q"):break# 关闭窗口
cv2.destroyAllWindows()

窗口会显示读取的图像,然后等待键盘输入。如果按下的是 “q” 键,程序将退出循环并关闭窗口。如果按下其他键,则会继续等待键盘输入。这样就实现了交互式地显示图像。

1.2.4 destroyWindow函数

cv2.destroyWindow( winname #winname 是窗口的名称。

1.2.5 destroyAllWindows

 cv2.destroyAllWindows()#用来释放(销毁)所有窗口

在这里插入图片描述

1.3 保存图像 cv2.imwrite()

retval cv2.imwrite( filename, img[, params] )

retval 是返回值。如果保存成功,则返回 True;如果保存不成功,则返回 False。

filename 是要保存的目标文件的完整路径名,包含文件扩展名。

img 是被保存的图像。

params 是保存类型参数,是可选的

import cv2# 读取图像
image = cv2.imread("image.jpg")# 保存图像
retval = cv2.imwrite("saved_image.jpg", image)# 判断是否保存成功
if retval:print("图像保存成功")
else:print("图像保存失败")

在这里插入图片描述
保存灰度图
对比一下先:
在这里插入图片描述

plt.imshow(img,cmap=plt.cm.gray)
在这里插入图片描述
为了直观用Pycharm
在这里插入图片描述

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

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

相关文章

利用两个栈s1,s2模拟一个队列时,如何用栈的运算来实现该队列的运算?写出模拟队列插入和删除的函数。一个栈s1用于插入元素,另一个栈s2用于删除元素

利用两个栈s1,s2模拟一个队列时,如何用栈的运算来实现该队列的运算?写出模拟队列插入和删除的函数。一个栈s1用于插入元素,另一个栈s2用于删除元素。 前置知识点(栈定义,及出栈入栈函数) #def…

【小白专用】Mysql的安装配置教程(详细)

首先简单概述分为几个步骤: 一、下载Mysql 二、安装Mysql 三、验证Mysql安装是否成功 四、 配置环境变量 五、验证配置环境变量是否成功 一、下载Mysql 要在Windows或Mac上安装MySQL,首先从MySQL官方网站下载最新的MySQL Community Server版本&…

降低毕业论文写作压力的终极指南

亲爱的同学们,时光荏苒,转眼间你们即将踏入毕业生的行列。毕业论文作为本科和研究生阶段的重要任务,不仅是对所学知识的综合运用,更是一次对自己学术能力和专业素养的全面考验。然而,论文写作常常伴随着压力和焦虑&…

如何确认目标期刊被SCI或EI收录?

原创内容,仅供参考,欢迎大家批评指正! 目录 通过Web of Science查询SCI期刊1. 登录Web of Science2. 查找目标期刊3. 查看期刊信息 通过Scopus查询EI期刊1. 登录Scopus2. 查找目标期刊3. 查看期刊信息 参考 通过Web of Science查询SCI期刊 1…

Django实战项目-学习任务系统-兑换物品管理

接着上期代码框架,开发第5个功能,兑换物品管理,再增加一个学习兑换物品表,主要用来维护兑换物品,所需积分,物品状态等信息,还有一个积分流水表,完成任务奖励积分,兑换物品…

golang的类型断言

前言:原因很简单,写的代码panic了。报错如下。为此专门看下golang的类型断言。 “[PANIC]interface conversion: interface {} is string, not float64”。 1、类型断言(assertion) 所谓“类型断言”即判断一个变量是不是某个类型的实例(简单来讲就是判…

【前端早早聊直播回顾】Harmony Next 与 Flutter 的不解之缘

Hello 大家好,我是 Flutter GDE 郭树煜,本次要分享的话题是关于鸿蒙与 Flutter 的故事,可能没接触过的会感觉有点懵,Harmony 和 Flutter 有啥关系,它们怎么会被放到一起讲了呢?接下来就让我们来聊聊这个问题…

世界电信日 | 人大金仓助力中国移动租赁核算系统升级上线

世界电信日 5月17日恰逢第五十四个世界电信日,运营商作为新型基础设施建设以及维护网信安全的主力军,掌握关键核心技术,实现科技自立自强刻不容缓。 作为数据库领域国家队,人大金仓坚持原始创新,低难度、低成本、低风…

第二证券:怎么判断股票浮筹多少?

股票的浮筹是指公司的股份中,揭露生意在市场上的股份,一般是指除了大股东和筹码安稳的组织等,其他组织和个人能够自在生意的股份。在出资股票时,了解公司的浮筹是非常重要的,由于它直接联络到股票的供需联络和股价动摇…

el-tabel表格加个多选框

<template><div><el-checkbox v-model"checked" :disabled"checkedDis" change"onAllSelectChange">多选框</el-checkbox>点击多选框&#xff0c;禁用列表复选框<el-table ref"multipleTable" :data"…

Nginx+keepalived实现七层的负载均衡

1.keepalived VRRP 介绍 keepalived是什么&#xff1f; keepalived是集群管理中保证集群高可用的一个服务软件&#xff0c;用来防止单点故障。 keepalived工作原理 keepalived是以VRRP协议为实现基础的&#xff0c;VRRP全称Virtual Router Redundancy Protocol&…

CMMI/ASPICE认证咨询及工具服务

服务概述 质量专家戴明博士的名言“如果你不能描述做事情的过程&#xff0c;那么你不知道你在做什么”。过程是连接有能力的工程师和先进技术的纽带&#xff0c;因此产品开发过程直接决定了产品的质量和研发的效率。 经纬恒润可结合多体系要求&#xff0c;如IATF16949\ISO26262…

解决VSCode使用SSH远程连接时无法指定用户名的问题

Windows 11自带OpenSSH客户端&#xff0c;和VSCode配合得很好&#xff0c;没有这个问题。 今天要说的是旧版本Windows 7/8/10系统遇到的问题。 PS: Windows 7可以运行的最后版本是VSCode 1.80.2 由于Windows 7/8/10没有自带的OpenSSH客户端&#xff0c;但可以调用MSYS环境下的…

PyQt界面开发的终极指南

文章目录 前言一、PyQt 简介二、PyQt 与 Qt 的蒙娜丽莎三、PyQt 布局管理器3.1、简介3.2、项目实战3.2.0、添加伸缩项 layout.addStretch&#xff1a;控制布局中组件之间的间距。3.2.1、垂直布局管理器 QVBoxLayout&#xff1a;控件按照从上到下的顺序排列3.2.2、水平布局管理器…

Yuhan Blu-ray DVD Creator for Mac: 打造专属的高清视听盛宴

在如今的高清时代&#xff0c;谁能拒绝一款能够轻松将高清影片刻录成蓝光DVD的刻录机呢&#xff1f;而Yuhan Blu-ray DVD Creator for Mac正是这样一款令人惊艳的软件。 作为一款专为Mac用户打造的蓝光DVD刻录机&#xff0c;Yuhan Blu-ray DVD Creator for Mac支持将各种高清视…

KanTts最小安装-ubuntu

为什么选它&#xff1f; 克隆有很多&#xff0c;为什么选它&#xff0c;它是中国人做的&#xff0c;阿里达摩院&#xff0c;5分钟音频数据集就够了。 国内做的有什么好处&#xff0c;因为大家都是中国人&#xff0c;说的是中国话&#xff0c;技术最大的难题不是基础&#xff…

Spring Boot 使用断言抛出自定义异常,优化异常处理机制

文章目录 什么是断言&#xff1f;什么是异常&#xff1f;基于断言实现的异常处理机制创建自定义异常类创建全局异常处理器创建自定义断言类创建响应码类创建工具类测试效果 什么是断言&#xff1f; 实际上&#xff0c;断言&#xff08;Assertion&#xff09;是在Java 1.4 版本…

【云原生-K8s】Kubernetes安全组件CIS基准kube-beach安装及使用

基础介绍kube-beach介绍kube-beach 下载百度网盘下载wget下载 kube-beach安装kube-beach使用基础参数示例结果说明 基础介绍 为了保证集群以及容器应用的安全&#xff0c;Kubernetes 提供了多种安全机制&#xff0c;限制容器的行为&#xff0c;减少容器和集群的攻击面&#xf…

从前序与中序遍历序列构造二叉树

代码如下&#xff0c;开袋即食 class Solution {private Map<Integer,Integer> map;public TreeNode buildTree(int[] preorder, int[] inorder) {map new HashMap<>();for(int i 0;i<preorder.length;i){map.put(inorder[i],i);}return build(preorder,inord…

【K_means】在矢量量化图像压缩中的应用

我们我们先来导入相应的模块&#xff0c;并看看要压缩的图片&#xff1a; import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.metrics import pairwise_distances_argmin#对两个序列中的点进行距离匹配的函数 from sklear…