- 1. பிட்வைஸ் செயல்பாடுகள் மற்றும் மறைத்தல்
- 2. மாற்றம் & மங்கல்
- 3. கூர்மைப்படுத்துதல் - படத்தை மாற்றியமைத்தல் மங்கலானது
- 4. த்ரெஷோடிங் (பைனரைசேஷன்)
- 5. நீர்த்தல், அரிப்பு, திறத்தல் / நிறைவு
- 6. விளிம்பு கண்டறிதல் மற்றும் பட சாய்வு
- 14. முன்னோக்கு மற்றும் மாற்றம் மாற்றம்
- 8. லைவ் ஸ்கெட்ச் பயன்பாடு
முந்தைய டுடோரியல்களில், ஓபன்சிவி பற்றி நாங்கள் கற்றுக் கொண்டோம், சில அடிப்படை பட செயலாக்கத்தையும் செய்துள்ளோம், பின்னர் அடுத்த டுடோரியலில் பயிர், சுழற்சி, பட மாற்றம் போன்ற ஓபன்சிவியில் சில பட கையாளுதல்களைச் செய்துள்ளோம். எனவே முந்தைய பட கையாளுதல் டுடோரியலுடன் தொடர்ந்து, இங்கே நாம் கற்றுக்கொள்கிறோம் இன்னும் சில பட கையாளுதல் நுட்பங்கள் மற்றும் டுடோரியலின் முடிவில் வெப்கேம் நேரடி ஊட்டத்திலிருந்து நேரடி ஓவியத்தை உருவாக்க பைதான்-ஓபன்சிவி திட்டத்தை உருவாக்குவோம். இந்த பயன்பாடு நாம் இதுவரை கற்றுக்கொண்ட அல்லது இந்த டுடோரியலில் கற்றுக் கொள்ளும் பல பட செயலாக்க செயல்பாடுகளைப் பயன்படுத்தும், எனவே இது அனைத்து செயல்பாடுகளையும் மறைக்க ஒரு நல்ல நடைமுறை எடுத்துக்காட்டு.
முந்தைய டுடோரியலில் கூறியது போல, ஓபன்சிவி என்பது ஓபன் சோர்ஸ் கம்யூட்டர் விஷன் லைப்ரரி ஆகும், இது சி ++, பைதான் மற்றும் ஜாவா இடைமுகங்களைக் கொண்டுள்ளது மற்றும் விண்டோஸ், லினக்ஸ், மேக் ஓஎஸ், iOS மற்றும் ஆண்ட்ராய்டை ஆதரிக்கிறது. எனவே பைதான் மற்றும் லினக்ஸ் சூழலுடன் ராஸ்பெர்ரி பையில் இதை எளிதாக நிறுவ முடியும். முகம் கண்டறிதல், முகம் பூட்டு, பொருள் கண்காணிப்பு, கார் எண் தட்டு கண்டறிதல், வீட்டு பாதுகாப்பு அமைப்பு போன்ற பல நிகழ்நேர பட செயலாக்க பயன்பாடுகளை உருவாக்க ஓபன்சிவி மற்றும் இணைக்கப்பட்ட கேமரா கொண்ட ராஸ்பெர்ரி பை பயன்படுத்தப்படலாம்.
இந்த டுடோரியலில், பைதான் ஓபன்சிவியைப் பயன்படுத்தி இன்னும் சில பட கையாளுதல்களைப் பார்க்க உள்ளோம். பைதான் ஓபன்சிவியைப் பயன்படுத்தி ஒரு படத்தில் பின்வரும் செயல்பாட்டைப் பயன்படுத்த இங்கே கற்றுக்கொள்வோம்:
- பிட்வைஸ் செயல்பாடுகள் மற்றும் மறைத்தல்
- கன்வல்யூஷன் & மங்கலான
- கூர்மைப்படுத்துதல் - படத்தை மாற்றியமைத்தல் மங்கலானது
- த்ரெஷோல்டிங் (பைனரைசேஷன்)
- விரிவாக்கம், அரிப்பு, திறத்தல் / நிறைவு
- விளிம்பு கண்டறிதல் மற்றும் பட சாய்வு
- முன்னோக்கு & மாற்றம் மாற்றம்
- லைவ் ஸ்கெட்ச் பயன்பாடு
1. பிட்வைஸ் செயல்பாடுகள் மற்றும் மறைத்தல்
பிட்வைஸ் செயல்பாடுகள் பட மறைப்பில் உங்களுக்கு உதவுகின்றன மற்றும் சில எளிய படங்களை உருவாக்க உங்களுக்கு உதவுகின்றன.
ஒரு சதுரத்தை உருவாக்குதல்
cv2 import numpy என np # இறக்குமதி செய்யுங்கள், ஏனெனில் இது ஒரு கிரேஸ்கேல் படம், நாங்கள் # வண்ணப் படத்தைப் பயன்படுத்தினால், ஒரு செவ்வகம் = np.zeros ((300,300,3), np.uint8) # ஒரு சதுர சதுரம் = np.zeros ((300,300), np.uint8) cv2.rectangle (சதுரம், (50,50), (250,250), 255, -1) cv2.imshow ("சதுரம்", சதுரம்) cv2 ஐ உருவாக்குதல். waitKey (0)
ஒரு நீள்வட்டத்தை உருவாக்குதல்
நீள்வட்டம் = np.zeros ((300,300), np.uint8) cv2.ellipse (நீள்வட்டம், (150,150), (150,150), 30,0,180,255, -1) cv2.imshow ("நீள்வட்டம்", நீள்வட்டம்) cv2.waitKey (0)

பிட்வைஸ் செயல்பாடுகளுடன் பரிசோதனை
இரண்டு சந்திக்கும் இடத்தில் மட்டுமே #AND_ காட்டுகிறது
BitwiseAND = cv2.bitwise_and (சதுரம், நீள்வட்டம்) cv2.imshow ("AND", BitwiseAND) cv2.waitKey (0)
சதுர அல்லது நீள்வட்டம் உள்ள இடத்தில் மட்டுமே #OR_ காட்டுகிறது
BitwiseOR = cv2.bitwise_or (சதுரம், நீள்வட்டம்) cv2.imshow ("OR", BitwiseOR) cv2.waitKey (0)
#XOR_ தானாகவே இருக்கும் இடத்தில் மட்டுமே காட்டுகிறது
BitwiseXOR = cv2.bitwise_xor (சதுரம், நீள்வட்டம்) cv2.imshow ("XOR", BitwiseXOR) cv2.waitKey (0)
#NOT_ நீள்வட்டத்தின் ஒரு பகுதியாக இல்லாத அனைத்தையும் காட்டுகிறது மற்றும் செயல்பாட்டை ஒற்றை உருவத்திற்கு மட்டுமே பயன்படுத்த முடியும்
BitwiseNOT_elp = cv2.bitwise_not (நீள்வட்டம்) cv2.imshow ("NOT_ellipse", BitwiseNOT_elp) cv2.waitKey (0) cv2.destroyAllWindows ()

2. மாற்றம் & மங்கல்
ஒரு சுழற்சி பொதுவாக ஆரம்ப சார்பின் ஒரு திருத்தப்பட்ட பதிப்பு இது மூன்றாம் செயல்பாடாக உற்பத்தி இரண்டு செயல்பாடுகளை நிகழ்த்த ஒரு கணித செயல்பாடு ஆகும்.
வெளியீட்டு படம் = படம் செயல்பாடு கர்னல் அளவு
இல் கணினி தோற்றத்தின் நாங்கள் கர்னல் நாங்கள் எங்கள் படத்தின் மேல் எங்கள் கையாதல் செயல்பாடு இயங்கும் மீது அளவு குறிப்பிட பயன்படுத்தும்படி.
மங்கலானது ஒரு பிராந்தியத்திற்குள் (கர்னல்) பிக்சல்களை சராசரியாகக் கொண்ட ஒரு செயல்பாடு
ஓபன்சிவி கர்னல்களைப் பயன்படுத்துவதன் மூலம் ஒரு படத்தை மழுங்கடிக்கிறது, எந்தவொரு பிக்சலின் மதிப்பையும் வெவ்வேறு அளவு அண்டை பிக்சல்களுடன் இணைப்பதன் மூலம் ஒரு கர்னல் உங்களுக்குக் கூறுகிறது, கர்னல் படத்தின் ஒவ்வொரு பிக்சலுக்கும் ஒவ்வொன்றாக ஒவ்வொன்றாக இறுதி படத்தை உருவாக்குகிறது.

எளிமையாகச் சொன்னால், ஒரு பட மாற்றமானது வெறுமனே ஒரு உறுப்பு வாரியாக இரண்டு மெட்ரிக்குகளின் பெருக்கமாகும், அதைத் தொடர்ந்து ஒரு தொகை.
பின்வரும் உதாரணத்தால் நாம் அதை வெறுமனே புரிந்து கொள்ள முடியும்.

மேலே 3X3 கர்னல் உள்ளது.
படங்களை பிரகாசமாக்குவது அல்லது இருட்டடிப்பது போன்றவற்றின் தீவிரத்தை அதிகரிக்கிறோம் அல்லது தீவிரத்தை குறைத்துக்கொண்டிருக்கிறோம்.
Cv2.filter2D (படம், -1, கர்னல்) செயல்பாட்டால் கொடுக்கப்பட்ட ஓபன்சிவி மங்கலான முறை வடிகட்டி 2 டி ஐ சோதிப்போம்.
cv2 இறக்குமதி எண்ணை np image = cv2.imread ('elephant.jpg') cv2.imshow ('அசல்', படம்) cv2.waitKey (0)
# 3x3 கர்னல் மேட்ரிக்ஸை உருவாக்குகிறது
kernel_3x3 = np.ones ((3,3), np.float32) / 9
# கர்னலை ஒரு படத்துடன் இணைக்க cv2.filter2D ஐப் பயன்படுத்துகிறோம்
blurred = cv2.filter2D (படம், -1, கர்னல்_3x3) cv2.imshow ('3x3_blurring', மங்கலான) cv2.waitKey (0)
# 7x7 கர்னல் மேட்ரிக்ஸை உருவாக்குகிறது
kernel_7x7 = np.ones ((7,7), np.float32) / 49
# கர்னலை ஒரு படத்துடன் இணைக்க cv2.filter2D ஐப் பயன்படுத்துகிறோம்
மங்கலான = cv2.filter2D (படம், -1, கர்னல்_7x7) cv2.imshow ('7x7_blurring', மங்கலான) cv2.waitKey (0) cv2.destroyAllWindows ()


மங்கலான பிற வகைகளும் உள்ளன:
cv2.blur - ஒரு குறிப்பிட்ட சாளரத்தின் சராசரி மதிப்பு.
cv2.GaussianBlur - ஒத்த ஆனால் காஸியன் சாளரத்தைப் பயன்படுத்துகிறது (மையத்தைச் சுற்றியுள்ள புள்ளிகளுக்கு அதிக முக்கியத்துவம்).
cv2.medianBlur– சாளரத்தில் உள்ள அனைத்து உறுப்புகளின் சராசரியையும் பயன்படுத்துகிறது.
cv2.bilateralFilter- விளிம்புகளை கூர்மையாக வைத்திருக்கும்போது மங்கலானது, இது விளிம்புகள் மற்றும் வரி விவரங்களை பாதுகாக்கிறது.
கீழே ஒவ்வொன்றாக பார்ப்போம், முதலில் கீழே உள்ள குறியீட்டைப் பயன்படுத்தி அசல் படத்தைக் காண்பிப்போம்:
cv2 இறக்குமதி எண்ணை np image = cv2.imread ('elephant.jpg') cv2.imshow ('அசல்', படம்) cv2.waitKey (0)
cv2.blur:
இந்த முறையில் சராசரியை ஒரு இயல்பாக்கப்பட்ட பெட்டி வடிப்பான் மூலம் படத்தை மாற்றுவதன் மூலம் செய்யப்படுகிறது, இது பெட்டியின் கீழ் இடம் பெறுகிறது மற்றும் மைய உறுப்பை மாற்றுகிறது. இங்கே பெட்டி அளவு ஒற்றைப்படை மற்றும் நேர்மறையாக இருக்க வேண்டும் .
# cv2.blur blur = cv2.blur (படம், (3,3%)) cv2.imshow ('சராசரி', மங்கலானது) cv2.waitKey (0)
cv2.GaussianBlur:
# cv2.GaussianBlur # பெட்டி வடிப்பானுக்கு பதிலாக, காஸியன் கர்னல் காஸியன் = cv2. காஸியன் ப்ளூர் (படம், (7,7), 0) cv2.imshow ('காஸியன் மங்கலான', காஸியன்) cv2.waitKey (0)
cv2.medianBlur:
இது கர்னல் பகுதியின் கீழ் உள்ள அனைத்து பிக்சல்களின் சராசரியையும் எடுக்கும் மற்றும் மைய உறுப்பு இந்த சராசரி மதிப்புடன் மாற்றப்படுகிறது.
# cv2.medianBlur # கர்னல் பகுதியின் கீழ் உள்ள அனைத்து பிக்சல்களின் சராசரியையும், மைய உறுப்பு #is இந்த சராசரி மதிப்புடன் மாற்றப்படுகிறது. சராசரி = cv2.medianBlur (பட, 5) cv2.imshow ('சராசரி மங்கலான', இடைநிலை) cv2.waitKey (0)
cv2.bilateralFilter:
விளிம்புகளை கூர்மையாக வைத்திருக்கும்போது இருதரப்பு சத்தத்தை அகற்றுவதில் மிகவும் பயனுள்ளதாக இருக்கும்
# cv2.bilateralFilter # விளிம்புகள் கூர்மையான இருதரப்பு = cv2.bilateralFilter (படம், 9,75,75) cv2.imshow ('இருதரப்பு மங்கலானது', இருதரப்பு) cv2.nightKey (0) cv2 ஐ வைத்திருக்கும்போது சத்தத்தை அகற்றுவதில் இருதரப்பு மிகவும் பயனுள்ளதாக இருக்கும் . destAllWindows ()

படம் டி-சத்தம்-அல்லாத உள்ளூர் என்றால் டெனோசிங்
cv2 இறக்குமதி எண்ணை np image = cv2.imread ('elephant.jpg') cv2.imshow ('அசல்', படம்) cv2.waitKey (0)
#parameter after none வடிகட்டி வலிமை 'h' (5-10 ஒரு நல்ல வரம்பு) # அடுத்தது வண்ண கூறுகளுக்கு h ஆகும், மீண்டும் h இன் அதே மதிப்பை அமைக்கவும்
dst = cv2.fastNlMeansDenoisingColored (படம், எதுவுமில்லை, 6,6,7,21) cv2.imshow ('வேகமாக என்றால் டெனோயிஸ்', dst) cv2.waitKey (0) cv2.destroyAllWindows ()

உள்ளூர் அல்லாத வழிமுறைகளின் 4 மாறுபாடுகள் உள்ளன
cv2.fastNlMeansDenoising () - ஒற்றை சாம்பல் அளவிலான படத்திற்கு
cv2.fastNlMeansDenoisingColored () - ஒற்றை வண்ணப் படம்
cv2.fastNlmeansDenoisingMulti () - பட வரிசை கிரேஸ்கேலுக்கு
cv2.fastNlmeansDenoisingcoloredMulti () - பட வரிசை வண்ணத்திற்கு
3. கூர்மைப்படுத்துதல் - படத்தை மாற்றியமைத்தல் மங்கலானது
கூர்மைப்படுத்துவது மங்கலாக இருப்பதற்கு எதிரானது, இது படத்தில் விளிம்புகளை பலப்படுத்துகிறது அல்லது வலியுறுத்துகிறது.
கர்னல் =,
எங்கள் கர்னல் மேட்ரிக்ஸ் ஒன்று வரை தொகுக்கிறது, எனவே இயல்பாக்க தேவையில்லை (அதாவது அசல் போன்ற பிரகாசத்திற்கு ஒரு காரணியால் பெருக்கவும்), கர்னல் 1 க்கு இயல்பாக்கப்படாவிட்டால் படம் பிரகாசமாக அல்லது இருண்டதாக இருக்கும்.
cv2 இறக்குமதி எண்ணை np image = cv2.imread ('elephant.jpg') cv2.imshow ('அசல்', படம்) cv2.waitKey (0)
kernel_sharpening = np.array (,
])
உள்ளீட்டு படத்திற்கு கூர்மைப்படுத்தும் கர்னலைப் பயன்படுத்துகிறது
கூர்மையாக்கப்பட்ட = cv2.filter2D (படம், -1, கர்னல்_ஷார்பெனிங்) cv2.imshow ('கூர்மையான படம்', கூர்மைப்படுத்தப்பட்டது) cv2.waitKey (0) cv2.destroyAllWindows ()

4. த்ரெஷோடிங் (பைனரைசேஷன்)
த்ரெஷோல்டிங் என்பது ஒரு படத்தை பைனரி வடிவமாக மாற்றும் செயல். Opencv இல் வரையறுக்கப்பட்ட நுழைவாயிலுக்கு தனி செயல்பாடு உள்ளது
Cv2.threshold (படம், வாசல் மதிப்பு, அதிகபட்ச மதிப்பு, வாசல் வகை)
பின்வரும் வாசல் வகைகள் உள்ளன:
- cv2.THRESH_BINARY - மிகவும் பொதுவானது
- cv2. THRESH_BINARY_INV - மிகவும் பொதுவானது
- cv2.THRESH_TRUNC
- cv2.THRESH_TOZERO
- cv2. THRESH_TOZERO_INV
குறிப்பு: வாசலுக்கு முன் படத்தை கிரேஸ்கேலாக மாற்ற வேண்டும்
cv2 இறக்குமதி எண்ணை np #load படமாக கிரேஸ்கேல் படமாக இறக்குமதி செய்யுங்கள் = cv2.imread ('gradient.jpg', 0) cv2.imshow ('அசல்', படம்) cv2.nightKey (0)

# மதிப்பு 127 க்கு கீழே 0 (கருப்பு), மற்றும் 127 க்கு மேல் 255 (வெள்ளை) க்கு செல்கிறது
_, thresh1 = cv2.threshold (படம், 127,255, cv2.THRESH_BINARY) cv2.imshow ('1 வாசல்', thresh1) cv2.waitKey (0)
# மதிப்பு 127 க்கு கீழே 255 ஆகவும், 127 க்கு மேலே உள்ள மதிப்புகள் 0 ஆகவும் (மேலே தலைகீழ்)
_, thresh2 = cv2.threshold (படம், 127,255, cv2.THRESH_BINARY_INV) cv2.imshow ('2 வாசல்', thresh2) cv2.nightKey (0)
127 க்கு மேலே உள்ள # மதிப்பு 127 இல் துண்டிக்கப்பட்டுள்ளது (நடைபெற்றது), 255 வாதம் பயன்படுத்தப்படாது.
_, thresh3 = cv2.threshold (படம், 127,255, cv2.THRESH_TRUNC) cv2.imshow ('3 thresh trunc', thresh3) cv2.waitKey (0)
127 க்குக் கீழே உள்ள # மதிப்புகள் 0 க்குச் செல்கின்றன, 127 க்கு மேல் மாறாது
_, thresh4 = cv2.threshold (படம், 127,255, cv2.THRESH_TOZERO) cv2.imshow ('4 வாசல்', thresh4) cv2.waitKey (0)
மேலே உள்ள #Revesrse, 127 க்கு கீழே மாறாது, 127 க்கு மேல் பூஜ்ஜியத்திற்கு செல்கிறது
_, thresh5 = cv2.threshold (படம், 127,255, cv2.THRESH_TOZERO_INV) cv2.imshow ('5 வாசல்', thresh5) cv2.waitKey (0) cv2.destroyAllWindows ()

5. நீர்த்தல், அரிப்பு, திறத்தல் / நிறைவு
கணித உருவவியல் துறையில் செயல்பாடுகள் இவை
விரிவாக்கம் - இது ஒரு படத்தில் பொருளின் எல்லைகளுக்கு பிக்சல்களைச் சேர்க்கிறது.
அரிப்பு - ஒரு படத்தில் பொருளின் எல்லைகளில் பிக்சல்களை நீக்குகிறது.
திறத்தல் - அரிப்பு தொடர்ந்து நீர்த்தல்.
மூடல் - அரிப்பு தொடர்ந்து அரிப்பு.
படங்களை முதலில் அரிப்பு மூலம் மெல்லியதாகக் கருதுவதால் (சத்தத்தை நீக்குகிறது) பின்னர் அதை நீர்த்துப்போகச் செய்வதால் படங்களைத் திறப்பதற்கு மிகவும் உதவியாக இருக்கும்.
நீர்த்தல் மற்றும் அரிப்புடன் குழப்பம்
வெள்ளை பின்னணியைக் கொண்ட படங்களில் சில நேரங்களில் நீர்த்தலுக்கும் அரிப்புக்கும் இடையில் குழப்பம் ஏற்படுகிறது, ஏனெனில் ஓபன்சிவி வெள்ளை பின்னணியை அசல் படத்திற்குப் பதிலாக நீர்த்துப்போகச் செய்யப்பட வேண்டும் அல்லது அரிக்கப்பட வேண்டும் என்று கருதுகிறது, எனவே இந்த விஷயத்தில் அரிப்பு பட மாதிரியில் காட்டப்பட்டுள்ளபடி நீர்த்த மற்றும் நேர்மாறாக செயல்படுகிறது. கீழே காட்டப்பட்டுள்ளது.

நினைவில் கொள்ளுங்கள், ஒரு படத்தில் உள்ள பொருட்களின் எல்லைகளுக்கு டைலேஷன் பிக்சல்களைச் சேர்க்கிறது , அதே நேரத்தில் அரிப்பு ஒரு படத்தில் உள்ள பொருட்களின் எல்லைகளில் பிக்சல்களை நீக்குகிறது
cv2 இறக்குமதி எண்ணை np image = cv2.imread ('imagecv.png', 0) cv2.imshow ('அசல்', படம்) cv2.waitKey (0)

# அரிப்பு
# எங்கள் கர்னல் அளவை வரையறுப்போம்
kernel = np.ones ((5,5), np.uint8)
# இப்போது நாங்கள் படத்தை அரிக்கிறோம், இங்கே மறு செய்கை நீங்கள் படத்தை அரிக்க விரும்பும் நேரங்கள் அல்ல
அரிப்பு = cv2.erode (படம், கர்னல், மறு செய்கைகள் = 1) cv2.imshow ('அரிப்பு', அரிப்பு) cv2.waitKey (0)
# நீர்த்தல்
dilation = cv2.dilate (படம், கர்னல், மறு செய்கைகள் = 1) cv2.imshow ('dilation', dilation) cv2.waitKey (0)
# திறத்தல், சத்தத்தை அகற்ற நல்லது
திறப்பு = cv2.morphologyEx (படம், cv2.MORPH_OPEN, கர்னல்) cv2.imshow ('திறப்பு', திறப்பு) cv2.waitKey (0)
# மூடல், சத்தத்தை அகற்ற நல்லது
மூடல் = cv2.morphologyEx (படம், cv2.MORPH_CLOSE, கர்னல்) cv2.imshow ('நிறைவு', நிறைவு) cv2.nightKey (0) cv2.destroyAllWindows ()

6. விளிம்பு கண்டறிதல் மற்றும் பட சாய்வு
கணினி பார்வையில் எட்ஜ் கண்டறிதல் மிக முக்கியமான பகுதியாகும், குறிப்பாக வரையறைகளை கையாளும் போது.
விளிம்புகளை படத்தின் எல்லைகளாக வரையறுக்கலாம், உண்மையில் அவை படங்களில் பொருளை வரையறுக்கும் விளிம்புகள், அவை படத்தைப் பற்றிய பல தகவல்களைப் பாதுகாக்கின்றன.
முறையாக விளிம்புகள் ஒரு படத்தில் திடீர் மாற்றங்கள் (இடைநிறுத்தங்கள்) என வரையறுக்கப்படலாம், மேலும் அவை பிக்சல்கள் போன்ற தகவல்களை குறியாக்கம் செய்யலாம்.


கணினி பார்வை படத்தை எவ்வாறு அடையாளம் காட்டுகிறது மற்றும் அங்கீகரிக்கிறது என்பதை மேலே உள்ள படம் காட்டுகிறது.
எட்ஜ் கண்டறிதல் வழிமுறைகள்: - விளிம்பில் கண்டறிதல் வழிமுறைகளில் மூன்று முக்கிய வகைகள் உள்ளன
- சோபல் - செங்குத்து அல்லது கிடைமட்ட படங்களுக்கு முக்கியத்துவம் கொடுக்க.
- லாப்லாசியன் - குறைந்த பிழை வீதம், நன்கு வரையறுக்கப்பட்ட விளிம்புகள் மற்றும் துல்லியமான கண்டறிதல் காரணமாக உகந்ததாகும்.
- கேனி எட்ஜ் கண்டறிதல் வழிமுறை (1986 இல் ஜான்.எஃப். கேனியால் மாற்றப்பட்டது)
1. காஸியன் தெளிவின்மை பொருந்தும்
2. படத்தின் தீவிர சாய்வு கண்டுபிடிக்கிறது
3. அதிகபட்சம் அல்லாத ஒடுக்கம் பொருந்தும் (அதாவது விளிம்புகள் இல்லாத பிக்சல்களை நீக்குகிறது).
4. ஹிஸ்டெரெஸிஸ் வாசலைப் பயன்படுத்துகிறது (அதாவது பிக்சல் மேல் மற்றும் கீழ் வாசலில் இருந்தால், அது ஒரு விளிம்பாகக் கருதப்படுகிறது)
cv2 இறக்குமதி எண்ணை np image = cv2.imread ('input.jpg', 0) உயரம், அகலம் = image.shape என இறக்குமதி செய்க
# சோபல்
# சோபல் விளிம்புகளை விரிவுபடுத்துதல்
sobel_x = cv2.Sobel (படம், cv2.CV_64F, 0,1, ksize = 5) sobel_y = cv2.Sobel (படம், cv2.CV_64F, 1,0, ksize = 5) cv2.imshow ('அசல்', படம்) cv2.waitKey (0) cv2.imshow ('sobelx', sobel_x) cv2.waitKey (0)
# சோபிலி
cv2.imshow ('நிதானமாக', சோபல்_ய்) cv2.waitKey (0)
sobel_OR = cv2.bitwise_or (sobel_x, sobel_y) cv2.imshow ('sobelOR', sobel_OR) cv2.waitKey (0)
#laplaian
laplacian = cv2.Laplacian (படம், cv2.CV_64F) cv2.imshow ('Laplacian', laplacian) cv2.waitKey (0)
# கன்னி விளிம்பில் கண்டறிதல் வழிமுறை சாய்வு மதிப்புகளை
வாசல்களாகப் பயன்படுத்துகிறது # கேனியில் நாம் இரண்டு மதிப்புகளை வழங்க வேண்டும்: வாசல் 1 மற்றும் வாசல் 2.
வாசல் 2 ஐ விட பெரிய சாய்வு ஒரு விளிம்பாக கருதப்படுகிறது.
வாசல் 1 ஐ விட பெரிய சாய்வு ஒரு விளிம்பாக கருதப்படவில்லை.
தொடக்கநிலை 1 மற்றும் தொடக்கநிலை 2 இடையில் #values விளிம்பில் அல்லது அல்லாத விளிம்பில் போன்ற ஒன்று
இந்த எப்படி தங்கள் அடர்த்திகளை இணைக்கப்பட்டுள்ளது #on வழக்கு 60 க்கு குறைவான எந்த மதிப்பு உள்ளன கருதப்படுகிறது
விளிம்புகள் #non wheareas 120 மேலே எந்த மதிப்பு விளிம்புகள் கருதப்படுகின்றன.
canny = cv2.Canny (படம், 60,120) cv2.imshow ('canny', canny ) cv2.waitKey (0) cv2.destroyAllWindows ()

14. முன்னோக்கு மற்றும் மாற்றம் மாற்றம்
ஒரு படி பின்வாங்குவோம், அஃபைன் மற்றும் அஃபைன் அல்லாத உருமாற்றங்களைப் பார்ப்போம், கீழே காட்டப்பட்டுள்ள அசல் படம் தெளிவாக ஒரு அஃபைன் அல்லாத படமாகும், ஏனெனில் விளிம்புகள் ஒரு கட்டத்தில் சந்திக்கப் போகின்றன, இருப்பினும், நாம் அதை நேராக்கலாம் மற்றும் முன்னோக்கை எடுத்துக்கொள்வோம் உருமாற்றம்.
இந்த முன்னோக்கு மாற்றத்திற்கு அசல் படத்தின் நான்கு ஆயங்களும் பின்னர் வெளியீட்டு படத்தின் நான்கு புள்ளிகளும் நமக்கு தேவை, அவை புள்ளிகள்_ஏ மற்றும் புள்ளிகள்_பி ஆகியவற்றால் குறிக்கப்படுகின்றன. முதலில் இந்த புள்ளிகளின் உதவியுடன் நாம் ஒரு உருமாற்ற அணி, எம் ஐ getPersspectTransform செயல்பாட்டின் உதவியுடன் கணக்கிடுகிறோம்.
பின்னர் இந்த மேட்ரிக்ஸ் இறுதி வெளியீட்டை உருவாக்க வார்பெர்ஸ்பெக்டிவ் செயல்பாட்டிற்கு வழங்கப்படுகிறது.
இப்போது முதலில் முன்னோக்கு மாற்றத்தை முயற்சிப்போம்.
cv2 இறக்குமதி எண்ணை np ஆக இறக்குமதி matplotlib.pyplot என plt image = cv2.imread ('paper.jpg') cv2.imshow ('அசல்', படம்) cv2.waitKey (0)
அசல் படத்தின் 4 மூலைகளின் # ஒருங்கிணைப்பு
points_A = np.float32 (,,,])
விரும்பிய வெளியீட்டின் 4 மூலைகளின் # ஒருங்கிணைப்புகள் #
நாங்கள் A4 காகிதத்தின் விகிதத்தைப் பயன்படுத்துகிறோம் 1: 1.41
points_B = np.float32 (,,,])
# வருங்கால உருமாற்ற மேட்ரிக்ஸைக் கணக்கிட இரண்டு புள்ளிகளின் இரண்டு தொகுப்புகளைப் பயன்படுத்தவும் , எம்
எம் = cv2.getPerspectiveTransform (points_A, points_B) திசைதிருப்பல் = cv2.warpPerspective (பட, எம், (420,594)) cv2.imshow ('warpprespective', திசைதிருப்பப்படாத) cv2.waitKey (0) cv2.destroyAllWindows ()

உருமாற்றம் பெறுவதற்கு மூன்று புள்ளிகள் மட்டுமே தேவைப்படுவதால், அஃபைன் உருமாற்றம் எளிதானது. முழு செயல்முறையும் ஒரே மாதிரியாகவே செல்கிறது, ஆனால் முன்னோக்கு மாற்றத்திற்கு பதிலாக இப்போது நாம் அஃபைன் உருமாற்றத்தைக் கொண்டுள்ளோம், மேலும் கைமுறையாக நுழைவதற்குப் பதிலாக வடிவ செயல்பாட்டிலிருந்து வார்ப்ஃபைனில் உள்ள கோல்கள் மற்றும் வரிசைகளை வரையறுக்கிறோம்.
cv2 இறக்குமதி எண்ணை np ஆக இறக்குமதி matplotlib.pyplot என plt image = cv2.imread ('box.jpg') வரிசைகள், cols = image.shape cv2.imshow ('அசல்', படம்) cv2.nightKey (0)
அசல் படத்தின் 3 மூலைகளின் # ஒருங்கிணைப்பு
points_A = np.float32 (,,])
விரும்பிய வெளியீட்டின் 3 மூலைகளின் # ஒருங்கிணைப்புகள் #
நாங்கள் A4 காகிதத்தின் விகிதத்தைப் பயன்படுத்துகிறோம் 1: 1.41
points_B = np.float32 (,,])
# அஃபைன் # டிரான்ஸ்ஃபார்மேஷன் மேட்ரிக்ஸ், எம் கணக்கிட இரண்டு புள்ளிகளின் இரண்டு தொகுப்புகளைப் பயன்படுத்தவும்
எம் = cv2.getAffineTransform (points_A, points_B) திசைதிருப்பல் = cv2.warpAffine (பட, எம், (COLS, வரிசைகள்)) cv2.imshow ('warpaffine', திசைதிருப்பப்படாத) cv2.waitKey (0) cv2.destroyAllWindows ()

8. லைவ் ஸ்கெட்ச் பயன்பாடு
முதலில், மேலே உள்ள அனைத்து பட கையாளுதல் செயல்பாடுகளையும் படித்த பிறகு இந்த மினி திட்டத்தை நீங்கள் உருவாக்கியுள்ளீர்கள் என்று உங்களை வாழ்த்துங்கள். எனவே பைதான் ஓபன்சிவியின் இந்த மினி திட்டத்தில் நாம் சுழல்கள் மற்றும் செயல்பாடுகளின் சில புதிய கருத்துகளைக் கற்றுக்கொள்ளப் போகிறோம். நீங்கள் நிரலாக்கத்தை அறிந்திருந்தால், செயல்பாடு மற்றும் சுழல்கள் என்ன என்பது பற்றிய பரந்த யோசனை உங்களுக்கு இருக்க வேண்டும். இருப்பினும், மலைப்பாம்பில் சுழல்கள் மற்றும் செயல்பாடுகளின் அடிப்படைக் கருத்து அப்படியே இருக்கிறது, ஆனால் அவற்றை வரையறுக்கும் முறை கொஞ்சம் மாறுகிறது.
எனவே இந்த திட்டத்தின் தொடக்கத்தில் “ டெஃப் ஸ்கெட்ச் (படம்) ” இன் கீழ் ஒரு குறிப்பிட்ட குழு அறிக்கைகளை நாம் காணலாம் : இது ஒரு செயல்பாட்டின் முறையான வரையறையாகும், இது ஒரு குறிப்பிட்ட வெளியீட்டிற்கு ஒரு அறிக்கையின் குழு ஒன்று சேர்ந்து செயல்படுகிறது.
எனவே இந்த ஸ்கெட்ச் ஒரு செயல்பாடு, பைதான் செயல்பாட்டில் “டெஃப்” வரையறுக்கப்படுகிறது மற்றும் “:” அடையாளத்துடன் முடிகிறது. செயல்பாட்டிற்குள் இருக்க வேண்டிய அறிக்கைகள் அல்லது செயல்பாடு சரியாக வேலை செய்யத் தேவையானவை என்று நீங்கள் கூறலாம், அவை செயல்பாட்டின் மூலம் தானாக சீரமைக்கப்படுகின்றன. எனவே செயல்பாடுகளிலிருந்து வெளியே வர, அறிக்கைகள் முற்றிலும் சீரமைக்கப்பட வேண்டும். மேலதிக குறிப்புகளுக்கு பைத்தானில் செயல்பாடுகள் எவ்வாறு வரையறுக்கப்படுகின்றன என்பதைப் பற்றி நீங்கள் google ஐப் பார்க்கலாம்.
எனவே இந்த ஸ்கெட்ச் செயல்பாட்டில், பட செயலாக்கத்தின் பல அடுக்குகளை அறிமுகப்படுத்தியுள்ளோம், அவை ஒன்றிணைந்து ஒரு வெளியீட்டைக் கொடுக்கின்றன. முதலாவதாக, படம் கிரேஸ்கேலாக மாற்றப்படுகிறது, எனவே ஓபன்சிவி அதை எளிதாக செயலாக்க முடியும், பின்னர் சத்தத்தை குறைக்க சாம்பல் அளவிலான படத்திற்கு காஸியன் மங்கலானது பயன்படுத்தப்படுகிறது. பின்னர் விளிம்புகள் பிரித்தெடுக்கப்படும் வருகின்றன பின்னர் புத்திசாலித்தனமான புது விளிம்பில் கண்டறிதல் வழிமுறையின் உதவியுடன் ஒரு பைனரி தலைகீழ் விளிம்பில் வரையறுக்கப்பட்ட படத்தை பயன்படுத்தப்படும், இங்கே பைனரி தலைகீழ் மேலும் bitwise_NOT செய்ய முடியும் ஆனால் அது சுதந்திரம் கொடுக்கிறது நாம் வேண்டுமென்றே இந்த தொடக்கநிலை பைனரி தலைகீழ் தேர்ந்தது தெளிவான படத்தைப் பெறும் வரை அதன் அளவுருக்களை அமைக்க.
மேலும் குறிப்பு என்று செயல்பாடு வாதங்கள் படத்தை எடுத்து இரண்டு வாதங்கள் RET மற்றும் மறைக்க திரும்புகிறார். செயல்பாடு வெற்றிகரமாக இயங்குகிறதா இல்லையா என்பதை பூலியன் சொல்வது மற்றும் முகமூடி என்பது செயல்பாட்டின் இறுதி வெளியீடு, அதாவது பதப்படுத்தப்பட்ட படம்.
பின்னர் இரண்டாவது கருத்து opencv செயல்படும் வெப்கேம் உள்ளது செய்யப்படுகிறது என்று cv2.VideoCapture (0) ஒரு பொருள் படத்தை சேமித்தும் வைக்கிறது செயல்பாடு, தொப்பி தொப்பி படிக்கும்படி முடியும் என்று cap.read () என்று குறிப்பிடுவது செயல்பாடு இங்கு, தொப்பி. படிக்க () எல்லையற்ற நிலையில் இருக்கும்போது, அது தொடர்ந்து படங்களை கைப்பற்ற வேண்டியிருந்தது, இது ஒரு நேரடி வீடியோவின் உணர்வைக் கொடுக்க வேண்டும், அங்கு வீடியோவின் பிரேம் வீதம் உங்கள் வெப்கேமின் பிரேம் வீதமாக இருக்கும், இது பெரும்பாலும் 24 முதல் 60 வரை இருக்கும் fps.
cap.read () ret மற்றும் frame ஐ வழங்குகிறது, அங்கு ret என்பது பூலியன் என்பது செயல்பாடு வெற்றிகரமாக இயங்கினதா இல்லையா என்பதைக் குறிக்கிறது மற்றும் சட்டகமானது வெப்கேம் எடுத்த படத்தைக் கொண்டுள்ளது.
லைவ் ஸ்கெட்சை இயக்குவதற்கான முழுமையான பைதான் ஓபன்சிவி குறியீடு கீழே உள்ளது
சி.வி 2 இறக்குமதி எண்ணை np # ஸ்கெட்ச் உருவாக்கும் செயல்பாடு டெஃப் ஸ்கெட்ச் (படம்): # படத்தை கிரேஸ்கேலுக்கு மாற்றவும் img_gray = cv2.cvtColor (படம், cv2.COLOR_BGR2GRAY) # காஸியன் மங்கலான img_gray_blur = cv2.Gaussian 5,5), 0) #extract விளிம்புகள் canny_edges = cv2.Canny (img_gray_blur, 10,70) ஒரு தலைகீழ் binarize படத்தை #do RET, முகமூடி = cv2.threshold (canny_edges, 70.255, cv2.THRESH_BINARY_INV) திரும்ப முகமூடி #initialize வெப்கேம், தொப்பி என்பது வீடியோ பிடிப்பு வழங்கிய பொருள் # இது வெற்றிகரமாக இருந்ததா என்பதைக் குறிக்கும் பூலியன் கொண்டுள்ளது (ret) #it மேலும் வெப்கேம் (பிரேம்) இருந்து சேகரிக்கப்படும் படங்களை கொண்டுள்ளது தொப்பி = cv2.VideoCapture (0) உண்மை போது: RET, பிரேம் = cap.read () cv2.imshow ('livesketcher', ஸ்கெட்ச் (பிரேம்)) cv2.waitKey என்றால் (1) == 13: # 13 என்பது என்டர்கி பிரேக் # வெளியீட்டு கேமரா மற்றும் நெருங்கிய சாளரம், cap.release () cap.release () cv2.destroyAllWindows () உதவியுடன் வெப்கேமை வெளியிட நினைவில் கொள்க.

எனவே இது பைதான்-ஓபன்சிவியில் பட கையாளுதலின் பகுதி 2 இன் முடிவாகும். கணினி பார்வை மற்றும் ஓபன்சிவி பற்றிய நல்ல புரிந்துணர்வைப் பெற, முந்தைய கட்டுரைகள் (பைத்தான் ஓபன்சிவி (பகுதி 1) இல் பைதான் ஓபன்சிவி மற்றும் பட கையாளுதல்களுடன் தொடங்கவும், மேலும் நீங்கள் கணினி பார்வை மூலம் குளிர்ச்சியாக ஏதாவது செய்ய முடியும்.
