在opencv中 我新建了一个Mat 类型的变量,怎么释放他??如下。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在opencv中 我新建了一个Mat 类型的变量,怎么释放他??如下。相关的知识,希望对你有一定的参考价值。
Mat q;
然后这个q怎么释放?用什么函数?求大神解答啊~
1、如果是new,就用delete []删除;
2、如果是malloc,就用free释放; 参考技术B 这个应该是自动释放的,如果要手动释放可以试试q.release()本回答被提问者采纳
OpenCV:将 cvGoodFeaturesToTrack 与 C++ mat 变量一起使用
【中文标题】OpenCV:将 cvGoodFeaturesToTrack 与 C++ mat 变量一起使用【英文标题】:OpenCV: Using cvGoodFeaturesToTrack with C++ mat variable 【发布时间】:2012-09-20 01:34:57 【问题描述】:我正在尝试在 Visual Studio 2010 中使用 cvGoodFeatureToTrack
函数,图像类型为 Mat
。我见过的大多数示例都使用IplImage
指针。
现在我有这个:
int w, h; // video frame size
Mat grayFrame;
Mat eigImage;
Mat tempImage;
const int MAX_CORNERS = 10;
CvPoint2D32f corners[MAX_CORNERS] = 0;
int corner_count = MAX_CORNERS;
double quality_level = 0.1;
double min_distance = 10;
int eig_block_size = 3;
int use_harris = false;
w = CurrFrame.size().width;
h = CurrFrame.size().height;
cvtColor(CurrFrame, grayFrame, CV_BGR2GRAY);
cvGoodFeaturesToTrack(&grayFrame,
&eigImage,
&tempImage,
corners,
&corner_count,
quality_level,
min_distance,
NULL,
eig_block_size,
use_harris);
它编译但给我一个内存访问冲突。救命!
【问题讨论】:
【参考方案1】:作为一个起点,如果仍然使用 C++(就像您使用 cv::Mat
和 cv::cvtColor
建议的那样),那么为什么不使用 C++ 接口呢?
这意味着使用cv::goodFeaturesToTrack
或cv::GoodFeaturesToTrackDetector
,它们可以用于cv::Mat
和朋友,而不是从cv::Mat
到IplImage*
进行不必要的转换。
cv::Mat grayFrame;
std::vector<cv::Point2f> corners;
double quality_level = 0.1;
double min_distance = 10;
int eig_block_size = 3;
int use_harris = false;
const int MAX_CORNERS = 10;
cv::cvtColor(CurrFrame, grayFrame, CV_BGR2GRAY);
cv::goodFeaturesToTrack(grayFrame,
corners,
MAX_CORNERS,
quality_level,
min_distance,
cv::noArray(),
eig_block_size,
use_harris);
【讨论】:
谢谢。这行得通。我使用的是带有 NULL 的 goodFeaturesToTrack 函数,而不是 noArray()。但是你的回答解决了我的问题。以上是关于在opencv中 我新建了一个Mat 类型的变量,怎么释放他??如下。的主要内容,如果未能解决你的问题,请参考以下文章