Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

How to display text on the windows (webcam windows) openCV?

Actually I want to display a text on the popup windows but I have no idea how to code it. There's anyone can help me? Thanks for your consideration. Here is my code.


#include "opencv/highgui.h"
#include "opencv/cv.h"
#include <opencv/cxcore.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace cv;
using namespace std;

int main(int, char**)
{
    Mat src;
    Mat src_gray;
    int thresh = 100;
    int max_thresh = 255;
    RNG rng (12345);
cv::Mat frame;
VideoCapture capture;
capture.open(0);

while (true)
{
    capture.read(frame);
    Mat threshold_output;
    vector<vector<Point>> contours;
    vector<Vec4i> hierarchy;

    cvtColor(frame, src_gray, CV_BGR2GRAY); //produce out2, a one-channel image (CV_BUC1)
    blur(src_gray, src_gray, Size(5,5));

    threshold(src_gray, threshold_output, thresh, max_thresh, CV_THRESH_BINARY_INV);

    findContours(threshold_output, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0,0));

    //Find the rotated rectangles
    vector<RotatedRect> minRect(contours.size());

    for(int i=0; i<contours.size(); i++)
    {
        minRect[i] = minAreaRect(Mat(contours[i]));
    }

    //Draw contours + rotated rectangles + ellipses
    Mat drawing = Mat::zeros(threshold_output.size(), CV_8UC3);

    for(int i=0; i<contours.size(); i++)
    {
        Scalar color = Scalar(rng.uniform(0,0), rng.uniform(0,0), rng.uniform(250,250));

        //countours
        drawContours(drawing, contours, i, color, 1,8, vector<Vec4i>(), 0, Point());

        //Rotated rectangle
        Point2f rect_points[4]; minRect[i].points(rect_points);

        for(int j=0; j<4; j++)
            line(frame, rect_points[j], rect_points[(j+1)%4], color, 1, 8);
    }

    //Show in a window
    namedWindow("Contours", CV_WINDOW_AUTOSIZE);
    imshow("Contours",frame);

    int c = cvWaitKey(10);
    if ((char) c==72)

        break;
}

return 0;

}

click to hide/show revision 2
retagged

updated 2014-05-21 02:18:00 -0600

berak gravatar image

How to display text on the windows (webcam windows) openCV?

Actually I want to display a text on the popup windows but I have no idea how to code it. There's anyone can help me? Thanks for your consideration. Here is my code.


#include "opencv/highgui.h"
#include "opencv/cv.h"
#include <opencv/cxcore.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace cv;
using namespace std;

int main(int, char**)
{
    Mat src;
    Mat src_gray;
    int thresh = 100;
    int max_thresh = 255;
    RNG rng (12345);
cv::Mat frame;
VideoCapture capture;
capture.open(0);

while (true)
{
    capture.read(frame);
    Mat threshold_output;
    vector<vector<Point>> contours;
    vector<Vec4i> hierarchy;

    cvtColor(frame, src_gray, CV_BGR2GRAY); //produce out2, a one-channel image (CV_BUC1)
    blur(src_gray, src_gray, Size(5,5));

    threshold(src_gray, threshold_output, thresh, max_thresh, CV_THRESH_BINARY_INV);

    findContours(threshold_output, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0,0));

    //Find the rotated rectangles
    vector<RotatedRect> minRect(contours.size());

    for(int i=0; i<contours.size(); i++)
    {
        minRect[i] = minAreaRect(Mat(contours[i]));
    }

    //Draw contours + rotated rectangles + ellipses
    Mat drawing = Mat::zeros(threshold_output.size(), CV_8UC3);

    for(int i=0; i<contours.size(); i++)
    {
        Scalar color = Scalar(rng.uniform(0,0), rng.uniform(0,0), rng.uniform(250,250));

        //countours
        drawContours(drawing, contours, i, color, 1,8, vector<Vec4i>(), 0, Point());

        //Rotated rectangle
        Point2f rect_points[4]; minRect[i].points(rect_points);

        for(int j=0; j<4; j++)
            line(frame, rect_points[j], rect_points[(j+1)%4], color, 1, 8);
    }

    //Show in a window
    namedWindow("Contours", CV_WINDOW_AUTOSIZE);
    imshow("Contours",frame);

    int c = cvWaitKey(10);
    if ((char) c==72)

        break;
}

return 0;

}