- பஸ்டர் மற்றும் ஓபன்சிவியுடன் ராஸ்பெர்ரி பை அமைத்தல்
- ராஸ்பெர்ரி பை 5 இன்ச் டிஸ்ப்ளேயில் பஸரைச் சேர்த்தல்
- சி.சி.டி.வி மோஷன் கண்டறிதலுக்கான நிரலாக்க ராஸ்பெர்ரி பை
- ராஸ்பெர்ரி பை பயன்படுத்தி ஓபன்சிவியில் மோஷன் கண்டறிதல்
- மோஷன் கண்டறிதலுக்கு அலாரம் அமைத்தல்
- CPU வெப்பநிலை மற்றும் பயன்பாட்டை கண்காணித்தல்
- உங்கள் பை சிசிடிவி மோஷன் டிடெக்டரைத் தொடங்குகிறது
ஓபன்சிவி ஒரு சக்திவாய்ந்த கருவி மற்றும் ராஸ்பெர்ரி பை உடன் இணைந்து பல சிறிய ஸ்மார்ட் சாதனங்களுக்கான கதவுகளைத் திறக்க முடியும். எங்கள் முந்தைய ராஸ்பெர்ரி பை சிசிடிவி கண்காணிப்புக் கட்டுரையில், ஆர்.டி.எஸ்.பியைப் பயன்படுத்தி டி.வி.ஆரிடமிருந்து நேரடி சி.சி.டி.வி வீடியோவைப் பெறுவது மற்றும் ராஸ்பெர்ரி பையில் காண்பிப்பது எப்படி என்பதைக் கற்றுக்கொண்டோம், தொடர்வதற்கு முன் அதைச் சரிபார்க்கவும். இந்த கட்டுரையில், ஓபன்சிவியின் சக்தியை எவ்வாறு பயன்படுத்துவது மற்றும் எங்கள் நேரடி சிசிடிவி காட்சிகளில் ராஸ்பெர்ரி பை மோஷன் கண்டறிதல் முறையை எவ்வாறு உருவாக்குவது என்பதைக் கற்றுக்கொள்வோம். உங்களிடம் சி.சி.டி.வி நிறுவப்படவில்லை எனில், யூ.எஸ்.பி கேமராக்களை நேரடியாக உங்கள் பைக்கு இணைப்பதன் மூலம் ராஸ்பெர்ரி பை கண்காணிப்பு அமைப்பை உருவாக்கலாம். நீங்கள் பை மற்றும் பைத்தானின் பெரிய விசிறி இல்லை என்றால், நீங்கள் ESP32 உடன் ஒத்த ஒன்றை உருவாக்கலாம், மேலும் விவரங்களுக்கு ESP32 Wi-Fi டோர் பெல்லைப் பார்க்கவும்.
எந்தவொரு செயல்களுக்கும் (இயக்கம்) ஒரே நேரத்தில் நான்கு சி.சி.டி.வி கேமராக்களையும் கண்காணிக்கக்கூடிய பைதான் ஸ்கிரிப்டை எழுதுவோம். எந்தவொரு கேமராவிலும் ஒரு செயல்பாடு கண்டறியப்பட்டால், எங்கள் ராஸ்பெர்ரி பை தானாகவே அந்த குறிப்பிட்ட கேமரா திரைக்கு மாறும் மற்றும் எந்த செயல்பாடு நடந்தது என்பதை முன்னிலைப்படுத்தும், இவை அனைத்தும் நிகழ்நேரத்தில் வெறும் 1.5 விநாடிகள் தாமதமாகும். ஒரு செயல்பாடு கண்டறியப்பட்டால் பீப்பிங் செய்வதன் மூலம் பயனரை எச்சரிக்கக்கூடிய ஒரு பஸர் போன்ற அலாரம் அம்சத்தையும் சேர்த்துள்ளேன். ஆனால் ஒரு செய்தியை அல்லது மின்னஞ்சலை அனுப்புவதற்கு இதை எளிதாக அளவிடலாம் அல்லது என்ன செய்யக்கூடாது! பரபரப்பானது சரி !! தொடங்குவோம்
பஸ்டர் மற்றும் ஓபன்சிவியுடன் ராஸ்பெர்ரி பை அமைத்தல்
பஸ்டர் ஓஎஸ் இயங்கும் ராஸ்பெர்ரி பை 3 பி + ஐப் பயன்படுத்துகிறேன், ஓபன்சிவியின் பதிப்பு 4.1 ஆகும். நீங்கள் முற்றிலும் புதியவர் என்றால், நீங்கள் தொடங்குவதற்கு முன் கீழே உள்ள பயிற்சிகளைப் பின்பற்றவும்.
உங்கள் பை மற்றும் வளர்ச்சிக்கு தயாராக இருப்பது குறிக்கோள். உங்கள் பையில் ராஸ்பியன் ஓஎஸ்ஸின் எந்த பதிப்பையும் வைத்திருப்பது பரவாயில்லை, ஆனால் ஓபன்சிவியின் பதிப்பு 4.1 அல்லது அதற்கு மேற்பட்டது என்பதை உறுதிப்படுத்தவும். உங்கள் ஓபன்சிவி தொகுக்க மேலே உள்ள டுடோரியலைப் பின்பற்றலாம், இது மணிநேரம் எடுக்கும், ஆனால் கனமான திட்டங்களுக்கு மிகவும் நம்பகமானது அல்லது பின்வரும் கட்டளைகளைப் பயன்படுத்தி அதை நேரடியாக பைப்பிலிருந்து நிறுவலாம்.
$ குழாய் நிறுவல் opencv-பங்களிப்பு-பைதான் == 4.1.0.25
நீங்கள் முதன்முறையாக ஓபன்சிவியை குழாய் மூலம் நிறுவுகிறீர்கள் என்றால், மற்ற சார்புகளையும் நிறுவ வேண்டும். அதற்கு கீழே உள்ள கட்டளைகளைப் பயன்படுத்தவும்.
ud sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev $ sudo apt-get install libatlas-base-dev gfortran $ sudo apt-get install libhdf5- dev libhdf5-serial-dev libhdf5-103 $ sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
நாங்கள் ஏற்கனவே பல ராஸ்பெர்ரி பை ஓபன்சிவி திட்டங்களை உருவாக்கியுள்ளோம், மேலும் உத்வேகங்களுக்காக நீங்கள் அதைப் பார்க்கலாம்.
ராஸ்பெர்ரி பை 5 இன்ச் டிஸ்ப்ளேயில் பஸரைச் சேர்த்தல்
வன்பொருள் பக்கத்தில், 5-இன்ச் டிஸ்ப்ளே மற்றும் ஒரு பஸரைத் தவிர வேறு எதுவும் எங்களிடம் இல்லை. ராஸ்பெர்ரி பை உடன் 5-இன்ச் டிஸ்ப்ளேவை இடைமுகப்படுத்திய பிறகு, பஸ்பரை நேரடியாக டிஸ்ப்ளேவின் பின்புறத்தில் ஏற்றலாம், இது எங்களுக்கு சில ஜிபிஐஓ ஊசிகளை நீட்டித்துள்ளது. கீழே காட்டப்பட்டுள்ளபடி எனது பஸரை இணைத்துள்ளேன்-

அதிகமான I / O ஊசிகளைப் பயன்படுத்த நீங்கள் ஆர்வமாக இருந்தால், கீழேயுள்ள முள் விளக்கம் பயனுள்ளதாக இருக்கும். நீட்டிக்கப்பட்ட ஊசிகளிடையே நீங்கள் காணக்கூடியது போல, பெரும்பாலான ஊசிகளை ஒரு தொடுதிரை இடைமுகத்திற்கு காட்சி தானே பயன்படுத்துகிறது. ஆனால் இன்னும், எங்களிடம் 3,5,7,8,10,11,12,13,15,16, மற்றும் 24 ஆகியவை எந்த தொடர்பும் இல்லை, அதை எங்கள் சொந்த பயன்பாட்டிற்கு பயன்படுத்தலாம். இந்த டுடோரியலில், நான் ஒரு பஸரை GPIO 3 உடன் இணைத்துள்ளேன்.

சி.சி.டி.வி மோஷன் கண்டறிதலுக்கான நிரலாக்க ராஸ்பெர்ரி பை
இந்த திட்டத்திற்கான முழுமையான பைதான் ஸ்கிரிப்டை இந்த பக்கத்தின் கீழே காணலாம், ஆனால் குறியீட்டின் ஒவ்வொரு பகுதியையும் இது எவ்வாறு செயல்படுகிறது என்பதைப் பற்றி விவாதிப்போம்.
RTSP ஐப் பயன்படுத்தி ராஸ்பெர்ரி பையில் லேக் இல்லாமல் பல கேமராக்களைக் கண்காணித்தல்
ஸ்ட்ரீமிங்கில் ஒரு பின்னடைவைத் தவிர்ப்பதற்காக ராஸ்பெர்ரி பை மீதான சுமையை குறைப்பதே இந்த வேலையைச் செய்வதில் சவாலான பகுதியாகும். ஆரம்பத்தில், நான்கு கேமராக்களுக்கும் இடையில் இயக்கத்தைத் தேட முயற்சித்தேன், ஆனால் அது மிகவும் தாமதமாக இருந்தது (சுமார் 10 வினாடிகள்). எனவே நான்கு கேமராக்களையும் ஒரே படத்துடன் இணைத்து, அந்த படத்தில் அனைத்து இயக்கத்தையும் கண்டறியும் செயல்களைச் செய்தேன். நான் இரண்டு செயல்பாடுகளை எழுதினேன், அதாவது, ஒரு கேமராவை உருவாக்கி, கேமராவைப் படிக்கவும்.
கேமரா உருவாக்க செயல்பாடு அதன் அந்தந்த சேனல் எண் கேம் திறக்க பயன்படுத்தப்படுகிறது. RTSP URL “02” உடன் முடிவடைகிறது என்பதை நினைவில் கொள்க, அதாவது நான் துணை ஸ்ட்ரீம் வீடியோ ஊட்டத்தைப் பயன்படுத்துகிறேன், இது தெளிவுத்திறன் குறைவாக இருக்கும், எனவே படிக்க விரைவாக இருக்கும். மேலும், நீங்கள் பயன்படுத்தும் வீடியோ கோடெக் வகையும் வேகத்திற்கு பங்களிக்கிறது, நான் வெவ்வேறு குறியீடுகளை பரிசோதித்தேன் மற்றும் FFMPEG அனைவரையும் நோன்பு நோற்பதாகக் கண்டேன்.
def create_camera (channel): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@" + rtsp_IP + ": 554 / ஸ்ட்ரீமிங் / சேனல்கள் /" + சேனல் + "02" # ஐபிக்கு ஏற்றவாறு மாற்றவும் yours cap = cv2.VideoCapture (rtsp, cv2.CAP_FFMPEG) cap.set (3, cam_width) # அகலத்திற்கான ஐடி எண் 3 cap.set (4, cam_height) # உயரத்திற்கான ஐடி எண் 480 cap.set (10, 100) பிரகாசத்திற்கான # ஐடி எண் 10 திரும்ப தொப்பி
இல் வாசிப்பு கேமரா செயல்பாடு, நாம் எனப்படும் ஒற்றை படத்தை அவற்றை அனைத்து இணைக்க அதாவது cam1, cam2, cam3, மற்றும் நீங்கள் cam4 நான்கு கேமராக்கள் படிக்கும் Main_screen . இந்த பிரதான திரை தயாரானதும், இந்த படத்தில் எங்கள் எல்லா ஓபன்சிவி வேலைகளையும் செய்வோம்.
def read_camera (): வெற்றி, current_screen = cam1.read () Main_screen = current_screen success, current_screen = cam2.read () Main_screen = current_screen success, current_screen = cam3.read () Main_screen = current_screen success, current_screen = cam4.read () முதன்மை_ திரை = நடப்பு_ திரை வருவாய் (முதன்மை_ திரை)
நான்கு கேம்களையும் கொண்ட பிரதான திரை படம் கீழே காட்டப்பட்டுள்ள படத்தைப் போல இருக்கும்.

ராஸ்பெர்ரி பை பயன்படுத்தி ஓபன்சிவியில் மோஷன் கண்டறிதல்
இப்போது படம் தயாராக இருப்பதால், எங்கள் இயக்கத்தைக் கண்டறிவதன் மூலம் தொடங்கலாம். உள்ளே போது லூப் , நாம் அதாவது இரண்டு வெவ்வேறு பிரேம்கள் படித்து, frame1 மற்றும் frame2 ஆரம்பிப்பார்கள், பின்னர் கரும்சாயல்கள் அவற்றை நூற்றுக்கணக்கில் மாற்ற
frame1 = read_camera () # முதல் சட்டகத்தை மீண்டும் படிக்கவும் சாம்பல்இமேஜ்_எஃப் 1 = cv2.cvtColor (frame1, cv2.COLOR_BGR2GRAY) # சாம்பல் பிரேம் 2 க்கு மாற்றவும்
என்ன மாறிவிட்டது என்பதைக் காண இந்த இரண்டு படங்களுக்கும் இடையில் ஒரு வித்தியாசத்தை எடுத்துக்கொள்கிறோம், ஒரு நுழைவாயிலுடன், ஒரு மாற்றத்தைக் கொண்ட எல்லா இடங்களையும், ஒரு குமிழ் போன்றது. கூர்மையான விளிம்புகளைத் தவிர்ப்பதற்காக படத்தை மங்கலாக்குவதும், நீர்த்துப்போகச் செய்வதும் பொதுவானது.
diffImage = cv2.absdiff (சாம்பல்இமேஜ்_எஃப் 1, சாம்பல்இமேஜ்_எஃப் 2)) dilatedImage = cv2.dilate (வாசல்இமேஜ், கர்னல், மறு செய்கைகள் = 5)
அடுத்த கட்டம் கவுண்டர்களைக் கண்டுபிடித்து ஒவ்வொரு கவுண்டரின் பகுதியையும் சரிபார்க்க வேண்டும், பகுதியைக் கண்டுபிடிப்பதன் மூலம், எவ்வளவு பெரிய இயக்கம் என்பதைக் கண்டுபிடிக்கலாம். இயக்கம்_ கண்டறியப்பட்ட மாறி ஒரு குறிப்பிட்ட மதிப்பை விட பகுதி பெரியதாக இருந்தால், அதை ஒரு செயல்பாடாகக் கருதி, பயனருக்கு முன்னிலைப்படுத்த மாற்றத்தைச் சுற்றி ஒரு பெட்டியை வரையலாம்.
வரையறைகளை, _ = cv2.findContours (dilatedImage, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) #find contour என்பது வரையறைகளில் உள்ள ஒரு மாய செயல்பாடு: # கண்டறியப்பட்ட ஒவ்வொரு மாற்றத்திற்கும் (x, y, w, h) = cv2.boundingRect (விளிம்பு) # cv2.contourArea (contour)> motion_threshold: cv2.rectangle (frame1, (x, y), (x + w, y + h), (255, 255, 0), 1) display_screen = find_screen ()
நான்கு கேமராக்களில் செயல்பாடு எங்கே நடந்தது என்பதைக் கண்டறிய find_screen () செயல்பாடு பயன்படுத்தப்படுகிறது. இயக்கத்தின் x மற்றும் y மதிப்புகளை நாம் அறிந்திருப்பதால் அதைக் காணலாம். எந்த திரை செயல்பாட்டைக் கொடுத்தது என்பதைக் கண்டறிய இந்த x மற்றும் y மதிப்புகளை ஒவ்வொரு திரையின் இருப்பிடத்துடனும் ஒப்பிட்டு, அந்த குறிப்பிட்ட திரையை மீண்டும் செதுக்குகிறோம், இதன் மூலம் அதை பை தொடுதிரையில் காண்பிக்க முடியும்.
def find_screen (): if (x <cam_width): if (y <cam_height): திரை = frame1 print ("கேம் திரை 1 இல் செயல்பாடு") வேறு: திரை = frame1 அச்சு ("கேம் திரை 2 இல் செயல்பாடு") வேறு: if (y <cam_height): திரை = பிரேம் 1 அச்சு ("கேம் திரை 3 இல் செயல்பாடு") வேறு: திரை = பிரேம் 1 அச்சு ("கேம் திரை 4 இல் செயல்பாடு") திரும்ப (திரை)
மோஷன் கண்டறிதலுக்கு அலாரம் அமைத்தல்
நமக்குத் தெரிந்தவுடன், எந்தத் திரையில், இயக்கம் கண்டறியப்பட்டால், நமக்குத் தேவையான எந்த வகையான அலாரத்தையும் சேர்ப்பது எளிது. GPIO 3 உடன் இணைக்கப்பட்ட ஒரு பஸரை இங்கே நாம் பீப் செய்வோம். திரை 3 இல் இயக்கம் கண்டறியப்பட்டதா என if அறிக்கை சரிபார்க்கிறது மற்றும் tri_alarm எனப்படும் மாறியை அதிகரிக்கிறது. நீங்கள் விரும்பும் எந்தத் திரையையும் அல்லது பல திரைகளிலும் கூட நீங்கள் கண்டறியலாம்.
if ((x> cam_width) மற்றும் (y
Trig_alarm இன் மதிப்பு 3 ஐ விட அதிகமாக இருந்தால், நாங்கள் ஒரு முறை ஒரு பஸரை பீப் செய்வோம். இந்த எண்ணிக்கையின் காரணம் என்னவென்றால், சில நேரங்களில் நிழல்கள் அல்லது பறவைகள் போலி அலாரத்தை உருவாக்கியதை நான் கவனித்தேன். எனவே இந்த வழியில் 3 பிரேம்களுக்கு தொடர்ச்சியான செயல்பாடு இருந்தால் மட்டுமே, எங்களுக்கு அலாரம் கிடைக்கும்.
if (tri_alarm> = 3): # conts 3 இயக்கங்களுக்கு காத்திருங்கள் # பஸர் GPIO.output (BUZZER, 1) time.sleep (0.02) GPIO.output (BUZZER, 0) tri_alarm = 0
CPU வெப்பநிலை மற்றும் பயன்பாட்டை கண்காணித்தல்
கணினி 24x7 வேலை செய்ய உள்தள்ளப்பட்டுள்ளது, எனவே பை மிகவும் சூடாக இருக்கும், எனவே அந்த மதிப்புகளை திரையில் காண்பிப்பதன் மூலம் வெப்பநிலை மற்றும் CPU பயன்பாட்டை கண்காணிக்க முடிவு செய்கிறேன். Gpiozero நூலகத்தைப் பயன்படுத்தி இந்த தகவலைப் பெற்றுள்ளோம்.
cpu = CPUT வெப்பநிலை () சுமை = சுமை சராசரி () cpu_temperature = str ((cpu.temperature) // 1) load_average = str (load.load_average) #print (cpu.temperature) #print (load.load_average) cv2.putText (display_screen, cpu_temperature, (250,250), cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0,0,255), 1) cv2.putText (display_screen, load_average, (300,250), cv2.
உங்கள் பை சிசிடிவி மோஷன் டிடெக்டரைத் தொடங்குகிறது
சேகரிக்க பல நாட்கள் இதை சோதித்தேன், இது ஒவ்வொரு முறையும் வேலை செய்கிறது, நான் ஒரு கேமராவை சேதப்படுத்தும் வரை இது மிகவும் வேடிக்கையாக இருந்தது,
