Всем привет. Передо мной стоит задача распознать небо на фото. Использую Visual Studio и OpenCV. Из результата хорошо видно что область неба более темная, но что делать дальше? Результатом может быть просто выведение части изображения с небом в отдельный файл. Возможно я спрашиваю что то совсем простое так как новичок в opencv. И за это прошу прощения. Заранее спасибо.
int main(int argc, char** argv)
{
Mat src, src_gray;
Mat grad;
int scale = 1;
int delta = 0;
int ddepth = CV_64F;
//int c;
/// Load an image
src = imread("1.jpg");;
GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT);
/// Convert it to gray
cvtColor(src, src_gray, CV_BGR2GRAY);
/// Generate grad_x and grad_y
Mat gradient_image;
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y;
/// Gradient X
//Scharr( src_gray, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT );
Sobel(src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_REPLICATE);
convertScaleAbs(grad_x, abs_grad_x);
/// Gradient Y
//Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT );
Sobel(src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_REPLICATE);
convertScaleAbs(grad_y, abs_grad_y);
pow(abs_grad_x, 2, abs_grad_x);
pow(abs_grad_y, 2, abs_grad_y);
add(abs_grad_x, abs_grad_y, grad);
gradient_image = grad;
double ret, thresh = threshold(src_gray, src_gray,50, 255, THRESH_BINARY);
imshow("gray", ret);
imshow("sobel", src_gray);
//imshow("sobel", grad);
//imwrite("image01_res2.jpg", grad);
//imshow("cobel1", abs_grad_y);
//imshow("cobel2", abs_grad_x);
imshow("orig", src);
waitKey(0);
return 0;
}