首页 > 其他分享 >opencv学习(一)

opencv学习(一)

时间:2023-06-18 14:22:30浏览次数:35  
标签:读取 img frame imshow cv2 学习 opencv waitkey

  在计算机眼中,图像就是由一个个像素点组成,而像素点中,又有三个值( R ,G ,B ),也就是红、绿、蓝三个颜色,即三原色。

  故,opencv默认的读取图片的格式是RGB。

  一般格式:

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

img=cv2.imread('C:/Users/hellou/Desktop/zhong.jpg')
"""
引号中加上需要读取的文件位置,后面也可以用 cv.IMREAD_COLOR 以及 cv.IMREAD_GRATSCALE分别表示读取彩色和灰度图像
默认条件下为读取彩色图像
"""

cv2.imshow('image',img)/''代表建立一个窗口,后面代表窗口引用的图片
cv2.waitKey(0)
'''等待时间,毫秒级。waitkey控制着imshow的持续时间,当imshow之后不跟waitkey时,相当于没有给imshow提供时间展示图像,所以只有一个空窗口一闪而过。
添加了waitkey后,哪怕仅仅是cv2.waitkey(1),我们也能截取到一帧的图像。所以cv2.imshow后边是必须要跟cv2.waitkey的。而0代表任意键终止
''
cv2.destroyAllWindows()/清理所有窗口

img.shape() 输出的值(h,w,c)分别代表长、宽和通道


vc = cv2.VideoCapture('C:/Users/hellou/Documents/Tencent Files/1170575902/FileRecv/111.mp4')
'''cv2.VideoCapture()里可以用''放置我们需要读取的视频,也可以用0、1等数字分别代表我们需要的调用的摄像头'''

cap = cv2.VideoCapture(1)
#调用笔记本自带摄像头,参数使用0,调用外置USB摄像头,使用参数1
cap.set(3,640)#宽,参数3为宽度,640为数值
cap.set(4,480)#高,参数4为高度,480为数值
cap.set(10,100)#亮度,参数10为代表的亮度,数值为100

#检查通道是否打开正确
if vc.isOpened():
#vedio.read()一帧一帧的读取
#open得到的是一个布尔值,就是True或者False
#frame得到当前这一帧的图像

open, frame =vc.read()
else:
open = False

while open:
ret, frame = vc.read()
#如果读取到的帧数不为空,那么就继续读取,如果为空就退出
if frame is None:
break
if ret == True:
cv2.imshow('vc', frame)
if cv2.waitKey(10) & 0xFF == 27:
#waitkey可以控制视屏播放的速度,数值越小,播放的越快
#等于27是指按下ESC键即可退出窗口
       #也可以用例如'q'来代表按下q键就能退出窗口
break
vc.release()
cv2.destroyAllWindows()
在图像读取过程中,我们也可以截取部分的图像数据(ROI),例如:
cat=img[0:200,0:200]/前面代表h,后面代表w
cv_show('cat',cat)

颜色通道提取:
b, g, r=cv2.split(img)
也可以通过:
img[:,:,0] = 0
img[:,:,1] = 0
cv_show('R',cur_img)
该方式只保留图片的红色。

标签:读取,img,frame,imshow,cv2,学习,opencv,waitkey
From: https://www.cnblogs.com/hellou/p/17489091.html

相关文章

  • 【Java学习】 Spring的基础理解 IOC、AOP以及事务
    一、简介  官网: https://spring.io/projects/spring-framework#overview   官方下载工具: https://repo.spring.io/release/org/springframework/spring/  github下载: https://github.com/spring-projects/spring-framework   maven依赖:<dependency>......
  • 关于sar的学习
    关于sar的学习背景公司一套基于某冷门Python架构的系统前几天出现异常卡顿.当时安装的时候必须使用ubuntu系统.所以当时默认安装的ubuntu1804,本来想尝试使用一下sar查看卡顿时期的系统状况但是发现没有默认安装.并且最近虽然有node-exporter以及prometheus和grafana但......
  • MySQL数据库页存储结构学习与了解
    MySQL数据库页存储结构学习与了解背景MySQL总是出现奇奇怪怪的问题.想着自己能够学习与提高一下.最近看了很多文档.关于MySQL数据库相关的.想着总结和提炼一下,希望能够给未来的工作提供一下指导.MySQL的存储引擎MySQL有多种存储引擎,主要有:InnoDB:是MySQL的默认存储引擎。......
  • go语言tcp编程学习
    TCP编程1、网络编程分类包括TCPsocket编程(底层基于tcp/ip协议)和b/s结构的http编程(使用的是http协议,但是底层是tcpsocket实现的)资料:尚硅谷的TCP资料(3卷),可以咸鱼找下资料看下2TCPsocket编程windows查看端口密码:netstat-anb;netstat-an服务器端的处理流程监听端口;接受......
  • 基础排列组合学习笔记
    排列组合是数学中一项非常重要、基础的内容,可以解决许多与计数有关的问题。让我们先从最基本的数数学起。前置知识加法原理假设你现在有\(a_0\)个物品,所有物品互不相同。你要从中拿一个物品出来,拿出的物品可能有几种?显然是\(a_0\)种,因为每一个物品互不相同,每一个物品都可......
  • 前端学习C语言 - 数组和字节序
    数组本篇主要介绍:一维二维数组、字符数组、数组名和初始化注意点以及字节序。一维数组初始化有以下几种方式对数组初始化://定义一个有5个元素的数组,未初始化inta[5];//定义一个有5个元素的数组,将第一个初始化0,后面几个元素默认初始化为0inta[5]={0};//定义一个有5个元......
  • 融合模型stacking14条经验总结和5个成功案例(互联网最全,硬核收藏)_机器学习_人工智能_
    来自Toby老师,《融合模型stacking14条经验总结和5个成功案例》我也看了很多关于融合模型stacking文章,很多作者倾向于赞美融合模型stacking,对其缺点轻描淡写,这容易误导初学者。一叶障目就是这意思。我的很多学员喜欢用融合模型作为论文或专利创新点,这是一个热门技术。最近有个同学在......
  • 深度学习-算法的创世纪【人工智能】
    深度学习通过训练深层神经网络模型,可以自动学习和提取数据的特征,包括更准确的图像识别、自然语言处理、医学诊断等方面的应用。序言深度学习是一种机器学习方法,其目标是通过模拟人脑神经网络的结构和功能,让机器能够从大量的数据中自动学习和提取特征,从而实现智能化的数据处理和决......
  • 现代C++学习指南-方向篇
    C++是一门有着四十年历史的语言,先后经历过四次版本大升级(诞生、98、11、17(20),14算小升级)。每次升级都是很多问题和解决方案的取舍。了解这些历史,能更好地帮助我们理清语言的发展脉络。所以接下来我将借它的发展历程,谈一谈我对它的理解,最后给出我认为比较合理的学习路线指南。C++0......
  • ES学习笔记--文档操作
    添加文档新增文档的DSL语法如下:POST/索引库名/_doc/文档id{"字段一":"value1","字段二":"value2","字段三":{"子属性1":"value3","子属性2":"value4"}}示例:#插入文档......