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应用程 ...
随机推荐
- 《Linux内核与分析》第七周
by 21035130王川东 Linux内核如何装载和启动一个可执行程序 一. EIF文件格式: 1.ELF头部在文件的开始,描述文件的总体格式,保存了路线图,描述该文件的组织情况,即生成该文件系统的 ...
- Fisherman`Team的任务看板
- mysql 多查询临时表的运用
SELECT * from (select count(*) imgCount1 from imagetable where SeriesID = '1201061992020630292018092 ...
- resx文件引用
应用场景: 自己在编写双语界面的时候,用到两种语言表. 引用如下: LocRM = new ResourceManager("TMI_E.words_" + lang.ToLowe ...
- 每日Scrum--No.3
Yesterday:帮着队友一起打开地图 Today:学习迪杰斯特拉算法,试着编写程序代码 Problem:语法逻辑出错,在执行的时候,有的时候出现死循环,有的时候屏幕出现null和乱码.语句的编写有 ...
- 转载免安装版mysql的配置
解压到自定义目录,我这里演示的是D:\wamp\mysql\ 复制根目录下的my-default.ini,改名为my.ini,my.ini用下面内容替换 #以下是复制内容,这行可不复制 [clie ...
- 微信小程序 功能函数 地图定位相对直线距离
GetDistance:function(lat1, lng1, lat2, lng2){ // console.log(lat1) var radLat1 = lat1 * Math.PI / ...
- p2 钢体
钢体可以控制沿x方向移动,沿y方向移动, 不旋转等. fixedX, fixedY, fixedRotaion 1)addBody和removeBody:World类中的addBody()和remov ...
- POJ2374_Fence Obstacle Course
题意是描述是这样的,给你n个围栏,对于每个围栏你必须走到其边上才可以往下跳,现在问你从初始最高位置的n个围栏,到原点,水平走过的路程最少是多少? 其实我可可以这样来考虑问题.由于每次都是从板子的左右两 ...
- bzoj4184shallot
题意 给出一个初始为空的数字集合,每次添加一个数字/删除一个存在的数字,然后输出选出一些数进行异或能够得到的最大数值.操作次数<=500000,数字大小<2^31 分析 看上去我们只要写一 ...