{"id":87784,"date":"2023-07-07T11:10:38","date_gmt":"2023-07-07T05:40:38","guid":{"rendered":"https:\/\/techvidvan.com\/tutorials\/?p=87784"},"modified":"2026-06-03T15:09:21","modified_gmt":"2026-06-03T09:39:21","slug":"python-opencv-digital-drawing","status":"publish","type":"post","link":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/","title":{"rendered":"Python OpenCV Digital Drawing &#8211; Art Meets Technology"},"content":{"rendered":"<p>Digital drawing has become really popular, and one reason for this is gesture recognition technology. It lets you use hand gestures to control digital drawing tools, which is pretty cool.<\/p>\n<p>In this project, we&#8217;ll show you how to use OpenCV, which is a tool for image processing and machine learning, to create your own gesture recognition system. We&#8217;ll explain what gesture recognition is, show you how to detect and track hand gestures, and give you step-by-step instructions to create your own digital drawing application. By the end, you&#8217;ll be able to use OpenCV to create your own gesture-controlled digital drawing projects.<\/p>\n<h3>MediaPipe<\/h3>\n<p>MediaPipe is a computer vision framework developed by Google that allows developers to create machine learning-based applications. It includes pre-built models for tasks such as hand and face detection. We can use the hand detection model to create a digital drawing application that enables users to draw with their hands, without using a stylus or any other input device. The hand detection model detects the position of the user&#8217;s hand and outputs a set of coordinates that can be used to track its movement and gestures.<\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/digital-drawing-hand-landmarks.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-88059 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/digital-drawing-hand-landmarks.webp\" alt=\"digital drawing hand landmarks\" width=\"2146\" height=\"744\" \/><\/a><\/p>\n<h3>Gesture Recognition<\/h3>\n<p>Gesture recognition is a technology that enables computers to identify and respond to the movements of a person&#8217;s body or hands. In digital drawing, it allows users to draw using natural hand movements, making the process more intuitive and enjoyable.<\/p>\n<p>OpenCV is an open-source library that can be used for gesture recognition in digital drawing by capturing images of the user&#8217;s hands and using OpenCV functions to analyze them. With this technology, specific hand gestures, such as a swipe or a circle, can be identified and translated into digital drawing commands.<\/p>\n<h3>Prerequisites for Digital Drawing Using Python OpenCV<\/h3>\n<p>It is important to have a solid understanding of the Python programming language and the OpenCV library. Apart from this you should have the following system requirements.<\/p>\n<ul>\n<li>Python 3.7 (64-bit) and above<\/li>\n<li>Any python editor (VS code, Pycharm)<\/li>\n<\/ul>\n<h3>Download Python OpenCV Digital Drawing Project<\/h3>\n<p>Please download the source code of Python OpenCV Digital Drawing Project from the following link: <a href=\"https:\/\/drive.google.com\/file\/d\/12rwwjxBq_iwdtNik8d8HbGb8VdgYqavv\/view?usp=drive_link\"><strong>Python OpenCV Digital Drawing Project Code.\u00a0<\/strong><\/a><\/p>\n<h3>Installation<\/h3>\n<p><strong>Open windows cmd as administrator<\/strong><\/p>\n<p>1. To install the opencv library run the command from the cmd.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pip install opencv-python\r\n<\/pre>\n<p>2. To install the mediapipe library run the command from the cmd.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pip install mediapipe\r\n<\/pre>\n<h3>Let\u2019s Implement<\/h3>\n<p><strong>To implement this follow the below steps.<\/strong><\/p>\n<p>1. We need to import some libraries that will be used in our implementation.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import cv2\r\nimport mediapipe as mp\r\nimport numpy as np\r\n<\/pre>\n<p>2. The code uses the MediaPipe library in Python to detect and draw one hand in an image or video. It only detects hands with a confidence level of 70% or higher and uses MediaPipe&#8217;s drawing module to draw the hand landmarks on the image.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">mpHands = mp.solutions.hands\r\nhands = mpHands.Hands(max_num_hands=1, min_detection_confidence=0.7)\r\nmpDraw = mp.solutions.drawing_utils\r\n<\/pre>\n<p>3. It opens the integrated camera.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cap = cv2.VideoCapture(0)\r\n<\/pre>\n<p>4. The code creates a drawing area with a specific size using a NumPy array. It also initializes a variable to keep track of the last point where the user&#8217;s hand was detected. This is necessary to draw continuous lines as the user moves their hand.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">canvas = np.zeros((480, 640, 3), np.uint8)\r\nlast_point = None\r\n<\/pre>\n<p>5. Start the while loop.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">while True:\r\n<\/pre>\n<p>6. cap.read() function returns two values, first is stored in \u2018ret\u2019 which is a boolean value The function cap.read() reads the frame and returns two values: ret (a boolean indicating if the frame was successfully read) and frame (an array of pixel values in the captured frame). These values can be used to process or display the image<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ret, frame = cap.read()\r\n<\/pre>\n<p>7. This code determines the height, width, and number of color channels of an input frame and assigns them to variables x, y, and c.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">x, y, c = frame.shape\r\n<\/pre>\n<p>8. This code flips the input frame horizontally and converts its color space to RGB. This is necessary for the MediaPipe hand detection model that requires RGB input frames.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">frame = cv2.flip(frame, 1)\r\nframergb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)\r\n<\/pre>\n<p>9. This code processes the RGB frame using the hands detection model initialized earlier, and assigns the resulting detections to the variable result.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">result = hands.process(framergb)\r\n<\/pre>\n<p>10. two variables &#8211; gesture and num_fingers &#8211; are initialized to empty or zero.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">gesture = '  '\r\nnum_fingers = 0\r\n<\/pre>\n<p>11. if statement checks if there are any detected hand landmarks in the result. If so, the code initializes an empty list called landmarks to store the coordinates of the hand landmarks.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">if result.multi_hand_landmarks:\r\n        landmarks = []\r\n<\/pre>\n<p>12. This code starts a loop that goes through each hand detected in the input frame by MediaPipe&#8217;s hand detection model.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">for handslms in result.multi_hand_landmarks:\r\n<\/pre>\n<p>13. In this code, the for loop iterates over the landmark points of each detected hand, and their x and y coordinates are computed and stored in a list called landmarks. This list will be used to draw lines between the landmarks to form the hand shape and to detect hand gestures and finger counts.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">for lm in handslms.landmark:\r\n                lmx = int(lm.x * x)\r\n                lmy = int(lm.y * y)\r\n\r\n                landmarks.append([lmx, lmy])\r\n<\/pre>\n<p>14. This code draws landmarks and connections on the input frame using the mpDraw module. It takes the detected hand landmarks from MediaPipe and adds connections between them to form the shape of the hand. The resulting image will show the detected hand with points representing the landmarks and lines connecting them.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">mpDraw.draw_landmarks(frame, handslms, mpHands.HAND_CONNECTIONS)\r\n<\/pre>\n<p>15. This code checks the hand landmarks detected in the input frame and counts the number of fingers extended by the user based on their positions. It increments the count for each extended finger and returns the total number of extended fingers.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">if len(landmarks) &gt; 0:\r\n                if landmarks[4][0] &lt; landmarks[3][0]:\r\n                    num_fingers += 1\r\n                if landmarks[8][1] &lt; landmarks[6][1]:\r\n                    num_fingers += 1\r\n                if landmarks[12][1] &lt; landmarks[10][1]:\r\n                    num_fingers += 1\r\n                if landmarks[16][1] &lt; landmarks[14][1]:\r\n                    num_fingers += 1\r\n                if landmarks[20][1] &lt; landmarks[18][1]:\r\n                    num_fingers += 1\r\n<\/pre>\n<p>16. This code sets the gesture variable based on the number of fingers extended by the user. Each gesture corresponds to a specific number of extended fingers, and this code likely triggers different actions based on the gesture detected, such as drawing a line or erasing.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">if num_fingers == 1:\r\n                gesture = 'Draw Line'\r\n            elif num_fingers == 2:\r\n                gesture = 'Draw Rectangle'\r\n            elif num_fingers == 3:\r\n                gesture = 'Draw Circle'\r\n            elif num_fingers == 4:\r\n                gesture = 'Eraser'\r\n            elif num_fingers == 5:\r\n                gesture = 'Eraser'\r\n<\/pre>\n<p>17. This code updates an image canvas based on the gesture detected from the previous code. If a canvas image exists, the gesture is checked and a specific action is performed. The actions include drawing a line, rectangle, or circle on the canvas, or erasing. The last_point variable is used to keep track of the last point used for drawing lines on the canvas.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">if canvas is not None:\r\n                if gesture == 'Draw Line':\r\n                    current_point = landmarks[0]\r\n                    if last_point is not None:\r\n                        cv2.line(canvas, last_point, current_point, (157, 252, 220), 2)\r\n                    last_point = current_point\r\n                elif gesture == 'Draw Rectangle':\r\n                    cv2.rectangle(canvas, landmarks[0], landmarks[1], (200, 180, 233), 2)\r\n                    last_point = None\r\n                elif gesture == 'Draw Circle':\r\n                    cv2.circle(canvas, landmarks[0], 50, (223, 178, 200), -1)\r\n                    last_point = None\r\n                elif gesture == 'Eraser':\r\n                    cv2.circle(canvas, landmarks[0], 50, (0, 0, 0), -1)\r\n                    last_point = None\r\n<\/pre>\n<p><strong>Note:-<\/strong> step 13-17 must be written under the step 12th for loop<\/p>\n<p>18. This code snippet displays the canvas image on a window titled &#8220;Board&#8221; using the OpenCV function cv2.imshow().<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cv2.imshow(\"Board\", canvas)\r\n<\/pre>\n<p><strong>Note:-<\/strong> This step must be written under the if block of 11th step<\/p>\n<p>19. These lines add text to the input frame to display the detected gesture and the number of fingers extended by the user. It uses the cv2.putText() function to specify the font, color, size, and position of the text.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cv2.putText(frame, gesture, (10, 50), cv2.FONT_HERSHEY_SIMPLEX, \r\n                   1, (0,0,255), 2, cv2.LINE_AA)\r\n    cv2.putText(frame, f\"Number of Fingers: {num_fingers}\", (10, 100), cv2.FONT_HERSHEY_SIMPLEX, \r\n                   1, (0,0,255), 2, cv2.LINE_AA)\r\n<\/pre>\n<p>20. This code displays the video frame on the screen with the title &#8220;TechVidvan&#8221;. It waits for a key event, and if the &#8216;q&#8217; key is pressed, it breaks the loop and terminates the program.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cv2.imshow(\"TechVidvan\", frame)\r\n\r\n   if cv2.waitKey(1) == ord('q'):\r\n       break\r\n<\/pre>\n<p><strong>Note:-<\/strong> Step 6-20 must be written under the while loop<\/p>\n<p>21. cap.release() frees the resources used to capture the video or camera stream, allowing them to be used by other applications. cv2.destroyAllWindows() closes all OpenCV windows, freeing system resources and ensuring the program ends cleanly.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cap.release()\r\ncv2.destroyAllWindows()\r\n<\/pre>\n<h3>Python OpenCV Digital Drawing Output<\/h3>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/opencv-digital-drawing-output.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-88061 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/opencv-digital-drawing-output.webp\" alt=\"opencv digital drawing output\" width=\"1920\" height=\"1080\" \/><\/a><\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/digital-drawing-output.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-88060 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/digital-drawing-output.webp\" alt=\"digital drawing output\" width=\"1920\" height=\"1080\" \/><\/a><\/p>\n<p><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/opencv-digital-drawing-project-output.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-88062 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/opencv-digital-drawing-project-output.webp\" alt=\"opencv digital drawing project output\" width=\"1920\" height=\"1080\" \/><\/a><\/p>\n<h3><a href=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/python-opencv-digital-drawing-output.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-88063 size-full\" src=\"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/sites\/2\/2023\/07\/python-opencv-digital-drawing-output.webp\" alt=\"python opencv digital drawing output\" width=\"800\" height=\"450\" \/><\/a><\/h3>\n<h3>Conclusion<\/h3>\n<p>In recent years, digital drawing has become popular and OpenCV&#8217;s gesture recognition technology has been useful for artists to make digital drawing easier and more accurate. It allows artists to control their digital drawing software with specific hand movements and saves time and reduces strain on their hands.<\/p>\n<p>Gesture recognition also lets artists create more expressive and natural-looking art by using their whole body to make strokes. This technology has made digital art more accessible to people and with further advancements, the future of digital drawing is exciting to imagine.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Digital drawing has become really popular, and one reason for this is gesture recognition technology. It lets you use hand gestures to control digital drawing tools, which is pretty cool. In this project, we&#8217;ll&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":88058,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[193],"tags":[5042,5043,191,392,395,5044,5045,379],"class_list":["post-87784","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-opencv-tutorials","tag-digital-drawing-project","tag-opencv-digital-drawing-project","tag-opencv-project-for-practice","tag-opencv-project-ideas","tag-opencv-projects","tag-python-opencv-digital-drawing","tag-python-opencv-digital-drawing-project","tag-python-opencv-project"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Python OpenCV Digital Drawing - Art Meets Technology - TechVidvan<\/title>\n<meta name=\"description\" content=\"Unleash your creativity with Python OpenCV digital drawing capabilities. Learn to create stunning artwork and enhance images effortlessly.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python OpenCV Digital Drawing - Art Meets Technology - TechVidvan\" \/>\n<meta property=\"og:description\" content=\"Unleash your creativity with Python OpenCV digital drawing capabilities. Learn to create stunning artwork and enhance images effortlessly.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/\" \/>\n<meta property=\"og:site_name\" content=\"TechVidvan\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/TechVidvan\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-07T05:40:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-03T09:39:21+00:00\" \/>\n<meta name=\"author\" content=\"TechVidvan Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:site\" content=\"@vidvantech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"TechVidvan Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python OpenCV Digital Drawing - Art Meets Technology - TechVidvan","description":"Unleash your creativity with Python OpenCV digital drawing capabilities. Learn to create stunning artwork and enhance images effortlessly.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/","og_locale":"en_US","og_type":"article","og_title":"Python OpenCV Digital Drawing - Art Meets Technology - TechVidvan","og_description":"Unleash your creativity with Python OpenCV digital drawing capabilities. Learn to create stunning artwork and enhance images effortlessly.","og_url":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/","og_site_name":"TechVidvan","article_publisher":"https:\/\/www.facebook.com\/TechVidvan\/","article_published_time":"2023-07-07T05:40:38+00:00","article_modified_time":"2026-06-03T09:39:21+00:00","author":"TechVidvan Team","twitter_card":"summary_large_image","twitter_creator":"@vidvantech","twitter_site":"@vidvantech","twitter_misc":{"Written by":"TechVidvan Team","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/#article","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/"},"author":{"name":"TechVidvan Team","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22"},"headline":"Python OpenCV Digital Drawing &#8211; Art Meets Technology","datePublished":"2023-07-07T05:40:38+00:00","dateModified":"2026-06-03T09:39:21+00:00","mainEntityOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/"},"wordCount":1232,"commentCount":0,"publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/#primaryimage"},"thumbnailUrl":"","keywords":["digital drawing project","opencv digital drawing project","opencv project for practice","opencv project ideas","opencv projects","python opencv digital drawing","python opencv digital drawing project","python opencv project"],"articleSection":["OpenCV Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/","url":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/","name":"Python OpenCV Digital Drawing - Art Meets Technology - TechVidvan","isPartOf":{"@id":"https:\/\/techvidvan.com\/tutorials\/#website"},"primaryImageOfPage":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/#primaryimage"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/#primaryimage"},"thumbnailUrl":"","datePublished":"2023-07-07T05:40:38+00:00","dateModified":"2026-06-03T09:39:21+00:00","description":"Unleash your creativity with Python OpenCV digital drawing capabilities. Learn to create stunning artwork and enhance images effortlessly.","breadcrumb":{"@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/#primaryimage","url":"","contentUrl":""},{"@type":"BreadcrumbList","@id":"https:\/\/techvidvan.com\/tutorials\/python-opencv-digital-drawing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/techvidvan.com\/tutorials\/"},{"@type":"ListItem","position":2,"name":"Python OpenCV Digital Drawing &#8211; Art Meets Technology"}]},{"@type":"WebSite","@id":"https:\/\/techvidvan.com\/tutorials\/#website","url":"https:\/\/techvidvan.com\/tutorials\/","name":"TechVidvan Blogs","description":"","publisher":{"@id":"https:\/\/techvidvan.com\/tutorials\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/techvidvan.com\/tutorials\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/techvidvan.com\/tutorials\/#organization","name":"TechVidvan","url":"https:\/\/techvidvan.com\/tutorials\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/","url":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","contentUrl":"https:\/\/techvidvan.com\/tutorials\/wp-content\/uploads\/2024\/03\/techvidvan-logo-200x50-1.webp","width":200,"height":50,"caption":"TechVidvan"},"image":{"@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/TechVidvan\/","https:\/\/x.com\/vidvantech"]},{"@type":"Person","@id":"https:\/\/techvidvan.com\/tutorials\/#\/schema\/person\/e9c26e74dd3d87421f7ada9433b8cd22","name":"TechVidvan Team","description":"The TechVidvan Team delivers practical, beginner-friendly tutorials on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our experts are here to help you upskill and excel in today\u2019s tech industry."}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/87784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/comments?post=87784"}],"version-history":[{"count":2,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/87784\/revisions"}],"predecessor-version":[{"id":448040,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/posts\/87784\/revisions\/448040"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/media?parent=87784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/categories?post=87784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techvidvan.com\/tutorials\/wp-json\/wp\/v2\/tags?post=87784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}