作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何用 cvmGet
替换对 cvGetReal2D
的调用?
我有这样的功能
bool someFunction(CvPoint2D32f location, IplImage &image)
{
// code
z = cvGetReal2D(image, location.y, location.x);
// code
}
我正在尝试用 cvmGet
替换 cvGetReal2D
因为我读到它更快 - 但我是 OpenCV 的初学者(我正在修改其他人编写的代码).
我每次都必须为每个点创建一个完整的 CvMat
吗?在那种情况下,因为我无法改变我正在传递 IplImage
的事实...更改会使代码变慢,对吗?
CvMat* imageCopy = cvCreateMat(image.width, image.height, image.depth);
(我也见过像 CV_32FC1
这样的常量 - 但我不知道如何选择)
那我要复制吗?
cvCopy(image, imageCopy); // I hope this would copy the values
I tried - I get an exception...
它适用于多 channel 矩阵吗?我是否必须询问有多少个 channel ,然后对它们进行迭代?
最佳答案
使用以下方法将 IplImage 转换为 Mat:
IplImage *img;
Mat imgMat(img);
然后就可以使用cvmGet
CV_32FC1
可以这样选择:
Mat imageCopy = cvCreateMat(image.width, image.height, image.depth, CV_32FC1);
我希望你使用的是 OpenCV 2.4x
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
包含这些以使用 cv::Mat
使用 cvarrtoMat:
IplImage A1;
Mat B1 = cvarrToMat(&A1);
关于c++ - 如何用 cvmGet 替换对 cvGetReal2D 的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14718020/
我是一名优秀的程序员,十分优秀!