gpt4 book ai didi

opencv - OpenCV:如何使用cvSobel?

转载 作者:行者123 更新时间:2023-12-02 17:52:12 30 4
gpt4 key购买 nike

我正在尝试使用OpenCv 2.4.5从边缘查找渐变方向,但是我在使用cvSobel()时遇到问题,以下是错误消息和我的代码。我在某处读到它可能是由于浮点(??)之间的转换,但我不知道如何解决它。有帮助吗?

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2\opencv.hpp>
#include <opencv2\calib3d\calib3d.hpp>

#include <iostream>
#include <stdlib.h>
#include "stdio.h"

using namespace cv;
using namespace std;

int main()
{
Mat im = imread("test1.jpg");
if (im.empty()) {
cout << "Cannot load image!" << endl;
}
Mat *dx, *dy;
dx = new Mat( Mat::zeros(im.rows, im.cols, 1));
dy = new Mat( Mat::zeros(im.rows, im.cols, 1));

imshow("Image", im);

// Convert Image to gray scale
Mat im_gray;
cvtColor(im, im_gray, CV_RGB2GRAY);
imshow("Gray", im_gray);

//trying to find the direction, but gives errors here
cvSobel(&im_gray, dx, 1,0,3);


waitKey(0);
return 0;
}

最佳答案

您正在混合使用C++和C api。 cv::Mat来自C++ API,而CvArr*来自C API。
在这里,您正在C++类上使用C api cvSobel

//trying to find the direction, but gives errors here
cvSobel(&im_gray, dx, 1,0,3);

如果您这样做会怎样?
cv::Sobel( im_gray, dx, im_gray.depth(), 1, 0, 3);

编辑
并声明
Mat dx;
Mat dy;

我认为这可能会解决您的问题,实际上您的代码编译让我很惊讶。

关于opencv - OpenCV:如何使用cvSobel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17982226/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com