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应用程 ...
随机推荐
- c# HttpListener拒绝访问
直接记录解决步骤: 程序代码: HttpListener httpListener = new HttpListener(); httpListener.Prefixes.Add("http ...
- Ubuntu16.04下 protobuf3.4.0 的安装与卸载
感谢原文作者:https://blog.csdn.net/xiexievv/article/details/47396725 一. 安装 下载protobuf protobuf下载地址:https:/ ...
- 扩展欧几里德 SGU 106
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=106 题意:求ax + by + c = 0在[x1, x2], [y1, y2 ...
- HDU 5183 Negative and Positive (NP) 前缀和+哈希
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5183 bc(中文):http://bestcoder.hdu.edu.cn/contests ...
- Linux下查看apache连接数
1.查看apache当前并发访问数: netstat -an | grep ESTABLISHED | wc -l 对比httpd.conf中MaxClients的数字差距多少. 2.查看有多少个进程 ...
- request内置对象在JSP
- ping(团队作业)
一,团队成员 何守成 031602408(队长) 黄锦峰 031602411 肖逸清 031602435 张子纯 031602441 蔡志斌 031602602 柯叶祥 031602414 二.作业链 ...
- 解决java图形界面label中文乱码
第一:在你的具有main函数的类也即你应用运行的主类上点击右键,选择Run As中的Run Configurations,如下图:java,awt,中文方框,中文乱码第二,在Arguments标签下的 ...
- html超链接返回上一页面
超链实现返回刚刚访问的网页: <a href="#" onclick="javascript:history.back(-1);"></a&g ...
- java 数据结构与算法 之查找法
一.二分查找法 二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找:如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素. @Test public ...