В настоящее время я начинаю работать над системой видения для обнаружения черники из .jpg
Я хочу попробовать создать код, который отображает три windows, один с моим обычным изображением (без фильтра) один с набором ползунков, которые контролируют верхний и нижний пределы HSV, и один, который отображает мое отфильтрованное изображение.
В настоящее время это мой код:
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
using namespace std;
Mat image;
Mat imgHSV;
Mat OutputImage;
int iLowH;
int iHighH;
int iLowS;
int iHighS;
int iLowV;
int iHighV;
static void HSVthreshold(int, int, int, int, int, int, void*)
{
inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), OutputImage);
}
int main(int argc, char** argv)
{
//Read image
image = imread("C:\\OpenCV-test-imgs\\blueberryTest2.jpg", 1);
if (image.empty())
{
cerr << "image was not read !" << endl;
return 1;
}
//convert RGB to HSV
cvtColor(image, imgHSV, COLOR_BGR2HSV);
//Create windows
namedWindow("image", WINDOW_FREERATIO); //window for original image
namedWindow("Control", WINDOW_AUTOSIZE); //window for HSV-control sliders
namedWindow("Output", WINDOW_AUTOSIZE); //window for output mask
//Create trackbars in "Control" window
createTrackbar("LowH", "Control", &iLowH, 179); //Hue (0 - 179)
createTrackbar("HighH", "Control", &iHighH, 179);
createTrackbar("LowS", "Control", &iLowS, 255); //Saturation (0 - 255)
createTrackbar("HighS", "Control", &iHighS, 255);
createTrackbar("LowV", "Control", &iLowV, 255); //Value (0 - 255)
createTrackbar("HighV", "Control", &iHighV, 255);
int key = 0;
while (key != 27) { // 27 is escape
HSVthreshold(iLowH, iHighH, iLowS, iHighS, iLowV, iHighV, 0);
imshow("Output", OutputImage);
imshow("image", imgHSV);
key = waitKey(1); // wait at most 1 ms for input, if nothing was pressed result is -1
}
return 0;
}
У меня есть три windows, который я ищу, но ползунки, похоже, ничего не делают. Кто-нибудь знает способ исправить это.
Извините, если я не разбираюсь в простых вещах в OpenCV, я совершенно новичок в этом.
Редактировать: Я немного отредактировал код, чтобы удалить некоторые ошибки.
Edit2: обновлен код, включены сообщения об ошибках
Edit3: обновлен код, теперь работает !, удалены сообщения об ошибках