1

テキストボックスからパスを読んでから、画像を開こうとしました

String^ P = path->Text;

IplImage* img = cvLoadImage(P);

次のエラーが表示されます

Error 1 error C2664: 'cvLoadImage' : cannot convert parameter 1 from 'System::String ^' to 'const char *'

char * に変換する方法を教えてください。

4

3 に答える 3

0
System::String ^ str = path->Text ;
char* str2 = (char*)Marshal::StringToHGlobalAnsi(str).ToPointer();
printf(str2);

次のヘッダー ファイルをインクルードします。

#using <mscorlib.dll>
using namespace System::Runtime::InteropServices;
于 2013-10-20T06:03:47.983 に答える
0

Visual Studio C++ 10 以降の Char * から String ^ へ

私は小さな電卓を作っている間、これをテストしてOK....

// Variables  : 

char * number1 ; 
double num1 ; 
String ^ no1 ; 


     number1 =    (char*)Marshal::StringToHGlobalAnsi(no1).ToPointer();  num1 = atof (number1)  ; 
于 2014-02-22T22:48:41.707 に答える
0

遅すぎることはない。

ここに私が使用しているコードがあります

基本ファイルにヘッダーファイルを含めることを忘れないでください #include "saveImg.h" によってこれを呼び出します

保存 () ;

saveImg.h

int saveImg (){ // int argc , char* argv[] ) { //  (int argc, char** argv) {
    IplImage* img;
    // if( argc == 2 && (img=cvLoadImage(argv[1], 1))!= 0)     {
    img=cvLoadImage("hello.jpg") ; 
        IplImage* gray = cvCreateImage( cvGetSize(img), 8, 1 );
        IplImage* net1 = cvCreateImage( cvGetSize(img), 8, 3 );
        CvMemStorage* storage = cvCreateMemStorage(0);
        cvCvtColor( img, gray, CV_BGR2GRAY );
        cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); // smooth it, otherwise a lot of false circles may be detected
        CvSeq* circles = cvHoughCircles( gray, storage, CV_HOUGH_GRADIENT, 2, gray->height/4, 200, 100 );
        int i;
        for( i = 0; i < circles->total; i++ )         {
             float* p = (float*)cvGetSeqElem( circles, i );
             cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 );
             cvCircle( img, cvPoint(cvRound(p[1]),cvRound(p[2])), cvRound(p[3]), CV_RGB(50,0,100), 3, 8, 0 );
//                     cvWaitKey(0);
        }
        cvNamedWindow( "Original", 1 );
        cvShowImage( "Original", img );
        cvWaitKey(0);

        cvNamedWindow( "circles", 1 );
        cvShowImage( "circles", gray );
        cvWaitKey(0);
    return 0;
}
于 2014-02-22T22:42:40.160 に答える