OpenCV---图像加载与保存
一:获取图像的信息
什么是图像:
结构化存储的数据信息
图像属性:
-通道数目
-高与宽
-像素数据
-位图深度
import cv2 as cv def get_image_info(image):
print(type(image)) #<class 'numpy.ndarray'> numpy类型数组
print(image.shape) #打印图像的高度,宽度,通道数(608, 343, 3)3个方向
print(image.size) #打印图像的大小625632==>608*343*3
print(image.dtype) #dtype:每个像素点有3个通道,每个通道所占的位数:无符号的int8位uint8 src = cv.imread("./1.png") #读取图片
get_image_info(src)
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #创建GUI窗口,形式为自适应
cv.imshow("input image",src) #通过名字将图像和窗口联系
cv.waitKey() #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
cv.destroyAllWindows()
二:读取视频,打开摄像头
import cv2 as cv
import numpy as np def video_demo():
capture = cv.VideoCapture(0) #这句话打开摄像头捕获图像 opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头
while True:
ret,frame = capture.read() #ret frame:视频中的每一帧
frame = cv.flip(frame,1) #将视频帧左右调换,回正,镜像调换
cv.imshow("video",frame) #将视频中每一帧显示出来
c = cv.waitKey(50) #50毫秒关闭当前捕获的图像,显示下一个
# print(c) #c是用户响应的按键
if c == 27: #27是ESC键的ASCII码值
break def get_image_info(image):
print(type(image)) #<class 'numpy.ndarray'> numpy类型数组
print(image.shape) #打印图像的高度,宽度,通道数(, , )3个方向
print(image.size) #打印图像的大小625632==>**
print(image.dtype) #dtype:每个像素点有3个通道,每个通道所占的位数:无符号的int8位uint8
pixel_data = np.array(image) #获取了所有的像素数据
print(pixel_data) src = cv.imread("./1.png") #读取图片
get_image_info(src)
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #创建GUI窗口,形式为自适应
cv.imshow("input image",src) #通过名字将图像和窗口联系
video_demo() #下面的waitKey就是等待图像和视频两个操作
cv.waitKey() #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
cv.destroyAllWindows() #销毁所有窗口
补充:VideoCapture
VideoCapture打开视频流,视频文件,VideoCapture(0)--->0代表摄像头,若有多个摄像头,按照顺序0,1,2...
也可以打开视频文件,写入视频路径,然后循环read读取数据帧即可
读取视频内容,对每一帧图像进行处理,是要对内容进行分析,对象检测,对象追踪,等等。OpenCV读出来的视频都是没有声音的,而且视频不易过大
音视频的编码解码是MPEG
三:图像保存(修改属性)
import cv2 as cv
import numpy as np def video_demo():
capture = cv.VideoCapture() #这句话打开摄像头捕获图像 opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头
while True:
ret,frame = capture.read() #ret frame:视频中的每一帧
frame = cv.flip(frame,) #将视频帧左右调换,回正,镜像调换
cv.imshow("video",frame) #将视频中每一帧显示出来
c = cv.waitKey() #50毫秒关闭当前捕获的图像,显示下一个
# print(c) #c是用户响应的按键
if c == : #27是ESC键的ASCII码值
break def get_image_info(image):
print(type(image)) #<class 'numpy.ndarray'> numpy类型数组
print(image.shape) #打印图像的高度,宽度,通道数(, , )3个方向
print(image.size) #打印图像的大小625632==>**
print(image.dtype) #dtype:每个像素点有3个通道,每个通道所占的位数:无符号的int8位uint8
pixel_data = np.array(image) #获取了所有的像素数据
print(pixel_data) src = cv.imread("./1.png") #读取图片
get_image_info(src)
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #创建GUI窗口,形式为自适应
cv.imshow("input image",src) #通过名字将图像和窗口联系
# video_demo() #下面的waitKey就是等待图像和视频两个操作
gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY) #获取一张灰度图像
cv.imwrite("./save.png",gray) #图像保存,数据写入
cv.waitKey() #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
cv.destroyAllWindows() #销毁所有窗口
OpenCV---图像加载与保存的更多相关文章
- OpenCV图像加载与保存
OpenCV中的图像加载与保存 头文件是包含的库,在GitHub上下载的 imread("图片路径",图片加载方式) 图片加载方式: IMREAD_GRAYSCALE 灰度图像 I ...
- python实现图像加载与保存,窗口创建与销毁,图片常用属性,ROI,通道的分离与合并,对比度和亮度
目录: (一)图像加载与保存 (二)图像显示窗口创建与销毁 (三)图片的常用属性的获取 (四)生成指定大小的矩形区域(ROI) (五)图片颜色通道的分离与合并 (六)两张图片相加,改变对比度和亮度 ( ...
- 1、OpenCV Python 图像加载和保存
__author__ = "WSX" import cv2 as cv # 这里的文件是图片或者视频 def Save_File( image ): cv.imwrite(&quo ...
- 跟我一起学opencv 第一课之图像加载,修改,保存
使用opencv前记得引入库和头文件: #include<opencv2\opencv.hpp> 1.加载图像(cv::imread)(OPENCV 支持 JPG,PNG,TIFF等常见格 ...
- 【OpenCV学习笔记之一】图像加载,修改及保存
加载图像(用cv::imread)imread功能是加载图像文件成为一个Mat对象 其中第一个参数表示图像文件名称第二个参数 表示加载的图像是什么类型 支持常见的三个参数值IMREAD_UNCHANG ...
- opencv 加载 修改 保存 图像
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; /* 1 加载图像 cv::imre ...
- openCV - 1. 加载、修改、保存图像
加载 cv::imread 修改 cv::cvtColor 保存 cv::imwrite 加载图像cv::imread imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称 ...
- KnockoutJS 3.X API 第七章 其他技术(1) 加载和保存JSON数据
Knockout允许您实现复杂的客户端交互性,但几乎所有Web应用程序还需要与服务器交换数据,或至少将本地存储的数据序列化. 最方便的交换或存储数据的方式是JSON格式 - 大多数Ajax应用程序今天 ...
- Qt Load and Save PCL/PLY 加载和保存点云
Qt可以跟VTK和PCL等其他库联合使用,十分强大,下面的代码展示了如何使用Qt联合PCL库来加载和保存PCL/PLY格式的点云: 通过按钮加载点云: void QMainWindow::on_pb_ ...
- 6.Knockout.Js(加载或保存JSON数据)
前言 Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地存储需要序列化数据),交换数据最方便的就是使用JSON格式 – 大多数的Ajax应用程 ...
随机推荐
- 通过Nrgok映射外网调试微信
一.注册账号 注册地址:http://www.ngrok.cc/login 登录系统,新增域名 二.下载客户端,修改配置文件 修改ngrok.cfg auth_token值登录平台管理系统可查看 su ...
- TDGA-需求分析
李青:绝对的技术控,团队中扮演“猪”的角色,勤干肯干,是整个团队的主心骨,课上紧跟老师的步伐,下课谨遵老师的指令,课堂效率高,他的编程格言“没有编不出来的程序,只有解决不了的bug”. 胡金辉:半两油 ...
- MacOS下安装BeautifulSoup库及使用
BeautifulSoup简介 BeautifulSoup库是一个强大的python第三方库,它可以解析html进行解析,并提取信息. 安装BeautifulSoup 打开终端,输入命令: pip3 ...
- UVALive 6912 Prime Switch 暴力枚举+贪心
题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...
- HDU 5418 Victor and World 允许多次经过的TSP
题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5418 bestcoder(中文): http://bestcoder.hdu.edu.cn ...
- HttpWebRequest下载文件,乱码问题解决方案
写在前面 今天之所以会总结HttpWebRequest下载文件,主要是因为在使用该类下载文件的时候,有些地方需要注意一下,在实际的项目中遇到过这种问题,觉得还是有必要总结一下的.在下载文件时,最常见的 ...
- 陈爽 软件工程导论week2.1
软件工程导论week2.1 第一章概论问题:1.程序=算法+数据结构 软件=程序+软件工程软件工程的目标是创造足够好的软件,可以从用户满意度,可靠性,软件流程的质量,可维护性等方面判断,但是我们没有 ...
- 基于 IBM WAS ND v6.1 搭建稳定高效的集群环境
如今的电子商务及电子政务应用系统的发展已经到了一个新的阶段,应用系统的成熟度和可用性都达到了更高的水准.因此庞大的部署规模和海量的用户访问成为目前大型电子商务及电子政务应用系统的显著特征.在这样的情况 ...
- 运维学习笔记(三)之T01-03TCP/IP
TCP/IP协议 简介 通信协议 信息从源传递到目的地的过程中,网络上各设备需要通信,描述网络通信“语言”的规范就是协议. 数据通信协议 决定数据的格式和传输的一组规则. TCP/IP协议简介 一组通 ...
- 使用 virt-install 创建虚拟机
使用 virt-install 创建虚拟机 virt-install --help 使用 qemu-kvm 创建虚拟机 介绍 1:命令路径:/usr/libexec/qemu-kvm 2:添加至环 ...