is_block_type_valid(header-> _block_use)

469
26 ноября 2016, 19:01

Доброго времени суток.

Дали задание: найти угол наклона объекта (в моём случае лопасти вертолёта) и вывести всё видеопотоком. Используй VS2015 и OpenCV 2.4.13 Нашёл пример на этом сайте : Алгоритм определения угла поворота изображения. Очень помог но возникли проблемы и некоторые я решил, некоторые нет:

В начале она жаловался на строку

pts_mat.at<double>(j,0) = pts[j].x;

решил проблему изменив переменную pts[j].x на contoue[j].x и y соответственно. Позже разгадывал необходимые библиотеки.

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
double angle;
int main();
{
    Mat src_mat = imread("E:/work/project/opencv/Find_object/Find_object/blade2.jpg", CV_LOAD_IMAGE_COLOR);
    imshow("blade", src_mat);
    if (src_mat.empty() == NULL)
    {
        cout << "File not find!";
    }
    Mat gry_mat;
    cvtColor(src_mat, gry_mat, COLOR_BGR2GRAY);
    threshold(gry_mat, gry_mat, 150, 255, CV_THRESH_BINARY);
    vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;
    findContours(gry_mat, contours, hierarchy, CV_RETR_LIST,  CV_CHAIN_APPROX_NONE);
    int sz = static_cast<int>(contours.size());
    for (int i = 0, n = contours.size(); i < n; ++i)
    {
         const vector<Point> &contour = contours.at(i);
         // Отсеиваем слишком маленькие, либо слишком большие.
        double area = contourArea(contour);
        if (area < 1e2 || 1e5 < area) continue;
        // Строим буфер для PCA.
        int sz = static_cast<int>(contour.size());
        Mat pts_mat = Mat (sz, 2, CV_64FC1);
        for (int j = 0; j < pts_mat.rows; ++j) 
        {
            pts_mat.at<double>(j, 0) = contour[j].x;
            pts_mat.at<double>(j, 1) = contour[j].y;
        }
        PCA pca(pts_mat, Mat(), CV_PCA_DATA_AS_ROW);
        // В отдельный вектор выносим собственные вектора,
        // полученные при помощи PCA.
        vector<Point2d> eigen_vecs(2);
        for (int j = 0; j < 2; ++j)
        {
            eigen_vecs[j] = Point2d(pca.eigenvectors.at<double>(j, 0), pca.eigenvectors.at<double>(j, 1));
        }
        // Искомый угол.
        angle = atan2(eigen_vecs[0].y, eigen_vecs[0].x);
        cout << "Angin[" << i << "] =" << angle << "\n";
     }
     return angle;
}

всё срабатывает, высчитывает, но выводиться ошибка

выходит после работы всей программы. Помогите пожалуйста.

необходимые dll : core, highgui, imgproc;

READ ALSO
Повсеместное использование r-value ссылок

Повсеместное использование r-value ссылок

Стоит ли повсеместно стараться как можно чаще использовать r-value ссылки? Вот, допустим, код:

307
запрет на использование system() и exec()

запрет на использование system() и exec()

Доброе время суток! У меня есть проект на Python35, а именно система автоматического тестирования для локальной сети(тестер для олимпиадных задач...

249
Как удалить элементы tooltip

Как удалить элементы tooltip

Здравствуйте! Подскажите, как удалять такие элементы:

281
Двоеточие в полях структуры

Двоеточие в полях структуры

Объясните, пожалуйста, как тут создается структура? Что делает знак двоеточие :?

250