మేము ఓపెన్సివి యొక్క ప్రాథమిక విషయాలను నేర్చుకోవడంతో ప్రారంభించాము, ఆపై చిత్రాలపై కొన్ని ప్రాథమిక ఇమేజ్ ప్రాసెసింగ్ మరియు మానిప్యులేషన్లు చేసాము, తరువాత ఇమేజ్ సెగ్మెంటేషన్లు మరియు ఓపెన్సివి మరియు పైథాన్ భాషను ఉపయోగించి అనేక ఇతర ఆపరేషన్లు చేశాము. ఇక్కడ, ఈ విభాగంలో, టెంప్లేట్ మ్యాచింగ్ ఉపయోగించి మేము కొన్ని సాధారణ ఆబ్జెక్ట్ డిటెక్షన్ టెక్నిక్లను చేస్తాము. మేము ఒక చిత్రంలో ఒక వస్తువును కనుగొంటాము మరియు దాని లక్షణాలను వివరిస్తాము. మూలలు, అంచులు వంటి చిత్రంలోని సాధారణ లక్షణాలు ఫీచర్స్. మేము SIFT, SURF, FAST, BREIF & ORB వంటి కొన్ని సాధారణ మరియు ప్రసిద్ధ ఆబ్జెక్ట్ డిటెక్షన్ అల్గారిథమ్లను కూడా పరిశీలిస్తాము.
మునుపటి ట్యుటోరియల్లో చెప్పినట్లుగా, ఓపెన్సివి ఓపెన్ సోర్స్ కమ్యూటర్ విజన్ లైబ్రరీ, ఇది సి ++, పైథాన్ మరియు జావా ఇంటర్ఫేస్లను కలిగి ఉంది మరియు విండోస్, లైనక్స్, మాక్ ఓఎస్, ఐఓఎస్ మరియు ఆండ్రాయిడ్కు మద్దతు ఇస్తుంది. కాబట్టి దీనిని పైథాన్ మరియు లైనక్స్ వాతావరణంతో రాస్ప్బెర్రీ పైలో సులభంగా ఇన్స్టాల్ చేయవచ్చు. ఫేస్ డిటెక్షన్, ఫేస్ లాక్, ఆబ్జెక్ట్ ట్రాకింగ్, కార్ నంబర్ ప్లేట్ డిటెక్షన్, హోమ్ సెక్యూరిటీ సిస్టమ్ వంటి అనేక నిజ-సమయ ఇమేజ్ ప్రాసెసింగ్ అనువర్తనాలను రూపొందించడానికి ఓపెన్సివి మరియు అటాచ్డ్ కెమెరాతో రాస్ప్బెర్రీ పై ఉపయోగపడుతుంది.
ఆబ్జెక్ట్ డిటెక్షన్ మరియు రికగ్నిషన్ కంప్యూటర్ దృష్టికి చాలా ముఖ్యమైన ఉపయోగ సందర్భం, అవి శక్తివంతమైన పనులను చేయడానికి ఉపయోగిస్తారు
- లేబులింగ్ దృశ్యాలు
- రోబోట్ నావిగేషన్
- సెల్ఫ్ డ్రైవింగ్ కార్లు
- శరీర గుర్తింపు (మైక్రోసాఫ్ట్ కినెక్ట్)
- వ్యాధి మరియు క్యాన్సర్ గుర్తింపు
- ముఖ గుర్తింపు
- చేతివ్రాత గుర్తింపు
- ఉపగ్రహ చిత్రాలలో వస్తువులను గుర్తించడం
ఆబ్జెక్ట్ డిటెక్షన్ VS గుర్తింపు
ఆబ్జెక్ట్ రికగ్నిషన్ అనేది ఆబ్జెక్ట్ డిటెక్షన్ యొక్క రెండవ స్థాయి, దీనిలో కంప్యూటర్ ఒక చిత్రంలోని బహుళ వస్తువుల నుండి ఒక వస్తువును గుర్తించగలదు మరియు దానిని గుర్తించగలదు.
ఇప్పుడు, చిత్రం నుండి ఒక వస్తువును కనుగొనడానికి మేము కొన్ని ఇమేజ్ ప్రాసెసింగ్ ఫంక్షన్లను చేస్తాము.
చిత్రం నుండి ఒక వస్తువును కనుగొనడం
ఇక్కడ మనం ఒక చిత్రంలో అక్షరం / వస్తువును కనుగొనటానికి టెంప్లేట్ సరిపోలికను ఉపయోగిస్తాము, ఆ వస్తువును కనుగొనటానికి OpenCV యొక్క cv2.matchTemplate () ఫంక్షన్ను ఉపయోగిస్తాము
cv2 దిగుమతి సంఖ్యను np గా దిగుమతి చేయండి
ఇన్పుట్ చిత్రాన్ని లోడ్ చేసి బూడిద రంగులోకి మార్చండి
image = cv2.imread ('WaldoBeach.jpg') cv2.imshow ('ప్రజలు', చిత్రం) cv2.nightKey (0) బూడిద = cv2.cvtColor (చిత్రం, cv2.COLOR_BGR2GRAY)
టెంప్లేట్ చిత్రాన్ని లోడ్ చేయండి
template = cv2.imread ('waldo.jpg', 0) # చిత్ర ఫలితంపై వస్తువు యొక్క టెంప్లేట్ సరిపోలిక ఫలితం = cv2.matchTemplate (బూడిద, టెంప్లేట్, cv2.TM_CCOEFF) sin_val, max_val, min_loc, max_loc = cv2.minMaxLoc (ఫలితం)
సరిహద్దు పెట్టెను సృష్టించండి
top_left = max_loc # సరిహద్దు దీర్ఘచతురస్ర పరిమాణాన్ని 50 పిక్సెల్స్ ద్వారా పెంచుతుంది bottom_right = (top_left + 50, top_left + 50) cv2.rectangle (image, top_left, bottom_right, (0,255,0), 5) cv2.imshow ('object found', చిత్రం) cv2.nightKey (0) cv2.destroyAllWindows ()
లో cv2.matchTemplate (బూడిద, టెంప్లేట్, cv2.TM_CCOEFF) , బూడిద ఎత్తున చిత్రం ఇన్పుట్ వస్తువు మరియు టెంప్లేట్ కనుగొనేందుకు. చిత్రం నుండి వస్తువులను కనుగొనడానికి టెంప్లేట్ మ్యాచింగ్ పద్ధతిని వర్తించండి , ఇక్కడ cv2.TM_CCOEFF ఉపయోగించబడుతుంది.
మొత్తం ఫంక్షన్ ఫలితాన్ని ఇన్పుట్ చేసిన శ్రేణిని అందిస్తుంది, ఇది టెంప్లేట్ సరిపోలిక విధానం యొక్క ఫలితం.
ఆపై మేము cv2.minMaxLoc (ఫలితం) ను ఉపయోగిస్తాము , ఇది ఒక చిత్రంలో వస్తువు దొరికిన అక్షాంశాలు లేదా సరిహద్దు పెట్టెను ఇస్తుంది, మరియు మనకు ఆ కోఆర్డినేట్లు వచ్చినప్పుడు దానిపై ఒక దీర్ఘచతురస్రాన్ని గీయండి మరియు బాక్స్ యొక్క చిన్న కొలతలు విస్తరించండి వస్తువు సులభంగా దీర్ఘచతురస్రం లోపల సరిపోతుంది.
టెంప్లేట్ సరిపోలికను నిర్వహించడానికి అనేక పద్ధతులు ఉన్నాయి మరియు ఈ సందర్భంలో మేము cv2.TM_CCOEFF ని ఉపయోగిస్తున్నాము, ఇది సహసంబంధ గుణకం.
ఇక్కడ కీ పాయింట్లు (X, Y) కోఆర్డినేట్లు సిఫ్ట్ డిటెక్టర్ ఉపయోగించి సేకరించబడతాయి మరియు సివి 2 డ్రా కీ పాయింట్ ఫంక్షన్ ఉపయోగించి చిత్రంపై గీస్తారు.
సర్ఫ్
cv2 దిగుమతి సంఖ్యను np image = cv2.imread ('paris.jpg') బూడిద = cv2.cvtColor (చిత్రం, cv2.COLOR_BGR2GRAY)
SURF ఫీచర్ డిటెక్టర్ ఆబ్జెక్ట్ని సృష్టించండి, ఇక్కడ మేము హెస్సియన్ థ్రెషోల్డ్ను 500 కు సెట్ చేసాము
సర్ఫ్ = cv2.xfeatures2d.SURF_create (500) keypoints, సూచికలు = surf.detectAndCompute (బూడిద, ఏమీలేదు) ముద్రణ ("దొరికింది keypoints సంఖ్య:" లెన్ (keypoints))
ఇన్పుట్ చిత్రంపై గొప్ప కీ పాయింట్లను గీయండి
image = cv2.drawKeypoints (చిత్రం, కీ పాయింట్లు, ఏదీ లేదు, జెండాలు = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imshow ('ఫీచర్ మెథడ్ - SURF', ఇమేజ్) cv2.waitKey () cv2.destroyAllWindows
కన్సోల్ అవుట్పుట్:
వేగంగా
cv2 దిగుమతి సంఖ్యను np image = cv2.imread ('paris.jpg') బూడిద = cv2.cvtColor (చిత్రం, cv2.COLOR_BGR2GRAY)
ఫాస్ట్ డిటెక్టర్ ఆబ్జెక్ట్ సృష్టించండి
ఫాస్ట్ = cv2.FastFeatureDetector_create () # డిఫాల్ట్ కాని గరిష్టంగా వెలగదు ద్వారా, కీ పాయింట్లు పొందటానికి న ఉంది సమితి fast.setBool ('nonmaxSuppression', ఫాల్స్) ఆపివేయడానికి # keypoints = fast.detect (బూడిద, ఏమీలేదు) ముద్రణ ("keypoints సంఖ్య కనుగొనబడింది: ", లెన్ (కీ పాయింట్లు))
ఇన్పుట్ చిత్రంపై గొప్ప కీ పాయింట్లను గీయండి
image = cv2.drawKeypoints (చిత్రం, కీ పాయింట్లు, ఏదీ లేదు, జెండాలు = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imshow ('ఫీచర్ మెథడ్ - ఫాస్ట్', ఇమేజ్) cv2.waitKey () cv2.destroyAllWindows
కన్సోల్ అవుట్పుట్:
క్లుప్తంగా
cv2 దిగుమతి సంఖ్యను np image = cv2.imread ('paris.jpg') బూడిద = cv2.cvtColor (చిత్రం, cv2.COLOR_BGR2GRAY)
ఫాస్ట్ డిటెక్టర్ ఆబ్జెక్ట్ సృష్టించండి
సంక్షిప్త = cv2.xfeatures2d.BriefDescriptorExtractor_create ()
BRIEF ఎక్స్ట్రాక్టర్ ఆబ్జెక్ట్ సృష్టించండి
# సంక్షిప్త = cv2.DescriptorExtractor_create ("BRIEF") # ముఖ్య పాయింట్లను నిర్ణయించండి కీ పాయింట్లు = fast.detect (బూడిద, ఏదీ లేదు)
BRIEF ఉపయోగించి డిస్క్రిప్టర్లు మరియు కొత్త తుది కీ పాయింట్లను పొందండి
కీ పాయింట్స్, డిస్క్రిప్టర్స్ = బ్రీఫ్.కామ్ పుట్ (గ్రే, కీ పాయింట్స్) ప్రింట్ ("కీ పాయింట్ల సంఖ్య కనుగొనబడింది:", లెన్ (కీ పాయింట్స్))
ఇన్పుట్ చిత్రంపై గొప్ప కీ పాయింట్లను గీయండి
image = cv2.drawKeypoints (చిత్రం, కీ పాయింట్లు, ఏదీ లేదు, జెండాలు = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imshow ('ఫీచర్ మెథడ్ - BRIEF', ఇమేజ్) cv2.waitKey () cv2.destroyAllWindows
కన్సోల్ అవుట్పుట్:
ORB
cv2 దిగుమతి సంఖ్యను np image = cv2.imread ('paris.jpg') బూడిద = cv2.cvtColor (చిత్రం, cv2.COLOR_BGR2GRAY)
ORB ఆబ్జెక్ట్ని సృష్టించండి, మనం కోరుకునే ముఖ్య పాయింట్ల సంఖ్యను పేర్కొనవచ్చు
orb = cv2.ORB_create () # కీ పాయింట్లను నిర్ణయించండి కీ పాయింట్లు = orb.detect (బూడిద, ఏదీ లేదు)
వివరణలను పొందండి
కీ పాయింట్లు, డిస్క్రిప్టర్లు = orb.compute (బూడిద, కీ పాయింట్లు) ముద్రణ ("కీ పాయింట్ల సంఖ్య కనుగొనబడింది:", లెన్ (కీ పాయింట్స్))
ఇన్పుట్ చిత్రంపై గొప్ప కీ పాయింట్లను గీయండి
image = cv2.drawKeypoints (చిత్రం, కీ పాయింట్లు, ఏదీ లేదు, జెండాలు = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imshow ('ఫీచర్ మెథడ్ - ORB', ఇమేజ్) cv2.waitKey () cv2.destroyAllWindows
కన్సోల్ అవుట్పుట్:
గరిష్ట పరిమితి 5000 ఉన్న కీ పాయింట్ల సంఖ్యను మేము పేర్కొనవచ్చు, అయితే డిఫాల్ట్ విలువ 500, అనగా కీ పాయింట్ల యొక్క ఏదైనా విలువ కోసం పేర్కొనకపోతే ORB స్వయంచాలకంగా ఉత్తమ 500 కీ పాయింట్లను కనుగొంటుంది.
కాబట్టి ఓపెన్సివిలో ఆబ్జెక్ట్ డిటెక్షన్ జరుగుతుంది, అదే ప్రోగ్రామ్లను ఓపెన్సివి ఇన్స్టాల్ చేసిన రాస్ప్బెర్రీ పైలో కూడా అమలు చేయవచ్చు మరియు గూగుల్ లెన్స్ ఉన్న స్మార్ట్ఫోన్ల వంటి పోర్టబుల్ పరికరంగా ఉపయోగించవచ్చు.
ఈ కథనాన్ని పైథాన్లోని మాస్టర్ కంప్యూటర్ విజన్ ™ ఓపెన్సివి 4 నుండి ఉడీమీపై డీప్ లెర్నింగ్ కోర్సుతో రాజీవ్ రతన్ రూపొందించారు, కంప్యూటర్ విజన్ మరియు పైథాన్ గురించి మరింత తెలుసుకోవడానికి దీన్ని చందా చేయండి.