CvFileStorage 类的数据存取操作与示例

本文介绍了OpenCV的CvFileStorage类,用于XML/YAML格式的数据持久化。详细讨论了构造函数、operator<<、FileStorage::open和FileStorage::operator[]的使用,并提供了示例代码,包括如何打开文件、写入数据以及通过[]操作符读取文件参数。

OpenCV通过XML/YAML格式实现数据持久化。

目录:

FileStorage类

  • 构造函数
  • operator <<
  • FileStorage::open(打开一个文件)
  • FileStorage::isOpened(是否打开)
  • FileStorage::release(关闭文件释放缓存)
  • FileStorage::operator[]

 

 FileStorage类

构造函数

cv::FileStorage(const string& source, int flags, const string& encoding=string());
  • source--存储或读取数据的文件名(字符串)
  • flag---操作模式,FileStorage::READ,WRITE::APPEND

 operator<<

向filestorage写入数据

OpenCV常用操作包括以下几: ### 图像读取色彩转换 可使用`cv2.imread()`读取图像,还能通过`cv2.cvtColor()`进行色彩空间转换。例如,读取图像并将其转换为灰度图: ```python import cv2 img = cv2.imread('computer.jpg', -1) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ``` ### 边缘检测 Canny边缘检测是常用的边缘检测方法,通过`cv2.Canny()`函数实现。边缘检测算法一般包含噪声过滤、计算图像梯度、非极大值抑制、双阈值处理和滞后阈值等步骤: ```python import cv2 import matplotlib.pyplot as plot img = cv2.imread('tmp.jpg', cv2.IMREAD_GRAYSCALE) es = cv2.Canny(img, 100, 200) plot.figure(figsize=(6,3)) plot.subplot(1,2,1) plot.title('Source image') plot.imshow(img) plot.subplot(1,2,2) plot.title('Canny') plot.imshow(es) plot.show() ``` ### 直线圆检测 - **直线检测**:使用`cv2.HoughLinesP()`函数进行直线检测,示例代码如下: ```python import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('computer.jpg', -1) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) edges = cv2.Canny(gray, 50, 150, apertureSize = 3) orgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) oShow = orgb.copy() lines = cv2.HoughLinesP(edges, 1, np.pi/180, 1, minLineLength = 100, maxLineGap = 10) for line in lines: x1, y1, x2, y2 = line[0] cv2.line(orgb, (x1, y1), (x2, y2), (255, 0, 0), 5) plt.subplot(121) plt.imshow(oShow) plt.axis('off') plt.subplot(122) plt.imshow(orgb) plt.axis('off') ``` - **圆检测**:使用`cv2.HoughCircles()`函数进行圆检测,函数调用格式为`circles = cv2.HoughCircles(image, method, dp, minDist, param1, param2, minRadius, maxRadius)`。 ### 模板匹配 使用`cv2.matchTemplate()`函数进行模板匹配,示例代码如下: ```python import cv2 result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) ``` ### 常用头文件涉及的操作 OpenCV常用头文件涉及多种操作,包括基础结构(如`CvPoint`, `CvSize`, `CvScalar`等)、数组操作(如`cvCreateImage`, `cvCreateMat`等)、动态结构(如`CVMemStorage`, `CvMemBlock`等)、绘图函数(如`cvLine`, `cvRectangle`等)、数据保存和运行时型数据(如`CvFileStorage`, `cvOpenFileStorage`等)以及错误处理和系统函数(如`cvGetErrStatus`, `cvAlloc`, `cvFree`等) [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值