Ask Your Question

hybridrules's profile - activity

2016-01-18 11:32:44 -0600 commented question Unhandled exception (opencv_world300.dll)

After much testing, I have removed the string that I am trying to cast and just sending the image straight to the imwrite as a png and its working fine no matter how many times I press the space bar to save it. This is clearly a problem with the way I am casting the int into the string.

I have tried using stringstream but the same errors occurs and I do not know of any way to solve it.

Does anyone know a way I can save the images I capture from the camera into a sequence. So when I press the spacebar, it saves as "screengrab1"...."screengrab2" etc etc.

Thanks in advance.

2016-01-15 19:26:01 -0600 commented question Unhandled exception (opencv_world300.dll)

I made the changes as suggested but the problem still persists. I think it might be something to do with way I'm trying to casting an integer to be used in the string of the imwrite. I've just tried another method but it's still not right. I am not converting the saves to pngs and used the same code of the opencv website.

The error appears to be something to do with argv..

argv 0x00000000003f72a0 {0x00000000003f72b0 "myfiles"} char * *

I could always post the complete code and if anyone wants to test it to see if they come up with the same error and let us know their 32 or 64 bit. I'd be happy to do that but it doesn't look like I can post it without answering my own question.

2016-01-15 04:14:51 -0600 commented question Unhandled exception (opencv_world300.dll)

Thanks for the suggestions guys.

I've made the change as berak as suggested thinking this might be the problem seeing as it's an amateur error. It worked a few times and then it stops again. But thanks for pointing that out. :)

I'm using MS Visual Studio Ultimate 2013, Window 7 64 bit and opencv3.

I've read your suggestions and I might need to look into it, the function code where it breaks for seemed to work fine in my previous version. Unfortunately, I've not got time at the moment, but I'll have a look in a few hours and see if I can sort this out, thanks for the suggestions and I''ll keep you updated.

2016-01-14 15:21:48 -0600 commented question Unhandled exception (opencv_world300.dll)

Hi LBerger,

Its not the USB camera or Microscope (In this case) which is the problem, that all works fine. I get the captured images into the window named "Microscope". I've also built a track bar which changes the brightness which is shown in the window named "Output". All I am trying to do is write the image frame from the camera when you press the space bar so it takes a still image.

What I don't get is that sometimes it works fine and at other times, it throws an error.

I'm very confused.

2016-01-14 12:09:45 -0600 asked a question Unhandled exception (opencv_world300.dll)

Hi there,

I'm quite new to OpenCV and although I'm having fun learning it, I also have a problem which only occurs occasionally.

I've opened up a USB microscope and I want to be able to capture still images. I created some code and in my initial tests everything seem to be working, I then put it into it's own method and that is where the problems started. Sometimes when I press the space bar to capture an image, the image is sometimes set at an extremely low resolution and then occasionally throw an error, so I took the code out of the function and place it back into my main code.

This has sorted out the resolution problem but I still get the error and I can't figure out why. It seems to be something to do with when I'm writing the image to file (imwrite)

I've had a look on this forum and google and it might be something to do with the fact I'm using a 64-Bit system but I could be making some kind of amateurish mistake.

I've posted the code below....

int main(int argc, char** argv){
VideoCapture Microscope(0);
if (!Microscope.isOpened())
{
    cout << "Microscope wouldn't open" << endl;
}

double dWidth = Microscope.get(CV_CAP_PROP_FRAME_WIDTH); //get the width of frames of the video
double dHeight = Microscope.get(CV_CAP_PROP_FRAME_HEIGHT); //get the height of frames of the video

namedWindow("Microscope", CV_WINDOW_AUTOSIZE);
namedWindow("Tools", CV_WINDOW_AUTOSIZE);

setMouseCallback("Microscope", MousePositionFunc, NULL);

cvCreateTrackbar("Brightness", "Tools", &g_slider_position, 100, onTrackbarSlide);

while (1)
{
    Mat frame; //Matrix Storage for frames
    bool bSuccess = Microscope.read(frame); // read a new frame from video
    if (!bSuccess) //if not success, break loop
    {
        cout << "ERROR: Cannot read a frame from video file" << endl;
        break;
    }

    imshow("Microscope", frame);

    Mat output = frame + Scalar(g_slider_position, g_slider_position, g_slider_position);
    namedWindow("Output", CV_WINDOW_AUTOSIZE);
    imshow("Output", output);

    int mKey;
    mKey = waitKey(33);
    if (mKey == 27)
    {
        cout << "User Pressed Escape" << endl;
        break;
    }

    else if (mKey == 32)
    {
        Mat img(dHeight, dWidth, CV_16UC3, Scalar(0, 50000, 50000));
        vector<int> compression_params; //vector that stores the compression parameters of the image
        compression_params.push_back(CV_IMWRITE_JPEG_QUALITY); //specify the compression technique
        compression_params.push_back(98); //specify the compression quality
        img = frame;


        string String = ("Screengrab" + static_cast<ostringstream*>(&(ostringstream() << counterpress))->str() + ".jpg"); // create string and cast integer to assign a value
        imwrite(String, img, compression_params); //write the image to file
        cout << "Image Saved " << counterpress << " times" << endl;
        counterpress++;   

    }
    else
    {
        cout << mKey << " is pressed" << endl;
    }

}

destroyAllWindows();

return 0;}

I would appreciate the help of anyone who can figure out what I am doing wrong, if anything??

Thanks. :)