2

たとえば、画像の読み込みと処理の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 );
}

2 番目の形式のコードがあり、それを最初の形式で書きたいのですが、対応するコマンドを見つけるにはどうすればよいですか? 最初のフォーム (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 を使用し、2 番目の例では C API を使用しています。オンラインドキュメントでは、一般的な検索ツールを使用して C++/C/python API のコマンドのリストを提供しています。

于 2013-06-11T10:00:58.030 に答える
1

最初の形式は C++ API 用です。

2 番目の形式は C API 用です。

基本的に、C コードから cv プレフィックスを削除し、IplImage ポインターを cv::Mat 参照に変更します。しかし、それは本当に非常に一般的な方法です。理解を深めるには、オンライン ドキュメントを参照してください。

于 2013-06-11T10:01:57.977 に答える