Basic drawing examples

Drawing a line

void line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
 Parameters:
  • img – Image.
  • pt1 – First point of the line segment.
  • pt2 – Second point of the line segment.
  • color – Line color.
  • thickness – Line thickness.
  • lineType – Type of the line:
    • 8 (or omitted) - 8-connected line.
    • 4 - 4-connected line.
    • CV_AA - antialiased line.
  • shift – Number of fractional bits in the point coordinates.

Example 1: Drawing a line

-------------
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main( )
{    
  // Create black empty images
  Mat image = Mat::zeros( 400, 400, CV_8UC3 );
  
  // Draw a line 
  line( image, Point( 15, 20 ), Point( 70, 50), Scalar( 110, 220, 0 ),  2, 8 );
  imshow("Image",image);

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

Drawing a Circle

void circle(Mat& img, Point center, int radius, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
Parameters:
  • img – Image where the circle is drawn.
  • center – Center of the circle.
  • radius – Radius of the circle.
  • color – Circle color.
  • thickness – Thickness of the circle outline, if positive. Negative thickness means that a filled circle is to be drawn.
  • lineType – Type of the circle boundary. See the line() description.
  • shift – Number of fractional bits in the coordinates of the center and in the radius value.
The function circle draws a simple or filled circle with a given center and radius.

Example 2: Drawing a Circle

-------------
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main( )
{    
  // Create black empty images
  Mat image = Mat::zeros( 400, 400, CV_8UC3 );
  
  // Draw a circle 
  circle( image, Point( 200, 200 ), 32.0, Scalar( 0, 0, 255 ), 1, 8 );
  imshow("Image",image);

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

Drawing an Ellipse

void ellipse(Mat& img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
Parameters:
  • img – Image.
  • center – Center of the ellipse.
  • axes – Length of the ellipse axes.
  • angle – Ellipse rotation angle in degrees.
  • startAngle – Starting angle of the elliptic arc in degrees.
  • endAngle – Ending angle of the elliptic arc in degrees.
  • box – Alternative ellipse representation via RotatedRect or CvBox2D. This means that the function draws an ellipse inscribed in the rotated rectangle.
  • color – Ellipse color.
  • thickness – Thickness of the ellipse arc outline, if positive. Otherwise, this indicates that a filled ellipse sector is to be drawn.
  • lineType – Type of the ellipse boundary. See the line() description.
  • shift – Number of fractional bits in the coordinates of the center and values of axes.
The functions ellipse with less parameters draw an ellipse outline, a filled ellipse, an elliptic arc, or a filled ellipse sector. A piecewise-linear curve is used to approximate the elliptic arc boundary.

If you use the first variant of the function and want to draw the whole ellipse, not an arc, pass startAngle=0 and endAngle=360.

Example 3: Drawing an Ellipse

-------------
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main( )
{    
  // Create black empty images
  Mat image = Mat::zeros( 400, 400, CV_8UC3 );
  
  // Draw a ellipse 
  ellipse( image, Point( 200, 200 ), Size( 100.0, 160.0 ), 45, 0, 360, Scalar( 255, 0, 0 ), 1, 8 );
  ellipse( image, Point( 200, 200 ), Size( 100.0, 160.0 ), 135, 0, 360, Scalar( 255, 0, 0 ), 10, 8 );
  ellipse( image, Point( 200, 200 ), Size( 150.0, 50.0 ), 135, 0, 360, Scalar( 0, 255, 0 ), 1, 8 );
  imshow("Image",image);

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

Drawing a Rectangle

void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
Parameters:
  • img – Image.
  • pt1 – Vertex of the rectangle.
  • pt2 – Vertex of the rectangle opposite to pt1 .
  • rec – Alternative specification of the drawn rectangle.
  • colorRectangle color or brightness (grayscale image).
  • thickness – Thickness of lines that make up the rectangle. Negative values, like CV_FILLED , mean that the function has to draw a filled rectangle.
  • lineType – Type of the line. See the line() description.
  • shift – Number of fractional bits in the point coordinates.

Example 4: Drawing a Rectangle

-------------
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main( )
{    
  // Create black empty images
  Mat image = Mat::zeros( 400, 400, CV_8UC3 );
  
  // Draw a rectangle ( 5th argument is not -ve)
  rectangle( image, Point( 15, 20 ), Point( 70, 50), Scalar( 0, 55, 255 ), +1, 4 );
  imshow("Image1",image);
  // Draw a filled rectangle ( 5th argument is -ve)
  rectangle( image, Point( 115, 120 ), Point( 170, 150), Scalar( 100, 155, 25 ), -1, 8 );
  imshow("Image2",image);

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

Drawing a Filled Polygon

void fillPoly(Mat& img, const Point** pts, const int* npts, int ncontours, const Scalar& color, int lineType=8, int shift=0, Point offset=Point() )
Parameters:
  • img – Image.
  • pts – Array of polygons where each polygon is represented as an array of points.
  • npts – Array of polygon vertex counters.
  • ncontours – Number of contours that bind the filled region.
  • color – Polygon color.
  • lineType – Type of the polygon boundaries. See the line() description.
  • shift – Number of fractional bits in the vertex coordinates.
  • offset – Optional offset of all points of the contours.
The function fillPoly fills an area bounded by several polygonal contours. The function can fill complex areas, for example, areas with holes, contours with self-intersections (some of their parts), and so forth.

Example 4: Drawing a Filled Polygon

-------------
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main( )
{    
  // Create black empty images
  Mat image = Mat::zeros( 400, 400, CV_8UC3 );
  
  int w=400;
  // Draw a circle 
  /** Create some points */
  Point rook_points[1][20];
  rook_points[0][0] = Point( w/4.0, 7*w/8.0 );
  rook_points[0][1] = Point( 3*w/4.0, 7*w/8.0 );
  rook_points[0][2] = Point( 3*w/4.0, 13*w/16.0 );
  rook_points[0][3] = Point( 11*w/16.0, 13*w/16.0 );
  rook_points[0][4] = Point( 19*w/32.0, 3*w/8.0 );
  rook_points[0][5] = Point( 3*w/4.0, 3*w/8.0 );
  rook_points[0][6] = Point( 3*w/4.0, w/8.0 );
  rook_points[0][7] = Point( 26*w/40.0, w/8.0 );
  rook_points[0][8] = Point( 26*w/40.0, w/4.0 );
  rook_points[0][9] = Point( 22*w/40.0, w/4.0 );
  rook_points[0][10] = Point( 22*w/40.0, w/8.0 );
  rook_points[0][11] = Point( 18*w/40.0, w/8.0 );
  rook_points[0][12] = Point( 18*w/40.0, w/4.0 );
  rook_points[0][13] = Point( 14*w/40.0, w/4.0 );
  rook_points[0][14] = Point( 14*w/40.0, w/8.0 );
  rook_points[0][15] = Point( w/4.0, w/8.0 );
  rook_points[0][16] = Point( w/4.0, 3*w/8.0 );
  rook_points[0][17] = Point( 13*w/32.0, 3*w/8.0 );
  rook_points[0][18] = Point( 5*w/16.0, 13*w/16.0 );
  rook_points[0][19] = Point( w/4.0, 13*w/16.0) ;

  const Point* ppt[1] = { rook_points[0] };
  int npt[] = { 20 };

  fillPoly( image, ppt, npt, 1, Scalar( 255, 255, 255 ), 8 );
  imshow("Image",image);

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

Putting Text in image

putText renders the specified text string in the image.

void putText(Mat& img, const string& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool bottomLeftOrigin=false )
Parameters:
  • img – Image.
  • text – Text string to be drawn.
  • org – Bottom-left corner of the text string in the image.
  • fontFace – Font type. One of FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, FONT_HERSHEY_DUPLEX, FONT_HERSHEY_COMPLEX, FONT_HERSHEY_TRIPLEX, FONT_HERSHEY_COMPLEX_SMALL, FONT_HERSHEY_SCRIPT_SIMPLEX, or FONT_HERSHEY_SCRIPT_COMPLEX, where each of the font ID’s can be combined with FONT_HERSHEY_ITALIC to get the slanted letters.
  • fontScale – Font scale factor that is multiplied by the font-specific base size.
  • color – Text color.
  • thickness – Thickness of the lines used to draw a text.
  • lineType – Line type. See the line for details.
  • bottomLeftOrigin – When true, the image data origin is at the bottom-left corner. Otherwise, it is at the top-left corner.

Example 5: Putting Text in image

-------------
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main( )
{ 
  // Create black empty images
  Mat image = Mat::zeros( 400, 400, CV_8UC3 );
  
  putText(image, "Hi all...", Point(50,100), FONT_HERSHEY_SIMPLEX, 1, Scalar(0,200,200), 4);
  imshow("Image",image);

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

Source:
http://docs.opencv.org/modules/core/doc/drawing_functions.html?highlight=rectangle#void%20line%28Mat&%20img,%20Point%20pt1,%20Point%20pt2,%20const%20Scalar&%20color,%20int%20thickness,%20int%20lineType,%20int%20shift%29

68 comments:

  1. Great tutorial. Thanks!

    ReplyDelete
  2. This blog is awesome! You are awesome!

    ReplyDelete
  3. thanks a lot... awesome... do you know that you are awesome...

    ReplyDelete
  4. It helped a lot! Thank you!

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete
  6. May need:
    #include "opencv2/imgproc.hpp"

    ReplyDelete
  7. This comment has been removed by the author.

    ReplyDelete
  8. Hello, I was compiling this using OpenCV 3 , I'm working on MacOS using Xcode 7, in order for it to work i had to delete opencv2/core/core.hpp and included opencv2/imgproc.hpp

    Thank you for this forum, is very neat and clear.

    ReplyDelete
  9. Some of the Interesting Examples:
    http://opencv-hub.blogspot.in/

    ReplyDelete
  10. i found this page really helpful.
    Thanks for the help, you provided.

    ReplyDelete
  11. Do you know how to add new line to the function putText() ?
    Normally it is \n or \r or \r\n ... none of them is working

    ReplyDelete
  12. I am using same putText() function but this appears so big text on image. i need text size that should be readable. text size should not be so big.

    ReplyDelete
  13. great working all these code and so simple thanks alot

    ReplyDelete
  14. You have to add

    #include // drawing shapes

    ReplyDelete
  15. chung cư the kpark có gì hấp dẫn khách hàng? xem ngay tại website http://www.kenhchungcuhanoi.com/2017/05/the-k-park-van-phu.html

    ReplyDelete
  16. http://cit-llp.com/training/best-java-training-institute-in-chennai-at-candid-chrompet.htm

    ReplyDelete

  17. شركة الصفرات للتنظيف بالرياض
    Al Safrat Cleaning Company in Riyadh is interested in providing the best trained personnel capable of dealing with all types of modern equipments and professionally dealing with all types of stains. All employees are selected very carefully
    https://www.beat-elkhibra.com/al-safarat-cleaning-company-in-riyadh/

    شركة الصفرات لتنظيف المنازل بالرياض
    Al-Safrat House Cleaning Company in Riyadh is interested in cleaning its houses with the interest of removing the dust, plankton and sediment in all places especially in the narrow places that the housewife does not reach easily during the cleaning process.
    https://www.beat-elkhibra.com/al-safarat-home-cleaning-company-in-riyadh/

    شركة الصفرات لتنظيف الشقق بالرياض
    One of the most places that need very special care inside the apartment during the cleaning process is the kitchen room because it is used on a daily basis and is spread by fat, which causes unpleasant odors when accumulating and this is what the company is interested in cleaning apartments in Riyadh during the process of cleaning apartments
    https://www.beat-elkhibra.com/al-safarat-company-for-cleaning-apartments-in-riyadh/

    شركة الصفرات لتنظيف المجالس بالرياض
    Al-Safarat Company for cleaning the boards in Riyadh provided a large range of detergents for the kiln with all kinds of materials made of that cupboard. It also provided hot steam appliances capable of breaking all existing stains
    https://www.beat-elkhibra.com/al-safrat-company-for-cleaning-boards-in-riyadh/

    شركة الصفرات لتنظيف الفلل بالرياض
    Al-Safarat Cleaning Villas in Riyadh provides a range of detergents for stone destinations so that they remain clean and do not react to different weather factors. The company is careful to clean the swimming pools, trim the trees and clean the house gardens so that the destinations remain bright and shiny inside as well. At the highest level on all services
    https://www.beat-elkhibra.com/al-safrat-for-cleaning-villas-in-riyadh/

    شركة الصفرات لتنظيف الخزانات بالرياض
    Reservoirs for drinking water are things that must be taken care of, which must be kept clean permanently because they directly affect the lives of the individual and negligence caused a lot of different diseases So Safrat company to clean the reservoirs in Riyadh to provide the best detergents safe to health fully and able to deal with All types of dirt in place
    https://www.beat-elkhibra.com/al-safarat-company-for-cleaning-tanks/

    ReplyDelete
  18. شركة الصفرات لرش المبيدات بالرياض
    The company is keen to spray pesticides in Riyadh to provide the best devices to spray different pesticides that can access the most difficult places easily and without any collateral damage
    https://www.beat-elkhibra.com/al-safrat-company-for-spraying-pesticides-in-riyadh/

    شركة الصفرات لكشف التسربات بالرياض
    Water leaks are one of the most serious things that must be taken care not to occur in any way. So the company is keen to detect the leaks in Riyadh to provide the best and latest special devices and modern, which are used in the detection of places of leaks in place without the need to break the place
    https://www.beat-elkhibra.com/al-safrat-company-to-detect-leaks-in-riyadh/

    شركة الصفرات لنقل الاثاث بالرياض
    Al-Safrat Company for Furniture Transport in Riyadh is keen to provide furniture packing service to be transported in order to ensure that there is no damage to the furniture
    https://www.beat-elkhibra.com/al-safrat-furniture-transport-company-in-riyadh/

    شركة الصفرات لعزل الاسطح بالرياض
    Surface insulation is not only because of water, but there are many reasons that require the need to isolate the surface just like the leakage of heat to the inside, which affects negatively on the devices as well as the place and there is a diversion of sounds
    https://www.beat-elkhibra.com/al-safrat-company-for-insulation-of-roofs-in-riyadh/

    شركة الصفرات لعزل الخزانات بالرياض
    Al-Safarat Tank Insulation Company in Riyadh provides a group of workers capable of dealing with all types of tanks. It also provides a range of special and modern appliances that clean the place well and remove all plankton under the tank by providing the best price plans in the entire region. Service access for the largest segment
    https://www.beat-elkhibra.com/al-safrat-company-to-isolate-reservoirs-in-riyadh/

    شركة نقل دولى
    The company is specialized in the field of international transport and is one of the areas that customers need continuously, and therefore an international transport company to transfer all the needs that customers need on a continuous basis through a group of transport vehicles specialized in the transfer of objects and equipped specifically for that
    https://www.beat-elkhibra.com/international-transport-company/

    ReplyDelete

  19. بسم الله الرحمن الرحيم نحن فى شركة الكمال تقوم بافضل انواع التنظيف العام وتنظيف الفلل بافضل انواع العالميه التى تحافظ على السيراميك
    شركة الكمال
    شركة تنظيف بالطائف
    شركة تنظيف بجازان
    شركة تنظيف بحائل
    شركة تنظيف مجالس وكنب بحائل
    ونحن فى خدماتكم اربعه وعشرون ساعه وكل هذا بافضل الاسعار واقل التكلفة

    ReplyDelete
  20. هل تبحث عن شركة متخصصة فى خدمات التنظيف بالطائف بافضل المعدات والسوائل وثقة تمة فى العمل ودقة فى النتائج كل هذه المميزت توفرها شركة الخليج الشركة الافضل والامثل فى الخدمات المنزلية بالطائف وبما اننا الشركة الافضل والامثل بدون منافس سوف نسعى لتوفر افضل الخدمات باقل تكلفة وبقدر كبير من الاهتمام والدقة عزيزى اينما كنت فى اى منطقة ا وحى تابع لمدينة الطائف اتصل بنا وسوف نصلك فى الحال شركة الخليج للخدمات المنزلية شركة تنظيف منازل بالطائف
    شركة تنظيف فلل بالطائف
    شركة تنظيف خزانات بالطائف
    شركة تسليك مجارى بالطائف
    شركة رش مبيدات بالطائف
    شركة مكافحة نمل ابيض بالطائف
    شركة مكافحة حشرات بالطائف
    شركة عزل اسطح بالطائف
    شركة عزل خزانات بالطائف

    ReplyDelete
  21. تعمل شركة اللمسه في مكافحة الحشرات مثل النمل والصراصير وجميع انواع الحشرات بأبها الان ، وتعتبر شركة اللمسه من اشهر شركات مكافحة الحشرات في السعودية , لدينا عمالة مدربة ومتخصصة المواد المستخدمة فى مكافحة الحشرات غير ضارة على الانسان وليس لها روائح نعمل بدون مغادرة المنزل نعمل على راحة عملائنا .
    شركة مكافحة النمل الابيض بنجران
    شركة رش مبيدات بالخرج
    شركة مكافحة حشرات بالخرج
    شركة مكافحة النمل الابيض بالخرج
    شركة رش مبيدات بأبها
    شركة مكافحة حشرات بأبها
    شركة مكافحة النمل الابيض بأبها
    شركة رش مبيدات بنجران
    شركة مكافحة حشرات بنجران
    شركة رش مبيدات بالعينه


    ReplyDelete
  22. شركة اللمسة الأخيرة تقدم لك الحل الأمثل فلا حشرات بعد اليوم ولن تعود مرة أخرى. فنحن نستخدم أفضل المبيدات العالمية الفعالة صديقة البيئة التي لا تترك رائحة ولا سيوثر على صحة الأنسان ويقوم باستخدامها عمال مدربون يقومون برش المبيدات بشكل علمي مما يضمن لك الراحة التامة نرجو التواصل على هذا الرقم 0580002467
    شركة رش مبيدات بأبها
    شركة مكافحة حشرات بأبها
    شركة مكافحة النمل الابيض بأبها
    شركة رش مبيدات بخميس مشيط
    شركة مكافحة حشرات بخميس مشيط
    شركة مكافحة النمل الابيض بخميس مشيط
    شركة رش مبيدات بالقصيم
    شركة مكافحة حشرات بالقصيم
    شركة مكافحة حشرات بجازان
    شركة رش مبيدات بجازان

    ReplyDelete
  23. This comment has been removed by the author.

    ReplyDelete
  24. I think you should imgproc.hpp because all function line, circle,... belong to imgproc.hpp

    ReplyDelete
  25. شركه المثاليه تم تصنيفها علي انها من افضل شركات نقل العفش بالدمام والبلاد المحيطه بها والمملكه باكملها حيث يوجد لدينا افضل عماله متميزه ومتمكنه في هذا المجال وافضل السيارات الناقله للعفش حيث يقومون باشياء لا يقدر علي فعلها الفرد العادي حيث نضمن لعملائنا سلامه العفش خلال عمليه النقل ويتغلف العفش باغلفه تضمن له عدم الخدش او المساس بشكله من جميع النواحي وبافضل اسعار ممكنه لعملائنا عليكم فقط بالاتصال بشركه المثاليه شركة المثالية لنقل العفش بالدمام ويوجد ايضا لدي شركه المثاليه قسم خاص بمكافحه الحشرات حيث لا يوجد مكان للحشرات للتعايش بيننا وعلينا ان نتخلص منها بافضل شكل ممكن بحيث لا تعود مجددا ونتميز نحن بامتلاكنا افضل المبيدات الحشريه التي تقضي عليها تماما وبطرق امنه بحيث لا توذي افراد المسكن وبافضل اسعار ممكنه تجدها لدينا عليكم فقط بالاتصال بنا من خلال شركة المثالية لمكافحة الحشرات بالدمام التنظيف هو عمليه روتينيه تحاتجها المنازل بطريقه دوريه ويجب ان تتم بعنايه فائقه وباجهزه ومعدات حديثه كي تمم بافضل طريقه ممكنه وتحتاج الاماكن الكبيره الي عماله كبيره ذات خبره وهذا ما يتوفر لدينا فالفلل والمنازل والاماكن التجاريه دائما تحتاج الي عماله كبيره ذات خبره فائقه وهذا مايتوفر لدينا وعليكم فقط بالاتصال بنا شركة المثالية للتنظيف بالدمام ولدينا ايضا جميع مستلزمات التنظيف التي يحتاجها جميع الاماكن التي تحتاج الي تنظيف بشكل عام وبافضل اسعار ممكنه يصل الي خصم 40%

    ReplyDelete
  26. واحده من افضل الشركات الرائده في نقل الاثاث داخل الرياض والبلاد المحيطه بها بفضل ماتعتمد عليه من معدات وادوات التي تعتمد علي استخدام التكنولوجيا التي تستخدم في نقل العفش والتي تضمن لجميع عملائنا سلامه العفش الذي ينقل من مكان اللي مكان اخر وعليكم ان تودعو اساليب التلقيديه المستخدمه في نقل الاثاث لانها عمليه لايكن علي الفرد العادي ان يقوم بها فقط عليكم الاتصال بشركه الصفراتشركة الصفرات لنقل الاثاث بالرياض وايضا يوجد لدي شركه الصفرات خدمات اخري مثل خدمات تسليك المجاري وشفط البيارات بجميع انواعها التي تسبب الروائح الكريهه ونعمل علي اختفائها بشكل نهائي ونملك افضل معدات واجهزه تعمل علي معالجه انسداد المجاري التي تسبب ازمه في المكان فقط عليكم الاتصال بشركه الصفرات شركة الصفرات لتسليك المجاري بالرياض كما يوجد ايضا لدي شركه الصفرات خدمه عزل الخزانات من ضمن الخدمات التي تقدمها شركه الصفرات لعملائها كما ان شركه الصفرات تعتبر افضل شركه للخدمات المنزليه وعزل ولحام الخزانات في الرياض وجميع مدن الممكله من خلال ما تملكه من معدات واجهزه متخصصه في المجال وافراد ذوي خبره في المجال فقط عليكم الاتصال بشركه الصفرات شركة الصفرات لعزل الخزانات بالرياض كما يوجد ايضا لدي شركه الصفرات خدمه كشف التسريبات لان تعتبر مشكله تسريبات المياه من المشاكل التي لها اضرار بالغه علي المنازل والتي تخل بالمنازل ويوجد لدي شركه الصفرات مجموعه متميزه من المعدات والاجهزه وايضا العماله ذات الخبره في هذا المجال وبافضل اسعار شامله الخصومات عليكم فقط الاتصال بشركه الصفرات شركة الصفرات لكشف التسربات بالرياض اذا كنت ترغب ف الحصول علي اعلي معدل نضافه للمنازل والفلل والتخلص من الاوساخ والرواسب التي تلازم منزله والتخلص من البكتيريا التي تتسبب في انتشار الامراض عليك فقط الاتصال بشركتنا حيث تجد افضل اسعار وافضل خدمه من خلال شركة الصفرات للتنظيف بالرياض شركه الصفرات من افضل الشركات الموجوده في مجال مكافحه الحشرات بشكل خاص وفي مجالات النظافه بشكل عام ولا يوجد في حياتنا مجال للحشرات للتعايش معانا ويجب ان نتخلص منها بافضل طريقه بحيث الا تظهر مجددا ونتميز نحن بافضل اساليب للتخلص من الحشرات من خلال افضل مبيدات وادويه للتخلص منها عليكم فقط بالاتصال بشركه الصفرات شركة الصفرات لمكافحة الحشرات بالرياض شركه الصفرات تتشرف ان تقدم لعملائها افضل خدمات تنظيف وغسيل وتطهير الخزانات بحيث ان تنظفها بافضل طرق للتخلص من الاوساخ الموجوده بداخلها ونقدم لعملائنا افضل الطرق في تنظيف الخزانات والمحافظه علي تدفق المياه بداخلها وعليكم فقط بالاتصال بشركه الصفرات حيث تجدو افضل الاسعار شركة الصفرات لتنظيف الخزانات بالرياض حيث انه يوجد لدينا جميع ادوات واجهزه التنظيف الحديثه ونتشرف باتصالكم بنا في اي وقت لاننا نعمل خلال 24 ساعه

    ReplyDelete
  27. I love this post.

    โปรโมชั่นGclub ของทางทีมงานตอนนี้แจกฟรีโบนัส 50%
    เพียงแค่คุณสมัคร Gclub กับทางทีมงานของเราเพียงเท่านั้น
    ร่วมมาเป็นส่วนหนึ่งกับเว็บไซต์คาสิโนออนไลน์ของเราได้เลยค่ะ
    สมัครสล็อตออนไลน์ >>> goldenslot
    สนใจร่วมลงทุนกับเรา สมัครเอเย่น Gclub คลิ๊กได้เลย

    ReplyDelete
  28. Very cool!

    เว็บไซต์คาสิโนออนไลน์ที่ได้คุณภาพอับดับ 1 ของประเทศ
    เป็นเว็บไซต์การพนันออนไลน์ที่มีคนมา สมัคร Gclub Royal1688
    และยังมีหวยให้คุณได้เล่น สมัครหวยออนไลน์ ได้เลย
    สมัครสมาชิกที่นี่ >>> Gclub Royal1688
    ร่วมลงทุนสมัครเอเย่นคาสิโนกับทีมงานของเราได้เลย

    ReplyDelete
  29. Awesome blog, Visit Ogen Infosystem for the best Website Designing Service provider in Delhi, India. Here you will get SEO Service also to promote your website.
    SEO Service in Delhi

    ReplyDelete
  30. Nice Blog, Mutual Fund Wala is one of the best Investment and Mutual Fund Advisor Company in Delhi India. Visit following page for more information.
    Mutual Fund Distributor

    ReplyDelete
  31. Students should use our company in the provision of their Custom Written College Papers solutions because we are committed to delivering 100% Online Essay Writing Services solutions.

    ReplyDelete