gpt4 book ai didi

c++ - OpenCV C++ 中的卷积

转载 作者:行者123 更新时间:2023-11-28 00:27:00 24 4
gpt4 key购买 nike

我想在 opencv 中使用 cpp 进行卷积我的代码给出了下面的错误

错误 C2040:“H”:“int [1][2]”与“cv::Mat”的间接级别不同

我想在 H= [1,-1] 和图像 || 之间进行转换V=[1;-1] 和图像

#include <iostream>
#include <opencv2\opencv.hpp>

using namespace std;
using namespace cv;

void main(){

Mat image =imread("C:\\Users\\merve\\Desktop\\images3.jpg",CV_LOAD_IMAGE_COLOR);

int h,w;



Size s=image.size();
h = s.height;
w = s.width;

int i,j;
Mat H_gradient;

int H [1][2] = {1,-1};
int V [2][1] = {{1},{-1}};


filter2D( image, H_gradient, -1 , H, Point( -1, -1 ), 0, BORDER_DEFAULT );

namedWindow( "filter2D Demo", CV_WINDOW_AUTOSIZE );
imshow( "filter2D Demo", H_gradient );





waitKey(0);





}

最佳答案

我假设你想计算水平梯度,对吧?因此,不要使用二维整数数组作为内核,而是使用 cv::Mat 对象(来自 docs:单 channel 浮点矩阵):

cv::Mat kernelH(1, 3, CV_32F);
kernelH.at<float>(0,0) = 1.0f;
kernelH.at<float>(0,1) = 0.0f;
kernelH.at<float>(0,2) = -1.0f;

并在您的代码中使用它代替 H 变量。类似地,要计算垂直梯度,请尝试以下代码段:

cv::Mat kernelH(3, 1, CV_32F);
kernelH.at<float>(0,0) = 1.0f;
kernelH.at<float>(1,0) = 0.0f;
kernelH.at<float>(2,0) = -1.0f;

此外,请记住在应用 filter2d 之前将彩色图像转换为灰度图像。

关于c++ - OpenCV C++ 中的卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24575879/

24 4 0
文章推荐: c++ - MFC 中非动态 Doc/View 体系结构的使用
文章推荐: html - 如何将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com