Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么cvPutText没有';在这种情况下不行吗?_C++_Opencv - Fatal编程技术网

C++ 为什么cvPutText没有';在这种情况下不行吗?

C++ 为什么cvPutText没有';在这种情况下不行吗?,c++,opencv,C++,Opencv,我使用的是openCV函数cvPutText,但它似乎无法执行或被快速覆盖。以下是我的代码块: ... if(showResult==1){ cvNamedWindow("Znak", CV_WINDOW_AUTOSIZE); cvShowImage("Znak", znak); if(result == 0){ ascii_result = "A"; cvSet(znak,

我使用的是openCV函数cvPutText,但它似乎无法执行或被快速覆盖。以下是我的代码块:

          ...
if(showResult==1){

        cvNamedWindow("Znak", CV_WINDOW_AUTOSIZE);
        cvShowImage("Znak", znak);

        if(result == 0){
            ascii_result = "A";
            cvSet(znak, cvScalar(26,26,26));
            cvPutText(znak, "A", cvPoint(13, 185), &font, cvScalar(255, 166, 44, 0));
            printf("A working");
        }
        if(result == 1){
            ascii_result = "B";
            cvSet(znak, cvScalar(26,26,26));
            cvPutText(znak, "B", cvPoint(13, 185), &font, cvScalar(255, 166, 44, 0));
            printf("B working");
        }
          ...

它不在任何循环中。问题是,窗口“Znak”已创建,但cvSet()cvPutText将不会执行或被覆盖…因此,我只看到带有死灰颜色的空白窗口

每次更改图像并想要显示它时,都应该放置CvShowImage

      ...
    if(showResult==1){

    cvNamedWindow("Znak", CV_WINDOW_AUTOSIZE);
    cvShowImage("Znak", znak);

    if(result == 0){
        ascii_result = "A";
        cvSet(znak, cvScalar(26,26,26));
        cvPutText(znak, "A", cvPoint(13, 185), &font, cvScalar(255, 166, 44, 0));
        cvShowImage("Znak", znak);
        printf("A working");
    }
    if(result == 1){
        ascii_result = "B";
        cvSet(znak, cvScalar(26,26,26));
        cvPutText(znak, "B", cvPoint(13, 185), &font, cvScalar(255, 166, 44, 0));
        cvShowImage("Znak", znak);
        printf("B working");
    }
      ...

调用cvShowImage时,它会将图像的副本发送到窗口。如果您在代码中更改图像,它将不会在窗口中更改,因为它只是旧图像的副本。

结果的值是多少?您是否调用
printf
将任何内容打印到控制台?我可以将结果设置为0或1。printf工作正常,字符串也已分配给ascii_结果。只有cvSet和cvPutText不会执行。可能它们已执行,但随后被覆盖,但这没有意义,因为如果执行cvSet,则会使整个窗口充满黑色,直到调用新的cvSet。您可以通过插入cvWaitKey(0)来验证cvSet是否正在执行;程序将在此语句上停止,直到您按任意键为止。