如何混合 OpenCV 1.0 和 OpenCV 2.0

发布于 2024-12-07 08:55:02 字数 659 浏览 1 评论 0原文

我想做一个极坐标变换。但在 OpenCV 2.0 中似乎没有 cvLogPolar 函数的 C++ 版本。如何将它与 cv::Mat 一起使用?

错误: 'cvLogPolar':无法将参数 1 从 'cv::Mat' 转换为 'const CvArr *'

这是我的代码:

VideoCapture cap(1);
try {
    if(!cap.isOpened()) {
        throw "Could not open capture device";
    }
} catch(char* e) {
    cerr << "Error: " << e << endl;
}

for(;;) {
    Mat frame;
    cap >> frame;
    cvLogPolar(frame, frame, Point(frame.size().width/2, frame.size().height/2),
        1.0f, CV_INTER_LINEAR|CV_WARP_INVERSE_MAP);
    imshow("Preview", frame);
    if(waitKey(30) >= 0) break;
}

将其拆开,无论如何我都需要学习一些东西。

I want to do a polar transform. But in OpenCV 2.0 there doesn't appear to be a C++ version of the cvLogPolar function. How do I use it with cv::Mat?

Error:
'cvLogPolar' : cannot convert parameter 1 from 'cv::Mat' to 'const CvArr *'

Here is my code:

VideoCapture cap(1);
try {
    if(!cap.isOpened()) {
        throw "Could not open capture device";
    }
} catch(char* e) {
    cerr << "Error: " << e << endl;
}

for(;;) {
    Mat frame;
    cap >> frame;
    cvLogPolar(frame, frame, Point(frame.size().width/2, frame.size().height/2),
        1.0f, CV_INTER_LINEAR|CV_WARP_INVERSE_MAP);
    imshow("Preview", frame);
    if(waitKey(30) >= 0) break;
}

Tear it apart, I need to learn something anyway.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

美胚控场 2024-12-14 08:55:02

尝试像

Mat frame;
cap >> frame;

Mat dst(frame.size(), frame.type());
CvMat cvframe = frame;
CvMat cvdst = dst;
cvLogPolar(&cvframe, &cvdst, Point(frame.size().width/2, frame.size().height/2),
    1.0f, CV_INTER_LINEAR|CV_WARP_INVERSE_MAP);
imshow("Preview", dst);

我创建了新的 Mat 来存储 cvLogPolar 的结果,因为此函数无法就地操作。

Try something like

Mat frame;
cap >> frame;

Mat dst(frame.size(), frame.type());
CvMat cvframe = frame;
CvMat cvdst = dst;
cvLogPolar(&cvframe, &cvdst, Point(frame.size().width/2, frame.size().height/2),
    1.0f, CV_INTER_LINEAR|CV_WARP_INVERSE_MAP);
imshow("Preview", dst);

I've created new Mat to store results of cvLogPolar because this function can not operate in-place.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文