ஓபன்சிவியின் அடிப்படைகளை கற்றுக்கொள்வதில் நாங்கள் தொடங்கினோம், பின்னர் படங்களில் சில அடிப்படை பட செயலாக்கம் மற்றும் கையாளுதல்களைச் செய்தோம், அதைத் தொடர்ந்து படப் பிரிவுகள் மற்றும் ஓபன்சிவி மற்றும் பைதான் மொழியைப் பயன்படுத்தி பல செயல்பாடுகள். இங்கே, இந்த பிரிவில், வார்ப்புரு பொருத்தத்தைப் பயன்படுத்தி சில எளிய பொருள் கண்டறிதல் நுட்பங்களைச் செய்வோம். ஒரு படத்தில் ஒரு பொருளைக் கண்டுபிடிப்போம், அதன் அம்சங்களை விவரிப்போம். மூலைகள், விளிம்புகள் போன்ற படத்தின் பொதுவான பண்புகளே அம்சங்கள். SIFT, SURF, FAST, BREIF & ORB போன்ற சில பொதுவான மற்றும் பிரபலமான பொருள் கண்டறிதல் வழிமுறைகளையும் நாங்கள் பார்ப்போம்.
முந்தைய டுடோரியல்களில் கூறியது போல, ஓபன்சிவி என்பது ஓபன் சோர்ஸ் கம்யூட்டர் விஷன் லைப்ரரி ஆகும், இது சி ++, பைதான் மற்றும் ஜாவா இடைமுகங்களைக் கொண்டுள்ளது மற்றும் விண்டோஸ், லினக்ஸ், மேக் ஓஎஸ், iOS மற்றும் ஆண்ட்ராய்டை ஆதரிக்கிறது. எனவே பைதான் மற்றும் லினக்ஸ் சூழலுடன் ராஸ்பெர்ரி பையில் இதை எளிதாக நிறுவ முடியும். முகம் கண்டறிதல், முகம் பூட்டு, பொருள் கண்காணிப்பு, கார் எண் தட்டு கண்டறிதல், வீட்டு பாதுகாப்பு அமைப்பு போன்ற பல நிகழ்நேர பட செயலாக்க பயன்பாடுகளை உருவாக்க ஓபன்சிவி மற்றும் இணைக்கப்பட்ட கேமரா கொண்ட ராஸ்பெர்ரி பை பயன்படுத்தப்படலாம்.
பொருள் கண்டறிதல் மற்றும் அங்கீகாரம் கணினி பார்வைக்கு மிக முக்கியமான பயன்பாட்டு வழக்கை உருவாக்குகின்றன, அவை சக்திவாய்ந்த விஷயங்களைச் செய்யப் பயன்படுகின்றன
- லேபிளிங் காட்சிகள்
- ரோபோ ஊடுருவல்
- சுய-ஓட்டுநர் கார்கள்
- உடல் அங்கீகாரம் (மைக்ரோசாஃப்ட் கினெக்ட்)
- நோய் மற்றும் புற்றுநோய் கண்டறிதல்
- முக அங்கீகாரம்
- கையெழுத்து அங்கீகாரம்
- செயற்கைக்கோள் படங்களில் பொருட்களை அடையாளம் காணுதல்
பொருள் கண்டறிதல் வி.எஸ் அங்கீகாரம்
பொருள் அங்கீகாரம் என்பது பொருள் கண்டறிதலின் இரண்டாவது நிலை, இதில் ஒரு படத்தில் உள்ள பல பொருள்களிலிருந்து ஒரு பொருளை கணினி அடையாளம் காண முடியும் மற்றும் அதை அடையாளம் காண முடியும்.
இப்போது, ஒரு படத்திலிருந்து ஒரு பொருளைக் கண்டுபிடிக்க சில பட செயலாக்க செயல்பாடுகளைச் செய்வோம்.
ஒரு படத்திலிருந்து ஒரு பொருளைக் கண்டறிதல்
ஒரு படத்தில் எழுத்து / பொருளைக் கண்டுபிடிப்பதற்கு இங்கே டெம்ப்ளேட் பொருத்தத்தைப் பயன்படுத்துவோம், அந்த பொருளைக் கண்டுபிடிப்பதற்காக OpenCV இன் cv2.matchTemplate () செயல்பாட்டைப் பயன்படுத்துவோம்
cv2 import numpy ஐ np ஆக இறக்குமதி செய்க
உள்ளீட்டு படத்தை ஏற்றி சாம்பல் நிறமாக மாற்றவும்
image = cv2.imread ('WaldoBeach.jpg') cv2.imshow ('மக்கள்', படம்) cv2.waitKey (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 (படம், top_left, bottom_right, (0,255,0), 5) cv2.imshow ('பொருள் கிடைத்தது', படம்) cv2.waitKey (0) cv2.destroyAllWindows ()


இல் cv2.matchTemplate (சாம்பல், டெம்ப்ளேட், cv2.TM_CCOEFF) , உள்ளீடு சாம்பல் அளவிலான படத்தை பொருள் மற்றும் டெம்ப்ளேட் கண்டுபிடிக்க. படத்திலிருந்து பொருட்களைக் கண்டுபிடிப்பதற்கான டெம்ப்ளேட் பொருந்தும் முறையைப் பயன்படுத்துங்கள், இங்கே cv2.TM_CCOEFF பயன்படுத்தப்படுகிறது.
முழு செயல்பாடும் விளைவாக உள்ளிடப்பட்ட ஒரு வரிசையை வழங்குகிறது, இது வார்ப்புரு பொருந்தும் செயல்முறையின் விளைவாகும்.
பின்னர் நாம் cv2.minMaxLoc (result) ஐப் பயன்படுத்துகிறோம், இது ஒரு படத்தில் பொருள் காணப்பட்ட ஆயத்தொலைவுகள் அல்லது எல்லை பெட்டியை அளிக்கிறது, மேலும் அந்த ஆயங்களை நாம் பெறும்போது அதன் மீது ஒரு செவ்வகத்தை வரைந்து, பெட்டியின் ஒரு சிறிய பரிமாணங்களை நீட்டவும் பொருள் செவ்வகத்திற்குள் எளிதில் பொருந்தும்.
வார்ப்புரு பொருத்தத்தை செய்ய பல்வேறு முறைகள் உள்ளன, இந்த விஷயத்தில் நாங்கள் cv2.TM_CCOEFF ஐப் பயன்படுத்துகிறோம், இது தொடர்பு குணகத்தைக் குறிக்கிறது.

இங்கே முக்கிய புள்ளிகள் (எக்ஸ், ஒய்) ஆயத்தொகுப்புகளைப் பயன்படுத்தி பிரித்தெடுக்கப்பட்டு, சி.வி 2 டிரா கீ பாயிண்ட் செயல்பாட்டைப் பயன்படுத்தி படத்தின் மீது வரையப்படுகின்றன.
சர்ஃப்
cv2 இறக்குமதி எண்ணை np image = cv2.imread ('paris.jpg') சாம்பல் = cv2.cvtColor (படம், cv2.COLOR_BGR2GRAY) என இறக்குமதி செய்க
SURF அம்சக் கண்டறிதல் பொருளை உருவாக்கவும், இங்கே நாம் ஹெஸியன் வாசலை 500 ஆக அமைத்துள்ளோம்
sur = cv2.xfeatures2d.SURF_create (500) விசைப்புள்ளிகள் , விளக்கங்கள் = sur.detectAndCompute (சாம்பல், எதுவுமில்லை) அச்சு ("கண்டறியப்பட்ட முக்கிய புள்ளிகளின் எண்ணிக்கை:", லென் (முக்கிய புள்ளிகள்))
உள்ளீட்டு படத்தில் பணக்கார முக்கிய புள்ளிகளை வரையவும்
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 (சாம்பல், எதுவுமில்லை)
விளக்கிகளைப் பெறுங்கள்
keypoints, descriptors = orb.compute (சாம்பல், முக்கிய புள்ளிகள்) அச்சு ("கண்டறியப்பட்ட முக்கிய புள்ளிகளின் எண்ணிக்கை:", லென் (விசை புள்ளிகள்))
உள்ளீட்டு படத்தில் பணக்கார முக்கிய புள்ளிகளை வரையவும்
image = cv2.drawKeypoints (படம், முக்கிய புள்ளிகள், எதுவுமில்லை, கொடிகள் = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imshow ('அம்ச முறை - ORB', படம்) cv2.waitKey () cv2.destroyAllWindows
கன்சோல் வெளியீடு:

அதிகபட்ச வரம்பு 5000 ஐக் கொண்ட விசை புள்ளிகளின் எண்ணிக்கையை நாம் குறிப்பிடலாம், இருப்பினும் இயல்புநிலை மதிப்பு 500 ஆகும், அதாவது எந்தவொரு முக்கிய புள்ளிகளுக்கும் குறிப்பிடப்படாவிட்டால் சிறந்த 500 முக்கிய புள்ளிகளை ORB தானாகவே கண்டுபிடிக்கும்.
ஆகவே, ஓபன்சிவியில் பொருள் கண்டறிதல் நடைபெறுவது இதுதான், அதே நிரல்களை ஓபன்சிவி நிறுவப்பட்ட ராஸ்பெர்ரி பைவிலும் இயக்கலாம் மற்றும் கூகிள் லென்ஸ் கொண்ட ஸ்மார்ட்போன்கள் போன்ற சிறிய சாதனமாகப் பயன்படுத்தலாம்.
இந்த கட்டுரை பைத்தானில் உள்ள மாஸ்டர் கம்ப்யூட்டர் விஷன் ™ ஓபன்சிவி 4 இலிருந்து ராஜீவ் ரத்தன் உருவாக்கிய உடெமி பற்றிய ஆழமான கற்றல் பாடத்துடன் குறிப்பிடப்பட்டுள்ளது, கணினி பார்வை மற்றும் பைதான் பற்றி மேலும் அறிய அதை குழுசேரவும்.
