Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

c1083 :Cannot open include file: 'stdafx.h': No such file or directory

Hi everyone, i tried running a code on Visual Studio using OpenCV and faced a few errors. These are common ones and i spent hours finding them online and troubleshooting, but couldnt find the right fix. I hope you guys could help me out with some insights for me to get going. Thanks guys!

below are the errors

Error C1083 Cannot open include file: 'stdafx.h': No such file or directory Error (active) E1696 cannot open source file "stdafx.h"

and these are the codes. Thank you everyone!

     #include "stdafx.h"

    #include <opencv2\highgui.hpp>
    #include <opencv2\videoio.hpp>
    #include <opencv2\imgcodecs.hpp>
    #include "opencv2/imgproc/imgproc.hpp"
    #include <opencv2/opencv.hpp>
    #include <stdlib.h>
    #include <stdio.h>
    #include <iostream>
    #include <math.h>
    #include <ctime>
    #include <opencv2\core\ocl.hpp>
    #include <fstream>
    #include <direct.h>
    #include <shlobj.h>
    #include <stdarg.h>
    #include <ctype.h>



    //ADD this to disable OpenCL explicitly
    using namespace cv;
    using namespace std;
    void Detector(Mat Img, int x_, int y_)
    {
        circle(Img, Point(x_, y_), 2, Scalar(0, 255, 0), 2, 8, 0);
    }
    void AvgDetector(Mat Img, int x_, int y_)
    {
        circle(Img, Point(x_, y_), 2, Scalar(0, 0, 255), 2, 8, 0);
    }
    void Alert(Mat Img) {
        putText(Img, "Detected", Point(20, 20), FONT_HERSHEY_PLAIN, 1, Scalar::all(255), 2, 8);
    }
    const string currentDateTime() {
        time_t     now = time(0);
        struct tm  tstruct;
        char       buf[80];
        tstruct = *localtime(&now);
        strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);

        return buf;
    }
    void GetDesktopResolution(int& horizontal, int& vertical)
    {
        RECT desktop;
        // Get a handle to the desktop window
        const HWND hDesktop = 

GetDesktopWindow();
    // Get the size of screen to the variable desktop
    GetWindowRect(hDesktop, &desktop);
    // The top left corner will have coordinates (0,0)
    // and the bottom right corner will have coordinates
    // (horizontal, vertical)
    horizontal = desktop.right;
    vertical = desktop.bottom;
}
string ExePath() {
    char buffer[MAX_PATH];
    GetModuleFileNameA(NULL, buffer, MAX_PATH);
    string::size_type pos = string(buffer).find_last_of("\\/");
    return string(buffer).substr(0, pos);
}


int main()
{
    string Location, Avg_Position, Datapath, Maxfreq, Version;
    ofstream myfile;
    stringstream DataDir, datafilename, Position;
    bool CreateDir = true;

    int StringElement = 0;
    string s = ExePath();
    std::string delimiter = "\\";
    size_t pos = 0;
    std::string token;
    while ((pos = s.find(delimiter)) != std::string::npos) {
        StringElement++;
        token = s.substr(0, pos);
        if (StringElement == 7) {
            Version = token;
            break;
        }
        s.erase(0, pos + delimiter.length());
    }

    cout << CV_VERSION << "\n";
    cout << Version << "\n\n";
    cout << "Please key-in the location of your testing site: \n";
    cout << "Location:\t";
    getline(cin, Location);
    cout << "\nPlease key-in the path for the data files to be saved: \n";
    cout << "Path:\t";
    getline(cin, Datapath);
    cout << "\nPlease select start once the system is ready. \n\n";


    // Disable OpenCL explicitly here
    ocl::setUseOpenCL(false);
    VideoCapture capture(2);
    Mat current_frame, Gray_frame, Black_White, Black, Test;



    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Trackbar region   /////////////////////////////////////////////////////////////////////////////////////////////////////
    //// For cropper
    int a = 0, b = 0, c = 0, d = 0;
    int

     blobcounter = 0;
        int x_counter = 0;
        int y_counter = 0;

        int buffer, counter = 0;
        int threshold_value = 0;
        int threshold_type = 3;
        int min_freq = 0;
        int state = 0;
        int const max_value = 255;
        int const max_type = 4;
        int const max_BINARY_value = 255;
        const char* trackbar_type = "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted";
        const char* trackbar_value = "Value";
        const char* freq_value = "Frequency";

            const char* Activator = "Start";
            void Threshold_Demo(int, void*);

            //For Finding Blobs
            ////////////////////////////////////////////////////////////
            vector<vector<Point>> contours;
            vector<Vec4i> hierarchy;

            //////////////////////////////////////////////////////////////////////////////////////
            // To set the positon and initialize window parameters ///////////////////////////////
            int horizontal = 0;
            int vertical = 0;
            GetDesktopResolution(horizontal, vertical);
            HWND console = GetConsoleWindow();

            //////////////////////////////////////////////////////////////////////////////////////
            //////////////////////////////////////////////////////////////////////////////////////


            while (1) {

        #pragma region
                capture >> current_frame;
                if (current_frame.empty()) break;

                createTrackbar("Start", "Black & White", &state, 1);
                createTrackbar(freq_value, "Black & White", &min_freq, 1000);
                createTrackbar(trackbar_type, "Black & White", &threshold_type, max_type);
                createTrackbar(trackbar_value, "Black & White", &threshold_value, max_value);

                ////// For cropper
                createTrackbar("x-Origin", "Normal", &a, 640);
                createTrackbar("y-Origin", "Normal", &b, 480);
                createTrackbar("Width", "Normal", &c, 640);
                createTrackbar("Height", "Normal", &d, 480);

                // Convert color to Grayscale
                cvtColor(current_frame, Gray_frame, CV_RGB2GRAY);
                threshold(Gray_frame, Black_White, threshold_value, max_value, threshold_type);
                Mat Black_Green(current_frame.size(), CV_8UC3, Scalar(0, 0, 0));
                Mat Black(current_frame.size(), CV_8UC3, Scalar(0, 0, 0));

                Black_Green.setTo(Scalar(0, 255, 0), Black_White);
                findContours(Black_White, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); //find all blobs

    #pragma endregion

            blobcounter = 0, x_counter = 0, y_counter = 0;
            for (int i = 0; i < contours.size(); i++) {
                vector<Point> contour_poly;
                approxPolyDP(Mat(contours[i]), contour_poly, 3, true);

                //Simplifying the whole "contours[i].at(0)" thing
                int x = contours[i].at(0).x, y = contours[i].at(0).y;
                //if (contourArea(contour_poly) > 20 && contourArea(contour_poly) < 30){
                //if (20 < contourArea(contour_poly) < 50){
                if (x > a && x < c && y > b && y < d) {
                    Detector(Black, x, y);

                    circle(current_frame, Point(x, y), 3, Scalar(0, 255, 0), 1, 8, 0);

                    blobcounter++;
                    x_counter = x_counter + x;
                    y_counter = y_counter + y;

                }


            }

            rectangle(current_frame, Point(a, b), Point(a + c, b + d), Scalar(0, 0, 255), 2, 8, 0);
            rectangle(Black, Point(a, b), Point(a + c, b + d), Scalar(0, 0, 255), 2, 8, 0);


            if (blobcounter == 0) { putText(Black, "No mosquito detected", Point(20, 20), FONT_HERSHEY_PLAIN, 1, Scalar::all(255), 2, 8); }
            if (blobcounter > 0) {
                Avg_Position = to_string(x_counter / blobcounter) + "," + to_string(y_counter / blobcounter);
                AvgDetector(Black, x_counter / blobcounter, y_counter / blobcounter);
                putText(Black, Avg_Position, Point(20, 20), FONT_HERSHEY_PLAIN, 1, Scalar::all(255), 2, 8);
            }


            if (state == 1) {

                ////////////////////////////////////////////////////////////////////////////////////////////////
                // Create folder path for saving data
                ////////////////////////////////////////////////////////////////////////////////////////////////
                if (CreateDir == true) {
                    _mkdir((Datapath + "/Output Files").c_str());
                    datafilename << Datapath + "/Output Files/" << ctime << " - Output.tx

t";
                myfile.open(datafilename.str());
                myfile << "Version \t" << Version << "\n";
                myfile << "Location \t" << Location << "\n";
                myfile << "x-coordinate Boundary \t" << a << "\n";
                myfile << "y-coordinate Boundary \t" << b << "\n";
                myfile << "Threshold Value \t" << threshold_value << "\n";
                myfile << "Maximum Setup Frequency \t" << Maxfreq << "\n"; // Max frequency
                myfile << "Chamber width\n";
                myfile << "Chamber height\n";
                myfile << "Timestamp" << "\t" << "Unit Frequency" << "\t" << "x Avg." << "\t" << "y Avg." << "\n\n";
                CreateDir = false;
            }
            ////////////////////////////////////////////////////////////////////////////////////////////////
            ////////////////////////////////////////////////////////////////////////////////////////////////

            //Loop to make sure the display of the data is timed
            if (counter == 20) {

                blobcounter = 0, x_counter = 0, y_counter = 0;
                for (int i = 0; i < contours.size(); i++) {
                    vector<Point> contour_poly;
                    approxPolyDP(Mat(contours[i]), contour_poly, 3, true);
                    //Simplifying the whole "contours[i].at(0)" thing
                    int x = contours[i].at(0).x, y = contours[i].at(0).y;
                    if (x > a && x < c && y > b && y < d) {

                        x_counter = x_counter + x;
                        y_counter = y_counter + y;
                        Position << "M" << blobcounter << ": " << x << "," << y << "\t";
                        blobcounter++;
                    }
                }

                string Rowdata;
                if (blobcounter > 0) { Rowdata = currentDateTime() + "\t" + to_string(min_freq) + "\t" + to_string(x_counter / blobcounter) + "\t" + to_string(y_counter / blobcounter) + "\t" + Position.str() + "\n"; }
                if (blobcounter == 0) { Rowdata = currentDateTime() + "\t" + to_string(min_freq) + "\t" + "n/a" + "\t" + "n/a" + "\n"; }

                cout << Rowdata + "\n";
                myfile << Rowdata;
                counter = 0;
                Position.str("");
            }
            counter++;
        }

#pragma region
        resize(current_frame, current_frame, Size(horizontal * 0.3, vertical * 0.4), 0, 0, INTER_CUBIC);
        resize(Black, Black, Size(horizontal * 0.3, vertical * 0.4), 0, 0, INTER_CUBIC);
        resize(Black_White, Black_White, Size(horizontal * 0.3, vertical * 0.4), 0, 0, INTER_CUBIC);

        cvMoveWindow("Normal", 0, 0);
        cvMoveWindow("Black & White", horizontal * 0.31, 0);
        cvMoveWindow("Detection Map", horizontal * 0.62, vertical * 0.216);
        MoveWindow(console, horizontal * 0.62, 0, horizontal * 0.308, vertical * 0.21, TRUE);

        imshow("Normal", current_frame);
        imshow("Black & White", Black_White);
        imshow("Detection Map", Black);
    int key = waitKey(33) && 0xFF;
        if (key == 27) break;
#pragma endregion



}

return 0;

}