- 1. பட மாற்றங்கள் - அஃபைன் மற்றும் அல்லாத மாற்றம்
- 2. பட மொழிபெயர்ப்புகள் - படத்தை மேலே, கீழ், இடது மற்றும் வலது பக்கம் நகர்த்தும்
- 3. படத்தின் சுழற்சி - படத்தை சுழற்றுதல்
- 4. அளவிடுதல், மறுஅளவிடுதல் மற்றும் இடைக்கணிப்பு
- 5. பட பிரமிடுகள் - மறுஅளவிடுவதற்கான மற்றொரு வழி
- 6. பயிர் செய்தல் - நீங்கள் விரும்பும் படப் பகுதியை வெட்டுதல்
- 7. படங்களை பிரகாசமாக்குவதற்கும் இருட்டடிப்பதற்கும் எண்கணித செயல்பாடுகள்
முந்தைய பயிற்சி, நாம் OpenCV பற்றி கற்று மற்றும் சாம்பல் அளவிடுதல், நிறச்செறிவைக், வரைபடம், நிறம் இடைவெளிகள், ஆர்ஜிபி கூறு முதலியன என முந்தைய பயிற்சியில் கூறினார் போன்ற அது பயன்படுத்தி செயலாக்க சில அடிப்படை படத்தை செய்தேன், OpenCV திறந்த மூல கம்யூட்டர் விஷன் நூலகம் உள்ளது இது உள்ளது சி ++, பைதான் மற்றும் ஜாவா இடைமுகங்கள் மற்றும் விண்டோஸ், லினக்ஸ், மேக் ஓஎஸ், iOS மற்றும் ஆண்ட்ராய்டை ஆதரிக்கிறது. எனவே பைதான் மற்றும் லினக்ஸ் சூழலுடன் ராஸ்பெர்ரி பையில் இதை எளிதாக நிறுவ முடியும். முகம் கண்டறிதல், முகம் பூட்டு, பொருள் கண்காணிப்பு, கார் எண் தட்டு கண்டறிதல், வீட்டு பாதுகாப்பு அமைப்பு போன்ற பல நிகழ்நேர பட செயலாக்க பயன்பாடுகளை உருவாக்க ஓபன்சிவி மற்றும் இணைக்கப்பட்ட கேமரா கொண்ட ராஸ்பெர்ரி பை பயன்படுத்தப்படலாம்.
இந்த டுடோரியலில், ஓபன்சிவியைப் பயன்படுத்தி படத்தை எவ்வாறு கையாளப் போகிறோம் என்பதைப் பார்க்கப் போகிறோம். OpenCV ஐப் பயன்படுத்தி ஒரு படத்தில் பின்வரும் செயல்பாட்டைப் பயன்படுத்த இங்கே கற்றுக்கொள்வோம்:
- பட மாற்றங்கள் - அஃபைன் மற்றும் அஃபைன் அல்லாத மாற்றம்
- பட மொழிபெயர்ப்புகள் - படத்தை மேலே, கீழ், இடது மற்றும் வலது பக்கம் நகர்த்தும்
- படத்தின் சுழற்சி - படத்தை சுழற்றுதல்
- அளவிடுதல், மறுஅளவிடுதல் மற்றும் இடைக்கணிப்பு
- பட பிரமிடுகள் - மறுஅளவிடுவதற்கான மற்றொரு வழி
- பயிர் செய்தல் - நீங்கள் விரும்பும் படப் பகுதியை வெட்டுதல்
- படங்களை பிரகாசமாக்குவதற்கும் இருட்டடிப்பதற்கும் எண்கணித செயல்பாடுகள்
1. பட மாற்றங்கள் - அஃபைன் மற்றும் அல்லாத மாற்றம்
உருமாற்றங்கள் என்பது ஒரு படத்தின் மீது இயற்றப்பட்ட வடிவியல் சிதைவுகள், இங்கே சிதைவுகள் நிச்சயமாக தவறுகளை குறிக்காது, ஆனால் படம் கைப்பற்றப்பட்ட இடத்திலிருந்து எழும் முன்னோக்கு சிக்கல்களை சரிசெய்ய ஒரு திருத்த வகை. பட உருமாற்றங்களில் இரண்டு வகைகள் உள்ளன - அஃபைன் மற்றும் அல்லாதவை
அஃபைன் உருமாற்றங்கள் மூன்று வகையான அளவிடுதல், சுழற்சி மற்றும் மொழிபெயர்ப்பு ஆகும், அஃபைன் உருமாற்றங்களில் முக்கியமான விஷயம் என்னவென்றால், பட மாற்றங்களுக்கு முன்னும் பின்னும் கோடுகள் இணையாக உள்ளன.



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

2. பட மொழிபெயர்ப்புகள் - படத்தை மேலே, கீழ், இடது மற்றும் வலது பக்கம் நகர்த்தும்
பட மொழிபெயர்ப்பு ஒரே நேரத்தில் x மற்றும் y மொழிபெயர்ப்பைச் செயல்படுத்தினால் படத்தை மேல், கீழ், இடது மற்றும் வலது மற்றும் மூலைவிட்டமாக நகர்த்தும்.
இப்போது பட மொழிபெயர்ப்புகளைச் செய்வதற்கு நாம் ஓபன்சிவியின் வார்ப்அஃபைன் செயல்பாட்டைப் பயன்படுத்துகிறோம், இந்த மொழிபெயர்ப்புகளைச் செயல்படுத்த cv2.warpAffine பயன்படுத்தப்படுகிறது, ஆனால் அதற்கு எங்களுக்கு ஒரு மொழிபெயர்ப்பு அணி தேவை.
மொழிபெயர்ப்பு அணி, T = 1 0 Tx
0 1 டை
T X, T y என்பது பட மாற்றங்கள் நடைபெறும் திசைகள்.
இதில் T X என்பது X- அச்சுடன் (கிடைமட்ட) மாற்றப்படுகிறது
T Y என்பது Y- அச்சுடன் (செங்குத்து) மாற்றப்படுகிறது
# இது ஒரு உருவத்தின் நிலையை மாற்றும் ஒரு அஃபைன் உருமாற்றம் # இந்த மாற்றங்களைச் செயல்படுத்த cv2.warpAffine ஐப் பயன்படுத்துகிறோம். cv2 இறக்குமதி எண்ணை np image = cv2.imread ('input.jpg') # பட உயரத்தின் உயரத்தையும் அகலத்தையும் சேமிக்கவும், அகலம் = image.shape print (image.shape) quater_height, quater_width = height / 4, width / 4 T = np.float32 (,]) img_translation = cv2.warpAffine (படம், T, (அகலம், உயரம்)) அச்சு (T) cv2.imshow ('original_image', image) cv2.nightKey (0) cv2.imshow (' மொழிபெயர்ப்பு ', img_translation) cv2.waitKey (0) cv2.destroyAllWindows ()

கன்சோல் வெளியீடு - (183, 275) - உயரம் மற்றும் அகலம்
- டி மேட்ரிக்ஸ்
]
3. படத்தின் சுழற்சி - படத்தை சுழற்றுதல்
சுழலும் புள்ளி ஒரு மையமாக செயல்படுவதைப் போலவே, படத்தின் சுழற்சி என்பது ஒரு புள்ளியை அல்லது படத்தின் மையத்தில் உள்ள புள்ளியைப் பற்றி ஒரு படத்தை சுழற்றுகிறது.
மொழிபெயர்ப்பைப் போலவே நம்மிடம் டி மேட்ரிக்ஸ் உள்ளது, சுழற்சியில் எம் மேட்ரிக்ஸ் இருக்கலாம்
சுழற்சி அணி, எம் அணி = Cosθ -Sinθ
சினே கோஸ்
Θ என்பது சுழற்சியின் கோணம், இது கடிகார எதிர்ப்பு திசையில் அளவிடப்படுகிறது.
Cv2.getRotationMatrix2D (rotation_center_x, rotation_center_y, சுழற்சியின் கோணம், அளவுகோல்) ஐப் பயன்படுத்தி ஒரே நேரத்தில் படத்தை விற்கவும் சுழற்றவும் OpenCV உங்களை அனுமதிக்கிறது என்பதையும் கவனத்தில் கொள்ள வேண்டும்.
படத்தின் சுழற்சியைப் பெறுவதற்கு நாங்கள் இன்னும் ஓபன்சிவியின் வார்ப்அஃபைன் செயல்பாட்டைப் பயன்படுத்துகிறோம், ஆனால் முந்தைய நிகழ்வைப் போலவே மொழிபெயர்ப்பு மேட்ரிக்ஸுக்குப் பதிலாக இங்கே சுழற்சி மேட்ரிக்ஸைப் பயன்படுத்துகிறோம்.
சி.வி 2 இறக்குமதி எண்ணை np image = cv2.imread ('input.jpg') உயரம், அகலம் = image.shape # அதன் மையத்தைப் பற்றி படத்தை சுழற்ற உயரத்தையும் அகலத்தையும் 2 ஆல் பிரிக்கவும்., உயரம் / 2), 90,1) rotated_image = cv2.warpAffine (படம், rotation_matrix, (அகலம், உயரம்)) cv2.imshow ('அசல் படத்தை', படத்தை) cv2.waitKey (0) cv2.imshow ('சுழலும் படத்தை ', சுழற்றப்பட்ட_மேஜ்) cv2.waitKey (0) cv2.destroyAllWindows ()

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

4. அளவிடுதல், மறுஅளவிடுதல் மற்றும் இடைக்கணிப்பு
அளவிடுதல் மற்றும் மறுஅளவிடுதல் என்பது அஃபைன் உருமாற்றங்கள், படத்தை மறுஅளவிடுவது என்பது நாங்கள் சிறிது நேரம் செய்துள்ளோம், மேலும் நாங்கள் இடைக்கணிப்பையும் கையாண்டுள்ளோம், நீங்கள் படத்தை பெரிய அளவிற்கு மறுஅளவிடும்போது, நாங்கள் பிக்சல்களை விரிவுபடுத்துகிறோம், சில இடைவெளிகள் உள்ளன பிக்சல்கள் மற்றும் இடைக்கணிப்பு வருகிறது.
படத்தின் அளவை சிறியதாக இருந்து பெரியதாக அதிகரிப்பதில் அல்லது படத்தின் அளவை பெரியதாக சிறியதாக குறைப்பதன் மூலம் இது நிகழலாம்.
தொழில்நுட்ப ரீதியாக, இடைக்கணிப்பு என்பது அறியப்பட்ட தரவு புள்ளிகளின் தனித்துவமான தொகுப்பிற்குள் புதிய தரவு புள்ளிகளை (பிக்சல்கள்) உருவாக்குவதற்கான ஒரு முறையாகும்.
உள்ளன இடைச்செருகல் முறைகள் பல்வேறு வகையான OpenCV போன்ற
cv2.INTER_AREA - மாதிரியைக் குறைக்க அல்லது குறைக்க நல்லது
cv2.INTER_NEAREST - வேகமானது
cv2.LINEAR - பெரிதாக்க அல்லது மாதிரிக்கு நல்லது (இயல்புநிலை)
cv2.CUBIC - சிறந்தது
cv2.INTER_LANCZOS4 - சிறந்தது
# மறுஅளவிடுதல் cv2.resize செயல்பாட்டைப் பயன்படுத்தி மிகவும் எளிதானது, அதன் வாதங்கள் # cv2.resize (படம், dsize (வெளியீட்டு பட அளவு), x_scale, y_scale, interpolation) இறக்குமதி cv2 import numpy என np image = cv2.imread ('உள்ளீடு. jpg ') cv2.imshow (' Original_image ', image) cv2.nightKey (0) # படத்தை 3/4 அசல் பட அளவை உருவாக்குவோம், அதாவது 75% image_scaled = cv2.resize (படம், எதுவுமில்லை, fx = 0.75, fy = 0.75) # திறந்த சி.வி.க்கு நேரியல் இடைக்கணிப்பு இயல்புநிலை முறையாக இருப்பதால், அதை ஒரு செயல்பாடாக செயல்படுத்த தேவையில்லை. cv2.imshow ('scaling_linear இடைச்செருகல்', image_scaled) cv2.waitKey (0) எங்கள் படத்தை # உதவுகிறது இரட்டை அளவு img_double = cv2.resize (பட, ஏதுமில்லை, எக்ஸ் = 2, நிதியாண்டு = 2, இண்டர்பொலேஷன் = cv2.INTER_CUBIC) cv2.imshow ('scaing_cubicInterpolation', img_double) cv2.waitKey (0) # துல்லியமான பரிமாணங்களில் மறு செய்வோம் image_resize cv2.resize = (படம், (200,300, இண்டர்பொலேஷன் = cv2.INTER_AREA)) cv2.imshow ('scaling_exact', image_resize) cv2.waitKey (0) cv2.destroyAllWindows ()



5. பட பிரமிடுகள் - மறுஅளவிடுவதற்கான மற்றொரு வழி
பிரமிடிங் படம் என்பது மேல்நிலை (படங்களை பெரிதாக்குதல்) அல்லது கீழ்நிலை (சுருங்கும் படங்கள்) ஆகியவற்றைக் குறிக்கிறது.
இது வெறுமனே மறுஅளவாக்குதலுக்கான வேறுபட்ட வழியாகும், இது படங்களை எளிதாகவும் விரைவாகவும் அளவிட அனுமதிக்கிறது, புதிய படத்தின் உயரத்தையும் அகலத்தையும் பாதியாகக் குறைக்கிறது.
ஒவ்வொரு முறையும் ஒரு பொருளைத் தேடும் போது படங்களை அளவிடும் பொருள் கண்டுபிடிப்பாளர்களை உருவாக்கும் போது இது பயனுள்ளதாக இருக்கும்.
இறக்குமதி cv2 image = cv2.imread ('input.jpg') சிறிய = cv2.pyrDown (படம்) பெரிய = cv2.pyrUp (சிறியது) cv2.imshow ('அசல்', படம்) cv2.waitKey (0) cv2.imshow ('சிறியது', சிறியது) cv2.waitKey (0) cv2.imshow ('பெரிய', பெரியது) cv2.waitKey (0) cv2.destroyAllWindows ()


பெரிய படத்தில், அசல் படத்தின் அதே அளவு இன்னும் சிறிய மங்கலாக இருப்பதை நீங்கள் கவனிப்பீர்கள், ஏனெனில் இது சிறிய படத்திலிருந்து பெரிய படத்திற்கு நேரடியாக மாற்றப்படுகிறது. ஆனால் நாம் அதை இடைக்கணித்தால் படத்தின் தரம் முந்தையதைப் போலவே மேம்படும், ஏனெனில் படம் பெரிதாகும்போது இடைவெளிகளை நிரப்பும்போது இடைக்கணிப்பு பிக்சல்களை மதிப்பிடுகிறது.
இப்போது அதே குறியீட்டை இயக்குகிறது, ஆனால் கன இடைக்கணிப்புடன் பெரிய படத்தின் சிறந்த தரத்தை அளிக்கிறது. படங்களுக்கிடையேயான ஒப்பீடு, அசல் படத்தின் ஒப்பீடு, படத்தின் அளவிடப்பட்ட பதிப்பு, சிறிய படம் மற்றும் சிறிய படத்தின் கன இடைக்கணிப்பு பதிப்பு ஆகியவற்றைக் காட்டுகிறது.
இறக்குமதி cv2 image = cv2.imread ('input.jpg') சிறிய = cv2.pyrDown (படம்) பெரிய = cv2.pyrUp (சிறியது) cv2.imshow ('அசல்', படம்) cv2.nightKey (0) cv2.imshow ('சிறியது', சிறியது) cv2.waitKey (0) cv2.imshow ('பெரிய', பெரியது) cv2.waitKey (0) # க்யூபிக் இடைக்கணிப்பைப் பயன்படுத்தி சிறிய படத்திலிருந்து மாற்றப்பட்ட பெரிய படத்தின் தரத்தை அதிகரிக்கும் img_double = cv2.resize (சிறியது, எதுவுமில்லை, fx = 2, fy = 2, interpolation = cv2.INTER_CUBIC) cv2.imshow ('scaing_cubicInterpolation', img_double) cv2.waitKey (0) cv2.destroyAllWindows ()


குறிப்பு: நீங்கள் படங்களை பல சிறிய பிரதிகள் தொடர்ந்து அளவு வளர்ந்து அளவு அல்லது படங்களை பல பெரிய நகல்கள் சிறிய மற்றும் சிறிய போகிறது, நாம் பயன்படுத்த முடியும் உருவாக்க விரும்பினால் க்கான சுழல்கள் அல்லது போது சுழல்கள் உள்ளே வைத்து pyrDown அல்லது pyrUp செயல்பாடு.
6. பயிர் செய்தல் - நீங்கள் விரும்பும் படப் பகுதியை வெட்டுதல்
படங்களை வெட்டுவது என்பது படத்தின் ஒரு பகுதியை பிரித்தெடுப்பதைக் குறிக்கிறது.
OpenCV நேரடியாக செயல்பாடு பயிரிடும் இல்லை ஆனால் அது எளிதாக செய்யப்படுகிறது numpy உபயோகிக்கும் குறியீடுகளில் கீழே
வெட்டப்பட்டது = படம்

பட வரிசையை வைத்து, குறியீட்டு கருவிகள் அல்லது முறையை நம்பியில் பயன்படுத்துகிறோம், தொடக்க வரிசையை இறுதி வரிசையில் வரையறுக்கிறோம் மற்றும் படத்தை பெற நாம் பயிர் செய்ய விரும்பும் செவ்வகத்தை பிரித்தெடுக்கும் கமாவால் பிரிக்கப்பட்ட நெடுவரிசைக்கு இறுதி நெடுவரிசையை தொடங்குவோம்.
சி.வி 2 இறக்குமதி எண்ணை np image = cv2.imread ('input.jpg') உயரம், அகலம் = image.shape # தொடக்க பிக்சல் ஆயங்களை (பயிர் செவ்வகத்தின் மேல் இடது) தொடக்க_ரோ, தொடக்க_கோல் = எண்ணாக (உயரம் *.25) பெறுவோம்., int (அகலம் *.25) # முடிவடையும் பிக்சல் ஆயங்களை (கீழ் வலது) end_row, end_col = int (உயரம் *.75), int (அகலம் *.75) # நாம் பயிர் செய்ய விரும்பும் செவ்வகத்தை பயிர் செய்ய குறியீட்டைப் பயன்படுத்துங்கள் = படம் cv2.imshow ("அசல் படம்", படம்) cv2.waitKey (0) cv2.imshow ("செதுக்கப்பட்ட படம்", செதுக்கப்பட்ட ) cv2.waitKey (0) cv2.destroyAllWindows ()

Start_col அல்லது start_row க்கு பதிலாக நீங்கள் நேரடியாக பிக்சல் மதிப்புகளைப் பயன்படுத்தலாம் என்பதை நினைவில் கொள்க , அவை பயனருக்கு எளிதாக அடையாளம் காண மட்டுமே வழங்கப்படுகின்றன.
7. படங்களை பிரகாசமாக்குவதற்கும் இருட்டடிப்பதற்கும் எண்கணித செயல்பாடுகள்
ஓபன்சிவியில் உள்ள எண்கணித செயல்பாடுகள் அடிப்படையில் படத்திற்கு மேட்ரிக்ஸைச் சேர்ப்பது அல்லது கழிப்பது, மேட்ரிக்ஸைச் சேர்ப்பது அல்லது கழிப்பது பிரகாசத்தை அதிகரிப்பதில் அல்லது குறைப்பதில் தாக்கத்தை ஏற்படுத்துகிறது.
எனவே மேட்ரிக்ஸைச் சேர்க்க அல்லது கழிக்க நாம் அவற்றை உருவாக்க வேண்டும் மற்றும் நம்பிக்கு np.ones எனப்படும் ஒரு செயல்பாடு உள்ளது, இது எங்கள் படத்தின் 1 அளவின் மேட்ரிக்ஸை வழங்குகிறது.
cv2 இறக்குமதி எண்ணை np image = cv2.imread ('input.jpg') # ஒருவரின் மேட்ரிக்ஸை உருவாக்கி, அதை 100 இன் அளவிடுபவரால் பெருக்கவும். இந்த வழக்கில் மதிப்புகள் 100 ஆக இருப்பதால் M = np.ones (image.shape, dtype = "uint8") * 100 # இந்த மேட்ரிக்ஸ் M ஐ எங்கள் படத்தில் சேர்க்க இதைப் பயன்படுத்துகிறோம் # பிரகாசம் அதிகரிப்பதைக் கவனியுங்கள் = cv2.add (படம், எம்) cv2.imshow ("சேர்க்கப்பட்டது", சேர்க்கப்பட்டது) cv2.waitKey (0) நாங்கள் முடியும் substract #likewise #notice பிரகாசம் குறைவு கழிக்கப்படுகிறது = cv2.subtract (படம், எம்) கழிக்கப்படுகிறது ("கழிக்கப்படவில்லை" cv2.imshow,) cv2.waitKey (0) cv2.destroyAllWindows ()
படத்தில் பல்வேறு பட செயலாக்க செயல்பாடுகளைப் பயன்படுத்த OpenCV ஐ எவ்வாறு பயன்படுத்தலாம். அடுத்த டுடோரியலில் பிற பட கையாளுதல் செயல்பாடுகளுடன் தொடருவோம்.
