Burada, bir HSV görüntüsünün eşik değerlerinin izlenmesi, iz çubukları ile aralıkların seçilmesi için kod bulunmaktadır. farklı (here tarif edildiği gibi) bir video, bir morfolojik işlemleri gerçekleştirmek için morphologyEx
kullanılır, ve C++ fonksiyonu createTrackbar
C tarzı cvCreateTrackbar
yerini
not edin.
Koddaki yorumlar temiz olmalıdır. şey net değilse beni ping edin:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// Load BGR image
Mat3b bgr = imread("path_to_image");
if (bgr.empty())
{
cout << "Cannot open the image" << endl;
return -1;
}
// Transform to HSV
Mat3b hsv;
cvtColor(bgr, hsv, COLOR_BGR2HSV);
// Create a window called "Control"
namedWindow("Control", CV_WINDOW_AUTOSIZE);
// Set starting values for ranges
int iLowH = 0;
int iHighH = 179;
int iLowS = 0;
int iHighS = 255;
int iLowV = 0;
int iHighV = 255;
//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);
//Show the original image
imshow("Original", bgr);
// Create kernel for morphological operation
Mat kernel = getStructuringElement(MORPH_ELLIPSE, Size(5, 5));
// Infinte loop, until user press "esc"
while (true)
{
Mat mask;
inRange(hsv, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), mask); //Threshold the image
//morphological opening (remove small objects from the foreground)
morphologyEx(mask, mask, MORPH_OPEN, kernel);
//morphological closing (fill small holes in the foreground)
morphologyEx(mask, mask, MORPH_CLOSE, kernel);
//Show the thresholded image
imshow("Thresholded Image", mask);
if (waitKey(30) == 27) //wait for 'esc' key press for 30ms. If 'esc' key is pressed, break loop
{
cout << "esc key is pressed by user" << endl;
break;
}
}
return 0;
}
bu soru ve cevap sitesi değil, bir kod yazma hizmeti olduğuna dikkat edin. Sorunuzu 'a [değiştirdiyseniz], şu ana kadar ne denediğinizi ve nerede takılı kaldığınızı açıklarsanız, , o zaman belirli sorunlarda size yardımcı olmaya çalışabiliriz. numaralı telefonu da okumalısınız [ask]. –
Gerçekten üzgünüm. Başka bir sorudan (http://stackoverflow.com/questions/36586924/having-difficulties-to-detect-certain-colors-using-opencv) sorduğum başka bir kullanıcıdan gelen bir talebe katılarak bu soruyu sorduğumda Benim işimdeydim çünkü derslerim başlamadan önce daha sonra okumak istedim ve çalışmayan yazdığım kodu göstermeyi unuttum. Tavsiyenizi alacağım ve bu kadar aceleyle soru sormayacağım, bu yüzden size daha fazla ayrıntı göstermeyi unutmayın. Teşekkür ederiz. – Nicholas