0
Я скопировал код Харриса детектора от openCV documentation site, но я хотел сделать TrackBar и его выход отображается в том же окне, поэтому я обновил код, чтобы бытьTrackBar Результат не отображается C++/OpenCV
#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);
}
Проблема заключается в том, что окно вывода неактивно, я не могу открыть его и играть с трекболом, но я вижу его на панели задач.