0
ich den Code von Harris Eckendetektor von openCV documentation site kopiert, aber ich wollte die trackbar und seine Ausgabe erscheint im selben Fenster machen, damit ich den Code aktualisiertTrackbar Ergebnis erscheint nicht 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);
}
zu sein
Das Problem ist, das Ausgabefenster ist inaktiv, ich kann es nicht öffnen und mit der Trackbar spielen, aber ich kann es von der Taskleiste aus sehen.