【问题标题】:Trackbar Result doesn't appear C++/OpencvTrackbar 结果不出现 C++/Opencv
【发布时间】:2016-07-14 20:59:57
【问题描述】:

我从openCV documentation site复制了Harris角检测器的代码,但我想让trackbar及其输出出现在同一个窗口中,所以我将代码更新为

#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace cv;
using namespace std;

/// Global variables
Mat src, src_gray;
int thresh = 100;
int max_thresh = 255;

char* corners_window = "Corners detected";


void cornerHarris_demo( int, void* )
{

    Mat dst, dst_norm, dst_norm_scaled;
    dst = Mat::zeros( src.size(), CV_32FC1 );

    /// Detector parameters
    int blockSize = 2;
    int apertureSize = 3;
    double k = 0.04;

    /// Detecting corners
    cornerHarris( src_gray, dst, blockSize, apertureSize, k, BORDER_DEFAULT );

    /// Normalizing
    normalize( dst, dst_norm, 0, 255, NORM_MINMAX, CV_32FC1, Mat() );
    convertScaleAbs( dst_norm, dst_norm_scaled );

    /// Drawing a circle around corners
    for( int j = 0; j < dst_norm.rows ; j++ )
    { for( int i = 0; i < dst_norm.cols; i++ )
    {
        if( (int) dst_norm.at<float>(j,i) > thresh )
        {
            circle( src, Point( i, j ), 5, Scalar(255,0,0), 2, 8, 0 );
        }
    }
    }
    /// Showing the result
    imshow( corners_window, src);
}
/** @function main */
int main( int argc, char** argv )
{
    /// Load source image and convert it to gray
    char* filename = "myimage.jpg";
    src_gray = imread( filename, 0);
    cvtColor(src_gray,src,CV_GRAY2RGB);

    /// Create a window and a trackbar
    namedWindow( corners_window, CV_WINDOW_AUTOSIZE);
    createTrackbar( "Threshold: ", corners_window, &thresh, max_thresh, cornerHarris_demo );
    cornerHarris_demo( 0, 0 );

    waitKey(0);
    return(0);
}

问题是输出窗口处于非活动状态,我无法打开它并使用轨迹栏播放,但我可以从任务栏看到它。

【问题讨论】:

    标签: c++ opencv imshow trackbar


    【解决方案1】:

    此更新有效

    #include "stdafx.h"
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    
    using namespace cv;
    using namespace std;
    
    /// Global variables
    Mat src, src_gray;
    int thresh = 200;
    int max_thresh = 255;
    
    
    /// Function header
    void cornerHarris_demo( int, void* );
    
    /** @function main */
    int main( int argc, char** argv )
    {
      /// Load source image and convert it to gray
      src = imread("chessboard.jpg");
      cvtColor( src, src_gray, CV_BGR2GRAY );
    
      /// Create a window and a trackbar
      namedWindow( "Source image", CV_WINDOW_AUTOSIZE );
      createTrackbar( "Threshold: ", "Source image", &thresh, max_thresh, cornerHarris_demo );
    
      cornerHarris_demo( 0, 0 );
    
      waitKey(0);
      return(0);
    }
    
    /** @function cornerHarris_demo */
    void cornerHarris_demo( int, void* )
    {
    
      Mat dst, dst_norm, dst_norm_scaled, temp;
      src.copyTo(temp);
      dst = Mat::zeros( src.size(), CV_32FC1 );
    
      /// Detector parameters
      int blockSize = 2;
      int apertureSize = 3;
      double k = 0.04;
    
      /// Detecting corners
      cornerHarris( src_gray, dst, blockSize, apertureSize, k, BORDER_DEFAULT );
    
      /// Normalizing
      normalize( dst, dst_norm, 0, 255, NORM_MINMAX, CV_32FC1, Mat() );
      convertScaleAbs( dst_norm, dst_norm_scaled );
    
      /// Drawing a circle around corners
      for( int j = 0; j < dst_norm.rows ; j++ )
         { for( int i = 0; i < dst_norm.cols; i++ )
              {
                if( (int) dst_norm.at<float>(j,i) > thresh )
                  {
                   circle( temp, Point( i, j ), 5,  Scalar(255,0,0), 2, 8, 0 );
                  }
              }
         }
      /// Showing the result
      imshow( "Source image", temp );
    }
    

    仍然不知道为什么第一个没有。

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 2020-07-08
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多