2

例如,谁能告诉我加载和处理图像的两种方式有什么不同。首先:

#include <iostream>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;
void main()
{
    Mat img = imread("maria.jpg", CV_LOAD_IMAGE_COLOR);
    if (img.empty())
    {
        cout<<"cannot load the image" <<endl;
    }
    GaussianBlur( gray, gray, Size(9, 9), 2, 2 );
    namedWindow("Maria", CV_WINDOW_AUTOSIZE);
    imshow("Maria",img);
}

第二:

#include <cv.h>
#include <highgui.h>
#include <math.h>

int main(int argc, char** argv) 
{ 
    IplImage* img = cvLoadImage( "maria.jpg", 1 ); 
    cvSmooth(img, img, CV_GAUSSIAN, 5, 5);
    cvNamedWindow("maria", 1 );
    cvShowImage("maria", img );
}

我有一些第二种形式的代码,我想用第一种形式编写它,那么我怎样才能找到相应的命令?你能帮我在第一种形式上写这段代码吗(C++ API)

IplImage* GetThresholdedImage(IplImage* imgHSV){        
       IplImage* imgThresh=cvCreateImage(cvGetSize(imgHSV),IPL_DEPTH_8U, 1);
     cvInRangeS(imgHSV, cvScalar(121,72,89), cvScalar(256,256,256), imgThresh); //RED
       return imgThresh;
} 

谢谢你的帮助。

4

2 回答 2

2

第一个示例使用 OpenCV 的 C++ API,而第二个示例使用 C API。在线文档为您提供了 C++/C/python API 的命令列表以及通用搜索工具。

于 2013-06-11T10:00:58.030 回答
1

第一种格式用于 C++ API。

第二种格式用于 C API。

基本上,您从 C 代码中删除 cv 前缀并将 IplImage 指针更改为 cv::Mat 引用。但这确实是非常普遍的方式。为了更好地理解,请参阅在线文档。

于 2013-06-11T10:01:57.977 回答