Select a region on mouse click

The following program allows the user to select a point on the image and extracts the region around that point, from which it extracts information such as mean and variance of the locality.

void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata=0 )
- Sets mouse handler for the specified window
Parameters:
  • winname – Window name
  • onMouse – Mouse callback.
  • userdata – The optional parameter passed to the callback.

Example:

-----------
#include "opencv2/opencv.hpp"
#include<cmath>
#include "iostream"

using namespace cv;
using namespace std;

int var1=1;
Point pos;
int radius = 7;

void CallBackFunc(int event, int x, int y, int flags, void* userdata)
{
    if  ( event == EVENT_LBUTTONDOWN )
    {
        pos.x=x;
        pos.y=y;
        var1=0;
    }
}


int main(int, char**)
{
    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    namedWindow("Video",1);    
    int area = (2*radius+1)*(2*radius+1);
    
    Mat frame;        

    //select the region on the image
    while(var1==1)
    {
        //set the callback function for any mouse event
        setMouseCallback("Video", CallBackFunc, NULL);

        cap >> frame;         // get a new frame from camera
        //show the image
        imshow("Video", frame);

        // Wait until user press some key
        waitKey(10);    
    }
        
    GaussianBlur( frame, frame, Size( 15, 15 ), 0, 0 );imshow("blur",frame);
    Mat imgHSV,out;
    cvtColor(frame, imgHSV, CV_BGR2HSV);    imshow("HSV",imgHSV);
    Mat final;
    final = frame;

    float blue=0, green=0,red=0, b_var=0, g_var=0, r_var=0;
    for(int var2=pos.y-radius;var2<=pos.y+radius;var2++)
        for(int var3=pos.x-radius;var3<=pos.x+radius;var3++)
        {
            Vec3b intensity = final.at<Vec3b>(var2,var3);   
            blue = blue + intensity.val[0];
            green = green + intensity.val[1];
            red = red + intensity.val[2];
        }
    red=red/area; green=green/area; blue=blue/area;

    for(int var2=pos.y-radius;var2<=pos.y+radius;var2++)
        for(int var3=pos.x-radius;var3<=pos.x+radius;var3++)
        {
            Vec3b intensity = final.at<Vec3b>(var2,var3);   
            b_var = b_var + (intensity.val[0]-blue)*(intensity.val[0]-blue);
            g_var = g_var + (intensity.val[1]-green)*(intensity.val[1]-green);
            r_var = r_var + (intensity.val[2]-red)*(intensity.val[2]-red);
        }    
    
    r_var/=area; g_var/=area; b_var/=area;
    r_var=sqrt(r_var); g_var=sqrt(g_var); b_var=sqrt(b_var);
    cout<<red<<" "<<green<<"  "<<blue<<" "<<r_var<<" "<<g_var<<" "<<b_var;



    inRange(final,Scalar(blue-b_var,green-g_var,red-r_var),Scalar(blue+b_var,green+g_var,red+r_var),out);imshow("out",out);

    waitKey(0);
    return 0;
}
-----------

7 comments:

  1. Replies
    1. Investment is one of the best ways to achieve financial freedom. For a beginner there are so many challenges you face. It's hard to know how to get started. Trading on the Cryptocurrency market has really been a life changer for me. I almost gave up on crypto at some point not until saw a recommendation on Elon musk successfully success story and I got a proficient trader/broker Mr Bernie Doran , he gave me all the information required to succeed in trading. I made more profit than I could ever imagine. I'm not here to converse much but to share my testimony, I recovered my losses and I have made a total profit returns of $20,500 from an investment of just $2000 within 1 week. Thanks to Mr Bernie I'm really grateful,I have been able to make a great returns trading with his signals and strategies .I urge anyone interested in INVESTMENT to take bold step in investing in the Cryptocurrency Market, he can also help you recover your lost funds, you can reach him on WhatsApp : +1(424) 285-0682 or his Gmail : BERNIEDORANSIGNALS@GMAIL.COM tell him I referred you











      Counselors. Our counselors have been logging in hours to connect with our families and also learn new skills. Tiffany has been working hard to fast track her College Counseling know how to b ready to support the Class of 2025. JJR has been working furiously to resolve and smooth out the final programming bumps and glitches - and both them are now shouldering larger counseling caseloads now that our guidance department is half the size!

      Delete
  2. Compre documentos en línea, documentos originales y registrados.
    Acerca de Permisodeespana, algunos dicen que somos los solucionadores de problemas, mientras que otros se refieren a nosotros como vendedores de soluciones. Contamos con cientos de clientes satisfechos a nivel mundial. Hacemos documentos falsos autorizados y aprobados como Permiso de Residencia Español, DNI, Pasaporte Español y Licencia de Conducir Española. Somos los fabricantes y proveedores de primer nivel de estos documentos, reconocidos a nivel mundial.

    Comprar permiso de residencia,
    permiso de residenciareal y falso en línea,
    Compre licencia de conducir en línea,
    Compre una licencia de conducir española falsa en línea,
    Comprar tarjeta de identificación,
    Licencia de conducir real y falsa,
    Compre pasaporte real en línea,

    Visit Here fpr more information. :- https://permisodeespana.com/licencia-de-conducir-espanola/
    Address: 56 Guild Street, London, EC4A 3WU (UK)
    Email: contact@permisodeespana.com
    WhatsApp: +443455280186

    ReplyDelete
  3. طريقة العزل المائي للمسابح:
    القيام بالتنظيف الجيد للأرضية الخرسانية وإزالة أي شوائب بها.
    إضافة طبقة دهان ووترمين بارد عن طريق دهان الأرضية بها.
    القيام بإضافة طبقة البيتومينات ولحامها ولصقها بأرضية حمام السباحة ولصقها ببعضها من خلال التسخين بالكي.
    القيام بعمل طبقة تداخل بين الشريحتين المتجاورتين لا تقل عن ٢٠ سم.
    القيام بإضافة باقي طبقات لفائف البيتومين ولحامها ولصقها جيدا حتى يتم العزل المائي جيدا لأرضية وجدران حمام السباحة وخروج الطبقات عن جدران حمام السباحة بما لا يقل عن ٢٠ سم.
    القيام بعمل طبقة حماية للعزل المائي من الخدوش والثقوب عن طريق عمل طبقة لياسة من الأسمنت فوق طبقات العزل المائي.
    القيام بمعالجة اللياسة ثم تركها من يومين لثلاث أيام ليتم تجهيز اللبشة المسلحة.
    شركة إنشاء مسابح بالدمام
    شركة تنظيف مسابح بالدمام
    عزل مسابح

    ReplyDelete
  4. صيانة حمامات السباحة


    تكمن أهمية صيانة حمامات السباحة بشكلٍ دوري ومنتظم في حمايتها من التلوث، والتأكد من صلاحية المياه فيها، بحيث تكون آمنةً للسباحة فيها؛ وذلك لأن المياه في حمامات السباحة قد تحتوي على الكثير من الميكروبات مثل البكتيريا، والفيروسات، والطحالب، بحيث يمكن أن تُسبب العديد من المشاكل الصحية مثل التهاب المعدة والأمعاء، والتهابات الأذن والأنف، في حالة عدم صيانتها بشكلٍ صحيح.وفيما يأتي بعض النقاط المهمة التي يجب التركيز عليها للحفاظ على جودة المياه في حمامات السباحة:



    فلتر حمام السباحة: يتم ضخ المياه في حوض السباحة من خلال الفلتر، والذي يعمل على إزالة الأوساخ والجزيئات التي قد تكون عالقةً في الماء، ولكن معظم الفلاتر المستخدمة تكون غير قادرةٍ على تصفية جميع المياه الموجودة في حمام السباحة، لذلك لا يجب الاعتماد عليها وحدها، وإنما يتم استخدام موادٍ أخرى مثل مادة الكلور، والتي تعمل على تعقيم المياه، وقتل الميكروبات.

    مستوى الرقم الهيدروجيني: يُستخدم الرقم الهيدروجيني لقياس درجة الحموضة أو القلوية للمياه في حمامات السباحة، وفي هذه الحالة يجب التأكد من أن تكون قيمة الرقم الهيدروجيني متراوحة بين 7 و 7.6، وهي القيمة المثالية والآمنة للمياه.

    القلوية الكلية: وهي عبارة عن مجموع جميع المواد الكيميائية القلوية في الماء، ولها دورٌ كبير ومهم في صيانة حمامات السباحة، بحيث يجب الحفاظ على مستوى معين من القلوية الكلية لتجنب حدوث المشاكل، ومن الأمثلة على ذلك انخفاض قيمة القلوية الكلية بشكلٍ كبير، مما سيؤثر على مستوى الرقم الهيدروجيني، ويجعله غير مستقر، كما قد يؤدي إلى تلف سطح حوض السباحة مع مرور الوقت.
    حمامات السباحة

    ReplyDelete