- చిత్రాలు ఏమిటి?
- కంప్యూటర్ చిత్రాలను ఎలా నిల్వ చేస్తుంది
- చిత్రాలను గుర్తించడం యంత్రానికి ఎందుకు కష్టం
- OpenCV యొక్క అప్లికేషన్ మరియు ఉపయోగాలు
- పైథాన్ మరియు అనకొండలతో ఓపెన్సివిని ఇన్స్టాల్ చేస్తోంది
- ఓపెన్సివిలో చిత్రాలను తెరవడం మరియు సేవ్ చేయడం
- ఓపెన్సివిలో గ్రే స్కేలింగ్ చిత్రం
- రంగు ఖాళీలు
- RGB చిత్రం యొక్క వ్యక్తిగత భాగాలను అన్వేషించడం
- చిత్రాన్ని వ్యక్తిగత RGB భాగాలుగా మారుస్తుంది
- చిత్రం యొక్క హిస్టోగ్రాం ప్రాతినిధ్యం
- OpenCV ఉపయోగించి చిత్రాలు మరియు ఆకృతులను గీయడం
కళ చూడటం ఒక మార్గం, మరియు చూడటం నమ్మకం అని వారు అంటున్నారు, కానీ దీనికి విరుద్ధంగా కూడా నిజం ఉంది, నమ్మడం చూస్తోంది మరియు దృష్టి బహుమతి లేకుండా ఈ ప్రపంచంలో జీవించడం imagine హించటం చాలా కష్టం - మన కళ్ళు, ఇది శిశువుగా ఉండటం ఎంత అద్భుతంగా ఉంది మన కళ్ళు తెరిచినప్పుడు మనం ప్రపంచాన్ని చూస్తాము మరియు మన చుట్టూ ఉన్న ప్రపంచాన్ని గుర్తించడం మరియు చూడటం ప్రారంభించాము కాని సమయం గడిచేకొద్దీ, అదే అద్భుతమైన అనుభవం ప్రాపంచికమైనదిగా మారుతుంది. కానీ మేము సాంకేతిక పరిజ్ఞానంతో అభివృద్ధి చెందుతున్నప్పుడు, యంత్రాలు కూడా దానిని చూడగలవు మరియు అర్థం చేసుకోగలవు. ప్రస్తుతం, మీరు మీ ఫోన్ను మీ ముఖంతో అన్లాక్ చేస్తే అది సైన్స్ ఫిక్షన్ అనిపించడం లేదు, కానీ యంత్ర దృష్టి అభివృద్ధి యొక్క కథ 20 సంవత్సరాల కన్నా ఎక్కువ కాలం నాటిది.
ఈ రంగంలో ప్రారంభ అధికారిక అడుగు 1999 లో ఇంటెల్ చొరవతో తిరిగి తీసుకోబడింది, అన్ని పరిశోధనలు ఓపెన్ సివి (ఓపెన్ సోర్స్ కంప్యూటర్ విజన్) కింద సహకరించబడినప్పుడు, మొదట సి ++ లో వ్రాయబడింది, 2006 లో దాని మొదటి పెద్ద విడుదల 1.0 సెకనుతో 2009 లో, 2015 లో మూడవది మరియు 2018 లో నాల్గవది. ఇప్పుడు ఓపెన్సివికి సి ++, పైథాన్ మరియు జావా ఇంటర్ఫేస్లు ఉన్నాయి మరియు విండోస్, లైనక్స్, మాక్ ఓఎస్, ఐఓఎస్ మరియు ఆండ్రాయిడ్కు మద్దతు ఇస్తున్నాయి. కాబట్టి దీనిని పైథాన్ మరియు లైనక్స్ పర్యావరణంతో రాస్ప్బెర్రీ పైలో సులభంగా ఇన్స్టాల్ చేయవచ్చు. ఫేస్ డిటెక్షన్, ఫేస్ లాక్, ఆబ్జెక్ట్ ట్రాకింగ్, కార్ నంబర్ ప్లేట్ డిటెక్షన్, హోమ్ సెక్యూరిటీ సిస్టమ్ వంటి అనేక రియల్ టైమ్ ఇమేజ్ ప్రాసెసింగ్ అనువర్తనాలను రూపొందించడానికి ఓపెన్సివి మరియు అటాచ్డ్ కెమెరాతో రాస్ప్బెర్రీ పై ఉపయోగపడుతుంది.
ఓపెన్సివిని ఉపయోగించి ఇమేజ్ ప్రాసెసింగ్ నేర్చుకోవడానికి వెళ్ళే ముందు చిత్రాలు ఏమిటో మరియు మానవులు మరియు యంత్రాలు ఆ చిత్రాలను ఎలా గ్రహిస్తాయో తెలుసుకోవడం ముఖ్యం.
చిత్రాలు ఏమిటి?
చిత్రాలు కనిపించే కాంతి స్పెక్ట్రం యొక్క రెండు డైమెన్షనల్ ప్రాతినిధ్యం. మరియు కనిపించే కాంతి స్పెక్ట్రం పరారుణ మరియు అతినీలలోహిత స్పెక్ట్రం మధ్య ఉన్న విద్యుదయస్కాంత వర్ణపటంలో ఒక భాగం.
చిత్రాలు ఎలా ఏర్పడతాయి: - ఒక కాంతి ఒక వస్తువును ఒక చిత్రం, సెన్సార్ లేదా రెటీనాలో ప్రతిబింబించేటప్పుడు.
ఈ విధంగా మన కళ్ళు పనిచేస్తాయి, చాలా చిన్న లైట్లను అడ్డుకోవటానికి ఒక అవరోధాన్ని ఉపయోగించి కాంతిని దాటగలిగే దానిని ఎపర్చరు అంటారు, మరియు ఇది చాలా ఫోకస్ చేసిన ఇమేజ్ను ఏర్పరుస్తుంది మరియు పిన్ హోల్ కెమెరా కోసం పనిచేసే మోడల్, కానీ పిన్ హోల్ కెమెరాలో సమస్య ఉంది, అదే కాంతి ఎపర్చరులోకి ప్రవేశిస్తుంది, ఇది ఏర్పడిన చలనచిత్రానికి లేదా చిత్రానికి తగినది కాదు, మనం ఫోకస్ చేసిన చిత్రాన్ని పొందలేము, తద్వారా మనం చిత్రాన్ని కేంద్రీకరించడానికి సినిమాను ముందుకు వెనుకకు తరలించాల్సిన అవసరం ఉంది, కానీ ఇది చాలా సందర్భాలలో సమస్యాత్మకం.
లేదా లెన్స్లను ఉపయోగించడం ద్వారా మేము ఈ సమస్యను పరిష్కరించగలము, ఇది ఎపర్చరు పరిమాణాన్ని నియంత్రించడానికి అనుమతిస్తుంది, మరియు ఫోటోగ్రఫీలో దీనిని ఎఫ్ స్టాప్ అని పిలుస్తారు, సాధారణంగా ఎఫ్ స్టాప్ విలువను తగ్గించడం ఫోటోగ్రఫీలో మంచిది.
ఎపర్చరు పరిమాణం ఫోటోగ్రఫీలో బోకె అని పిలువబడే చక్కని లోతు ఫీల్డ్లోకి వెళ్దాం, మనం చిత్రంపై దృష్టి సారించేటప్పుడు అస్పష్టమైన నేపథ్యాన్ని కలిగి ఉండటానికి ఇది అనుమతిస్తుంది.
కంప్యూటర్ చిత్రాలను ఎలా నిల్వ చేస్తుంది
.png,.jpgG మరియు మొదలైన వివిధ ఇమేజ్ ఫార్మాట్ల గురించి మీరు విన్నాను. ఇవన్నీ మన అనలాగ్ ప్రపంచానికి డిజిటల్ ప్రాతినిధ్యం, కంప్యూటర్లు చిత్రాన్ని నిల్వ కోసం డిజిటల్ కోడ్లోకి అనువదించడం ద్వారా దీన్ని చేసి, ఆపై ఫైల్ను ఇమేజ్లోకి తిరిగి అర్థం చేసుకుంటాయి ప్రదర్శన. కానీ బేసిక్స్ వద్ద వారు చిత్రాలను నిల్వ చేయడానికి ఒక సాధారణ ప్లాట్ఫారమ్ను ఉపయోగిస్తారు మరియు ఓపెన్సివికి కూడా ఇది వర్తిస్తుంది.
ఓపెన్సివి దాని చిత్రాల కోసం డిఫాల్ట్గా RGB (ఎరుపు, ఆకుపచ్చ మరియు నీలం) రంగు స్థలాన్ని ఉపయోగిస్తుంది, ఇక్కడ ప్రతి పిక్సెల్ కోఆర్డినేట్ (x, y) 8-బిట్ రూపంలో (0-255, 2 8) తీవ్రతలకు 3 విలువలను కలిగి ఉంటుంది.
ప్రతి రంగు యొక్క విభిన్న తీవ్రతలను కలపడం మాకు పూర్తి స్పెక్ట్రంను ఇస్తుంది, అందుకే పెయింటింగ్ లేదా కళలో ఈ మూడు రంగులు ప్రాధమిక రంగులుగా మరియు మిగతావన్నీ ద్వితీయ రంగులుగా పరిగణించబడతాయి, ఎందుకంటే ద్వితీయ రంగులు ప్రాధమిక రంగుల ద్వారా ఏర్పడతాయి. పసుపు కోసం, మనకు ఈ క్రింది విలువలు ఉన్నాయి: ఎరుపు - 255; ఆకుపచ్చ - 255; నీలం - 0.
ఇప్పుడు చిత్రాలు బహుళ డైమెన్షనల్ శ్రేణులలో నిల్వ చేయబడ్డాయి. ప్రోగ్రామింగ్లో, శ్రేణి అనేది వస్తువుల సేకరణ శ్రేణి. మరియు ఇక్కడ మేము 1D, 2D మరియు 3D యొక్క మూడు రకాల శ్రేణులతో వ్యవహరిస్తాము, ఇక్కడ 'D' డైమెన్షనల్.
రంగు చిత్రాలు త్రిమితీయ శ్రేణులలో నిల్వ చేయబడతాయి, ఇక్కడ మూడవ కొలతలు RGB రంగులను సూచిస్తాయి (వీటిని మనం తరువాత చూస్తాము), మరియు కలిసి అవి ఒక చిత్రం కోసం పిక్సెల్స్ యొక్క వివిధ తీవ్రతలను ఏర్పరుస్తాయి, అయితే నలుపు & తెలుపు చిత్రాలు రెండు డైమెన్షనల్ శ్రేణులలో నిల్వ చేయబడతాయి మరియు రెండు రకాల నలుపు & తెలుపు చిత్రాలు గ్రేస్కేల్ మరియు బైనరీ చిత్రాలు ఉన్నాయి.
గ్రేస్కేల్ చిత్రాలు రెండు డైమెన్షనల్ అర్రే యొక్క బూడిద రంగు షేడ్స్ నుండి ఏర్పడతాయి, బైనరీ చిత్రాలు నలుపు లేదా తెలుపు పిక్సెల్స్.
చిత్రాలను గుర్తించడం యంత్రానికి ఎందుకు కష్టం
కంప్యూటర్ దృష్టి అనేది ఒక సవాలు చేసే పని, ఒక యంత్రానికి దృష్టి, గుర్తింపు మరియు గుర్తింపు యొక్క భావాన్ని ఇవ్వడం ఎంత కష్టమో మీరే imagine హించవచ్చు. కంప్యూటర్ దృష్టిని చాలా కష్టతరం చేసే కింది అంశాలు ఉన్నాయి.
- కెమెరా సెన్సార్ మరియు లెన్స్ పరిమితులు
- పాయింట్ వైవిధ్యాలను చూడండి
- లైటింగ్ మార్చడం
- స్కేలింగ్
- సంఘటనలు
- ఆబ్జెక్ట్ క్లాస్ వైవిధ్యాలు
- సందిగ్ధ చిత్రాలు / ఆప్టికల్ భ్రమలు
OpenCV యొక్క అప్లికేషన్ మరియు ఉపయోగాలు
ఇబ్బంది ఉన్నప్పటికీ, కంప్యూటర్ విజన్ చాలా విజయ కథలను కలిగి ఉంది
- రోబోటిక్ నావిగేషన్ - సెల్ఫ్ డ్రైవింగ్ కార్లు
- ఫేస్ డిటెక్షన్ & రికగ్నిషన్
- సెర్చ్ ఇంజన్ చిత్ర శోధన
- లైసెన్స్ ప్లేట్ పఠనం
- చేతివ్రాత గుర్తింపు
- స్నాప్చాట్ & ఫేస్ ఫిల్టర్లు
- ఆబ్జెక్ట్ రికగ్నిషన్
- క్రీడలలో బాల్ & ప్లేయర్ ట్రాకింగ్
- ఇంకా చాలా!
పైథాన్ మరియు అనకొండలతో ఓపెన్సివిని ఇన్స్టాల్ చేస్తోంది
ఓపెన్సివి సి ++ లో వ్రాయబడింది, అయితే దీన్ని సి ++ తో అమలు చేయడం చాలా కష్టం, అందువల్ల పైథాన్గా దీన్ని ఉన్నత స్థాయి భాషతో అమలు చేయడానికి మేము ఎంచుకుంటాము మరియు పైథాన్తో ఓపెన్సివిని అమలు చేయడం వల్ల అదనపు ప్రయోజనాలు ఉన్నాయి, ఎందుకంటే పైథాన్ సులభమైన భాషలలో ఒకటి ప్రారంభకులకు కూడా ఇది డేటా సైన్స్ మరియు మెషీన్ లెర్నింగ్ అనువర్తనాలకు చాలా శక్తివంతమైనది మరియు ఇది చిత్రాలను నంపీ శ్రేణులలో నిల్వ చేస్తుంది, ఇది చాలా శక్తివంతమైన ఆపరేషన్లను చాలా తేలికగా చేయడానికి అనుమతిస్తుంది.
ఎక్స్పోజర్ టు హైస్కూల్ లెవల్ మ్యాథ్, వెబ్క్యామ్, పైథాన్ 2.7 లేదా 3.6 తో ప్రాథమిక ప్రోగ్రామింగ్ ఉపయోగపడుతుంది (అనకొండ ప్యాకేజీకి ప్రాధాన్యత ఇవ్వబడుతుంది).
దశ 1. అనకొండ పైథాన్ ప్యాకేజీని డౌన్లోడ్ చేసి, ఇన్స్టాల్ చేయండి
దీనికి వెళ్లండి: https://www.anaconda.com/download మరియు మీ మెషీన్ వాతావరణం ప్రకారం దాని విండోస్, లైనక్స్ లేదా మాక్ ప్రకారం ఎంచుకోండి మరియు మీరు పైథాన్ 2.7 లేదా పైథాన్ 3.7 వెర్షన్ కోసం 64 బిట్ సిస్టమ్స్ లేదా 32 బిట్ సిస్టమ్స్ కోసం ఎంచుకోవచ్చు, కానీ ఇప్పుడు సిస్టమ్ యొక్క చాలా రోజులు 64 బిట్.
పైథాన్ యొక్క అనకొండ పంపిణీ స్పైడర్ స్టూడియో, జూపిటర్ నోట్బుక్లు మరియు అనకొండ ప్రాంప్ట్ తో వస్తుంది, ఇది పైథాన్ సూపర్ ఫ్రెండ్లీగా ఉపయోగించడానికి ఉపయోగపడుతుంది. మేము ఉదాహరణలు చేయడానికి స్పైడర్ స్టూడియోని ఉపయోగిస్తాము.
పైథాన్ 2.7 లేదా 3.7 మధ్య ఎంపిక పూర్తిగా తటస్థంగా ఉంది, అయితే పైథాన్ యొక్క భవిష్యత్తు కనుక పైథాన్ 3.7 ను ఉపయోగిస్తాము మరియు పైథాన్ 2.7 ఫారం 2020 ను స్వాధీనం చేసుకుంటాము, చాలా లైబ్రరీలను పైథాన్ 3.7 లో అభివృద్ధి చేస్తున్నారు మనస్సులో పైథాన్ యొక్క భవిష్యత్తు అంశం. (2/5 = 2.5) వంటి ప్రాథమిక గణిత కార్యకలాపాలపై కూడా ఆశించిన ఫలితాలను ఇస్తుంది, పైథాన్ 2.7 దానిని 2 కి అంచనా వేస్తుంది. అలాగే ప్రింట్ పైథాన్ 3.7 (ప్రింట్ (“హలో”)) లో ఒక ఫంక్షన్గా పరిగణించబడుతుంది, కనుక ఇది ప్రోగ్రామర్లకు చేతులెత్తేస్తుంది.
దశ 2. ఓపెన్సివితో వర్చువల్ ప్లాట్ఫామ్ను సృష్టించడం
అనకొండ ప్రాంప్ట్ మరియు ఇక్కడ అప్లోడ్ చేసిన YML ఫైల్ ఉపయోగించి స్పైడర్ కోసం వర్చువల్ ప్లాట్ఫామ్ను సృష్టించడం ద్వారా మేము ఓపెన్సివిని ఇన్స్టాల్ చేయబోతున్నాం.
YML ఫైళ్ళతో మేము అవసరమైన అన్ని ప్యాకేజీలు మరియు లైబ్రరీలను ఇన్స్టాల్ చేస్తాము, అయితే మీరు ఏదైనా అదనపు ప్యాకేజీలను వ్యవస్థాపించాలనుకుంటే, ఆ ప్యాకేజీ యొక్క ఆదేశాన్ని అమలు చేయడం ద్వారా మీరు అనకొండ ప్రాంప్ట్ ద్వారా సులభంగా ఇన్స్టాల్ చేయవచ్చు.
మీ విండోస్ సెర్చ్ ఐకాన్కు వెళ్లి అనకొండ ప్రాంప్ట్ టెర్మినల్ను కనుగొనండి, మీరు దీన్ని ఇన్స్టాల్ చేసిన మీ అనకొండ ఫోల్డర్లో కనుగొనవచ్చు.
అప్పుడు మీరు మీ డౌన్లోడ్ చేసిన YML ఫైల్ను కనుగొనవలసి ఉంటుంది మరియు ఇక్కడ నుండి మీకు రెండు ఎంపికలు ఉన్నాయి, మీ టెర్మినల్ యొక్క డైరెక్టరీని మీ YML ఫైల్ డౌన్లోడ్ చేయబడిన ప్రదేశానికి మార్చడం లేదా మీ YML ఫైల్ను మీ అనకొండ ఇన్స్టాల్ చేసిన డైరెక్టరీకి కాపీ చేయడం. సందర్భాలలో ఇది C: \ డ్రైవ్లో ఉంటుంది, మీ YML ఫైల్ను పేర్కొన్న స్థానానికి కాపీ చేసిన తర్వాత మీ ప్రాంప్ట్లో కింది ఆదేశాన్ని అమలు చేయండి
conda env create –f virt_platform_windows.yml
నా సిస్టమ్ విండోస్లో నడుస్తున్నందున YML ఫైల్ మరియు కమాండ్ విండోస్కు అనుగుణంగా ఉంటుంది, అయితే మీరు విండోస్ను లైనక్స్ లేదా మాక్ ద్వారా సంబంధిత స్థానంలో మార్చడం ద్వారా మీ సిస్టమ్ ప్రకారం సవరించవచ్చు.
గమనిక: - ప్యాకేజీ వెలికితీత పనుల ఇన్స్టాల్ లోపం సంభవిస్తే pytorch మరియు NumPy మొదటి మరియు అప్పుడు పైన ఆదేశాన్ని.
ఇప్పుడు అనకొండ నావిగేటర్ను కనుగొనండి మరియు “___ పై అనువర్తనాలు” యొక్క డ్రాప్ డౌన్ మెను ఉంటుంది మరియు అక్కడ నుండి వర్చువల్ వాతావరణాన్ని ఎంచుకోండి మరియు అక్కడ నుండి మీరు స్పైడర్ స్టూడియోను ప్రారంభించాలి.
అంతే, మీరు ప్రారంభించడానికి సిద్ధంగా ఉన్నారు!
ఓపెన్సివిలో చిత్రాలను తెరవడం మరియు సేవ్ చేయడం
ఓపెన్సివిలో పైథాన్ను ఉపయోగించడానికి ఇక్కడ మేము కొన్ని ప్రాథమిక ఆదేశాలను మరియు పరిభాషను వివరిస్తున్నాము. ఓపెన్సివి ఇమ్రెడ్, ఇమ్షో మరియు ఇమ్రైట్లో మూడు ప్రాథమిక విధుల గురించి నేర్చుకుంటాము .
పైథాన్ లోని # వ్యాఖ్యలు # గుర్తు ద్వారా ఇవ్వబడ్డాయి
కమాండ్ ద్వారా పైథాన్లో ఓపెన్సివిని దిగుమతి చేయండి
cv2 ను దిగుమతి చేయండి
చిత్రానికి మార్గాన్ని పేర్కొంటూ 'imread' ఉపయోగించి చిత్రాన్ని లోడ్ చేయండి
image = cv2.imread ('input.jpg')
ఇప్పుడు ఆ చిత్రం పైథాన్లో వేరియబుల్గా లోడ్ చేయబడి నిల్వ చేయబడుతోంది
ఇప్పుడు మన ఇమేజ్ వేరియబుల్ ప్రదర్శించడానికి, మేము 'ఇమ్షో' ను ఉపయోగిస్తాము మరియు ఇమ్షో ఫంక్షన్ కోసం మొదటి పరామితి ఇమేజ్ విండోలో చూపిన శీర్షిక, మరియు పేరును స్ట్రింగ్ గా సూచించడానికి ('') లో ఎంటర్ చేయాలి.
cv2.imshow ('హలో వరల్డ్', చిత్రం)
ఇమేజ్ విండో తెరిచినప్పుడు సమాచారాన్ని ఇన్పుట్ చేయడానికి వెయిట్కీ మాకు అనుమతిస్తుంది, దానిని ఖాళీగా ఉంచడం ద్వారా, కొనసాగడానికి ముందు ఏదైనా నొక్కినంత వరకు వేచి ఉంటుంది, సంఖ్యలను ఉంచడం ద్వారా (0 తప్ప), మీరు విండోను ఎంతసేపు తెరిచి ఉంచాలో ఆలస్యాన్ని పేర్కొనవచ్చు (సమయం ఇక్కడ మిల్లీసెకన్లలో).
cv2.nightKey ()
'destAllWindows' అన్ని ఓపెన్ విండోలను మూసివేస్తుంది, దీన్ని ఉంచడంలో వైఫల్యం మీ ప్రోగ్రామ్ను వేలాడదీస్తుంది.
cv2.destroyAllWindows ()
, దీని కోసం మేము నంపిని ఉపయోగిస్తాము, పెద్ద మల్టీ డైమెన్షనల్ శ్రేణులు మరియు మాత్రికలకు మద్దతునివ్వడానికి పైథాన్ ప్రోగ్రామింగ్ కోసం నంపీ ఒక లైబ్రరీ.
దిగుమతి cv2 #importing NumPy దిగుమతి NumPy NP వంటి చిత్రం = cv2.imread ('input.jpg') cv2.imshow ('hello_world', చిత్రం) #shape ఫంక్షన్ చాలా ఉపయోగకరంగా ఉంది మేము చూడటం చేసినప్పుడు ఒక కొలతలు వ్యూహం, అది ఇమేజ్ ప్రింట్ (image.shape) cv2.nightKey () cv2.destroyAllWindows ()
కన్సోల్ అవుట్పుట్ - (183, 275, 3), చిత్రం యొక్క రెండు కొలతలు ఎత్తు 183 పిక్సెల్స్ మరియు 275 పిక్సెల్స్ వెడల్పు మరియు 3 అంటే ఈ చిత్రాన్ని తయారుచేసే మరో మూడు భాగాలు (R, G, B) ఉన్నాయి (ఇది చూపిస్తుంది రంగు చిత్రాలు త్రిమితీయ శ్రేణులలో నిల్వ చేయబడతాయి).
ముద్రణ ('చిత్రం యొక్క ఎత్తు:', (image.shape, 'పిక్సెల్స్')) ముద్రణ ('చిత్రం యొక్క వెడల్పు:', (image.shape, 'పిక్సెల్స్'))
కన్సోల్ అవుట్పుట్ - చిత్రం యొక్క ఎత్తు: (183, 'పిక్సెల్స్')
చిత్రం యొక్క వెడల్పు: (275, 'పిక్సెల్స్')
సవరించిన చిత్రాన్ని OpenCV లో సేవ్ చేస్తోంది
ఫైల్ పేరు మరియు సేవ్ చేయవలసిన చిత్రాన్ని పేర్కొనడానికి మేము 'imwrite' ని ఉపయోగిస్తాము.
cv2.imwrite ('output.jpg', చిత్రం) cv2.imwrite ('output.png', చిత్రం)
మొదటి వాదన మనం సేవ్ చేయదలిచిన ఫైల్ పేరు, read చదవడానికి లేదా మనం ఉపయోగించే ఫైల్ను ('') స్ట్రింగ్గా సూచించడానికి} మరియు రెండవ ఆర్గ్యుమెంట్ ఫైల్ పేరు.
ఓపెన్సివి చిత్రాన్ని వివిధ ఫార్మాట్లలో సేవ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఓపెన్సివిలో గ్రే స్కేలింగ్ చిత్రం
గ్రేస్కేలింగ్ అంటే ఒక చిత్రం పూర్తి రంగు నుండి బూడిద రంగు (నలుపు మరియు తెలుపు) షేడ్స్గా మార్చబడుతుంది.
Opencv లో, అనేక విధులు ప్రాసెస్ చేయడానికి ముందు చిత్రాలను గ్రేస్కేల్ చేస్తాయి. ఇది చిత్రాన్ని సరళీకృతం చేస్తుంది, ఇది శబ్దం తగ్గింపుగా పనిచేస్తుంది మరియు చిత్రంలో తక్కువ సమాచారం ఉన్నందున ప్రాసెసింగ్ సమయాన్ని పెంచుతుంది (గ్రేస్కేల్ చిత్రాలు రెండు డైమెన్షనల్ శ్రేణులలో నిల్వ చేయబడినందున).
దిగుమతి cv2 # మా ఇన్పుట్ ఇమేజ్ ఇమేజ్ను లోడ్ చేయండి = cv2.imread ('input.jpg') cv2.imshow ('అసలైన', ఇమేజ్) cv2.nightKey () # మేము గ్రేస్కేల్ గ్రే_ఇమేజ్ = cv2.cvtColor (ఇమేజ్, cv2.COLOR_BGR2GRAY) cv2.imshow ('గ్రేస్కేల్', గ్రే_ఇమేజ్) cv2.nightKey () cv2.destroyALLWindows ()
చిత్రాన్ని గ్రేస్కేల్గా మార్చడానికి సరళమైన మార్గం ఇమేజ్ పేరుకు ప్రక్కన imread ఫంక్షన్లో ఆర్గ్యుమెంట్ 0 ను జోడించండి
దిగుమతి cv2 grey_image = cv2.imread ('input.jpg', 0) cv2.imshow ('గ్రేస్కేల్', గ్రే_ఇమేజ్) cv2.nightKey () cv2.destroyAllWindows ()
cv2 దిగుమతి సంఖ్యను np image = cv2.imread ('input.jpg') ముద్రణ (image.shape) cv2.imshow ('అసలు', చిత్రం) cv2.nightKey () gray_image = cv2.cvtColor (చిత్రం, cv2.COLOR_BGR2GRAY) cv2.imshow ('గ్రేస్కేల్', గ్రే_ఇమేజ్) ప్రింట్ (గ్రే_ఇమేజ్.షాప్) cv2.nightKey () cv2.destroyALLWindows ()
కన్సోల్ అవుట్పుట్: - (183, 275, 3) - రంగు చిత్రం కోసం
(183, 275) - గ్రేస్కేల్ చిత్రం కోసం
అందువల్ల రంగు చిత్రాలు త్రిమితీయ శ్రేణులచే ప్రాతినిధ్యం వహిస్తాయని స్పష్టంగా చూపిస్తుంది, బూడిద స్థాయి చిత్రాలు రెండు డైమెన్షనల్ శ్రేణుల ద్వారా.
రంగు ఖాళీలు
చిత్రాలు నిల్వ చేయబడిన మార్గం రంగు ఖాళీలు. RGB, HSV, CMYK వేర్వేరు రంగు ఖాళీలు, ఇవి రంగును సూచించడానికి సరళమైన మార్గాలు.
RGB - ఎరుపు, ఆకుపచ్చ మరియు నీలం.
HSV - రంగు, సంతృప్తత మరియు విలువ.
మరియు CMYK సాధారణంగా ఇంక్జెట్ ప్రింటర్లలో ఉపయోగించబడుతుంది.
RGB లేదా BGR రంగు స్థలం
OpenCV యొక్క డిఫాల్ట్ కలర్ స్పేస్ RGB. RGB అనేది సంకలిత రంగు మోడల్, ఇది నీలం, ఆకుపచ్చ మరియు ఎరుపు రంగులను వివిధ తీవ్రతలు / ప్రకాశం కలపడం ద్వారా రంగులను ఉత్పత్తి చేస్తుంది. OpenCV లో మేము 8 బిట్ కలర్ లోతులను ఉపయోగిస్తాము.
- ఎరుపు (0-255)
- నీలం (0-255)
- ఆకుపచ్చ (0-255)
అయితే ఓపెన్సివి వాస్తవానికి రంగును బిజిఆర్ ఆకృతిలో నిల్వ చేస్తుంది.
సరదా వాస్తవం: - సంతకం చేయని 32-బిట్ పూర్ణాంకాలు మెమరీలో ఎలా నిల్వ చేయబడుతున్నాయో కంప్యూటర్లలో మేము BGR క్రమాన్ని ఉపయోగిస్తాము, ఇది ఇప్పటికీ RGB గా నిల్వ చేయబడుతుంది. రంగును సూచించే పూర్ణాంకం ఉదా: - 0X00BBGGRR 0XRRGGBB గా నిల్వ చేయబడుతుంది.
HSV రంగు స్థలంHSV (రంగు, సంతృప్తత & విలువ / ప్రకాశం) అనేది మానవులు గ్రహించే రంగులను సూచించడానికి ప్రయత్నించే రంగు స్థలం. ఇది RGB కలర్ పాయింట్ల స్థూపాకార ప్రాతినిధ్యంలో రంగు సమాచారాన్ని నిల్వ చేస్తుంది.
రంగు - రంగు విలువ (0-179)
సంతృప్తత - రంగు యొక్క వైబ్రాన్సీ (0-255)
విలువ - ప్రకాశం లేదా తీవ్రత (0-255)
రంగు విభజనలో HSV కలర్ స్పేస్ ఫార్మాట్ ఉపయోగపడుతుంది. RGB లో, నిర్దిష్ట రంగును ఫిల్టర్ చేయడం అంత సులభం కాదు, అయినప్పటికీ నిర్దిష్ట రంగును ఫిల్టర్ చేయడానికి రంగు శ్రేణులను సెట్ చేయడం HSV చాలా సులభం చేస్తుంది.
రంగు HSV లో రంగును సూచిస్తుంది, రంగు విలువ 0 - 180 నుండి 360 కాదు, కనుక ఇది పూర్తి వృత్తాన్ని పూర్తి చేయలేదు మరియు కనుక ఇది ప్రామాణికం కంటే భిన్నంగా మ్యాప్ చేయబడుతుంది.
రంగు పరిధి ఫిల్టర్లు
- ఎరుపు - (165-15)
- ఆకుపచ్చ - (45-75)
- నీలం - (90-120)
RGB (ఎరుపు, ఆకుపచ్చ మరియు నీలం) రంగు స్థలంలో నిల్వ చేయబడిన చిత్రాలు మనకు తెలుసు కాబట్టి ఓపెన్సివి మనకు అదే చూపిస్తుంది, అయితే ఓపెన్సివి యొక్క RGB ఫార్మాట్ గురించి గుర్తుంచుకోవలసిన మొదటి విషయం ఏమిటంటే ఇది వాస్తవానికి BGR మరియు మనం చూడటం ద్వారా తెలుసుకోవచ్చు చిత్రం ఆకారం.
దిగుమతి cv2 NP దిగుమతి NumPy చిత్రం = cv2.imread ('input.jpg') # B, G, మొదటి 0,0 పిక్సెల్ కోసం R విలువ B, G, R = చిత్రం ముద్రణ (B, G, R) ముద్రణ (చిత్రం .షాప్ ) # ఇప్పుడు మేము దీన్ని గ్రేస్కేల్ ఇమేజ్లో వర్తింపజేస్తే గ్రే_ఇమ్గ్ = సివి 2. సివిటి కలర్ (ఇమేజ్, సివి 2.COLOR_BGR2GRAY) ప్రింట్ (గ్రే_ఇమ్గ్.షాప్) # గ్రే_ఇమేజ్ పిక్సెల్ విలువ 10,50 పిక్సెల్ ప్రింట్ (గ్రే_ఇమ్జి)
కన్సోల్ అవుట్పుట్: ప్రింట్ (B, G, R) - 6 11 10
print (image.shape) - (183, 275, 3)
ముద్రణ (గ్రే_ఇమ్గ్.షాప్) - (183, 275)
ముద్రణ (గ్రే_ఇమ్జి) - 69
ఇప్పుడు గ్రే స్కేల్ ఇమేజ్లో కేవలం రెండు కొలతలు మాత్రమే ఉన్నాయి, ఎందుకంటే కలర్ ఇమేజ్ మూడు కోణాలలో నిల్వ చేయబడిందని, మూడవ డైమెన్షన్ (R, G, B) కాగా, గ్రేస్కేల్లో రెండు కొలతలు మాత్రమే ఉన్నాయి, ఎందుకంటే (R, G, బి) లేదు మరియు ఒక నిర్దిష్ట పిక్సెల్ స్థానం కోసం మనకు ఒకే విలువ లభిస్తుంది, అయితే రంగు చిత్రంలో మనకు మూడు విలువలు లభిస్తాయి.
మరో ఉపయోగకరమైన రంగు స్థలం HSV
దిగుమతి cv2 image = cv2.imread ('input.jpg') hsv_image = cv2.cvtColor (చిత్రం, cv2.COLOR_BGR2HSV) cv2.imshow ('HSV image', hsv_image) cv2.imshow ('Hue channel', hsv_image) cv2. imshow ('సంతృప్త ఛానెల్', hsv_image) cv2.imshow ('విలువ ఛానెల్', hsv_image) cv2.nightKey () cv2.destroyAllWindows ()
కోడ్ను అమలు చేసిన తర్వాత మీరు నాలుగు చిత్రాలను చూడవచ్చు, వీటిలో మూడు వ్యక్తిగత ఛానెల్లు మరియు ఒకటి కలిపి HSV ఇమేజ్.
రంగు ఛానెల్ చిత్రం చాలా చీకటిగా ఉంది ఎందుకంటే దాని విలువ 0 నుండి 180 వరకు మాత్రమే ఉంటుంది.
అలాగే, ఇమ్షో ఫంక్షన్ మీకు RGB లేదా BGR చిత్రాన్ని చూపించడానికి ప్రయత్నిస్తుందని గమనించండి, అయితే HSV మార్పిడి దాన్ని అతివ్యాప్తి చేస్తుంది.
అలాగే, విలువ ఛానెల్ దాని ప్రకాశం కారణంగా చిత్రం యొక్క గ్రేస్కేల్తో సమానంగా ఉంటుంది.
RGB చిత్రం యొక్క వ్యక్తిగత భాగాలను అన్వేషించడం
దిగుమతి cv2 image = cv2.imread ('input.jpg') # opencv యొక్క స్ప్లిట్ ఫంక్షన్ ప్రతి రంగు సూచిక B, G, R = cv2.split (చిత్రం) cv2.imshow ("ఎరుపు", R) cv2.imshow ("ఆకుపచ్చ", జి) cv2.imshow ("నీలం", బి) # విలీనం చేసిన వ్యక్తిగత రంగు భాగాలను విలీనం చేయడం ద్వారా అసలు చిత్రాన్ని రూపొందించడం = cv2.merge () cv2.imshow ("విలీనం", విలీనం) # నీలిరంగు రంగు విలీనం = cv2.merge () cv2.imshow ("బ్లూ యాంప్లిఫైతో విలీనం చేయబడింది", విలీనం చేయబడింది) # వ్యక్తిగత రంగు భాగాల ఆకారాన్ని సూచిస్తుంది. # అవుట్పుట్ వుల్డ్ ఎత్తు మరియు వెడల్పు ఉన్న రెండు కోణాలు మాత్రమే ఉంటుంది, ఎందుకంటే RGB భాగం యొక్క మూడవ మూలకం వ్యక్తిగతంగా ముద్రణ (బి . షేప్) ముద్రణ (R.ఆకారం) ముద్రణ (జి. షేప్) cv2.waitKey (0) cv2.destroyAllWindows ()
కన్సోల్ అవుట్పుట్: ఆకారం ఫంక్షన్ నుండి చిత్రం యొక్క కొలతలు
(183, 275)
(183, 275)
(183, 275)
చిత్రాన్ని వ్యక్తిగత RGB భాగాలుగా మారుస్తుంది
దిగువ కోడ్లో మేము చిత్రం HxW యొక్క కొలతలతో సున్నాల మాతృకను సృష్టించాము, సున్నా సున్నాలతో నిండిన శ్రేణిని తిరిగి ఇస్తుంది, కానీ అదే కొలతలు.
మేము చిత్రం యొక్క కోణాన్ని చూస్తున్నప్పుడు ఆకృతి ఫంక్షన్ చాలా ఉపయోగకరంగా ఉంటుంది మరియు ఇక్కడ మేము ఆ ఆకృతి ఫంక్షన్ను ముక్కలు చేసాము. కాబట్టి ఆకారం ప్రతిదీ నియమించబడిన పాయింట్ల వరకు పట్టుకుంటుంది, అనగా రెండవ నియమించబడిన పాయింట్ల వరకు, ఇది చిత్రం యొక్క ఎత్తు మరియు వెడల్పుగా ఉంటుంది, ఎందుకంటే మూడవది చిత్రం యొక్క RGB భాగాన్ని సూచిస్తుంది మరియు మాకు ఇక్కడ అవసరం లేదు.
cv2 దిగుమతి సంఖ్యను np image = cv2.imread ('input.jpg') B, G, R = cv2.split (image) సున్నాలు = np.zeros (image.shape, dtype = "uint8") cv2.imshow ("RED", cv2.merge ()) cv2.imshow ("Green", cv2.merge ()) cv2.imshow ("Blue", cv2.merge ()) cv2.nightKey (0) cv2.destroyAllWindows ()
చిత్రం యొక్క హిస్టోగ్రాం ప్రాతినిధ్యం
చిత్రం యొక్క హిస్టోగ్రామ్ ప్రాతినిధ్యం చిత్రాల భాగాలను దృశ్యమానం చేసే పద్ధతి.
కింది కోడ్ దాని మిశ్రమ మరియు వ్యక్తిగత రంగు భాగాల కలర్ హిస్టోగ్రాం ద్వారా చిత్రాన్ని విశ్లేషించడానికి మిమ్మల్ని అనుమతిస్తుంది.
దిగుమతి cv2 NP దిగుమతి NumPy హిస్టోగ్రాం ప్లాట్లు సృష్టించడానికి దిగుమతి matplotlib వరకు # మమ్మల్ని అవసరం PLT వంటి matplotlib.pyplot దిగుమతి చిత్రం = cv2.imread ('input.jpg') (,, ఎవరూ,,) హిస్టోగ్రాం = cv2.calcHist # మమ్మల్ని ఇతివృత్తం హిస్టోగ్రామ్, రావెల్ () మా ఇమేజ్ శ్రేణిని పెంచుతుంది plt.hist (image.ravel (), 256,) plt.show () # వేరు వేరు రంగు ఛానెల్లను చూడటం = = 'b', 'g', 'r') # మాకు తెలుసు రంగును వేరు చేసి, హిస్టోగ్రామ్లో ప్రతిదానిని i, col in enumerate (color): హిస్టోగ్రామ్ 2 = cv2.calcHist (,, ఏదీ లేదు,) plt.plot (హిస్టోగ్రామ్ 2, కలర్ = కోల్) plt.xlim () plt.show ()
లెట్ యొక్క అర్థం calcHist దాని వ్యక్తిగత పారామితులు ప్రతి ఫంక్షన్
cv2.calcHist (చిత్రాలు, ఛానెల్లు, ముసుగు, హిస్టైజ్ , పరిధులు)
చిత్రాలు: టైప్ యుంట్ 8 లేదా ఫ్లోట్ 32 యొక్క మూల చిత్రం. ఇది చదరపు బ్రాకెట్లలో ఇవ్వాలి, అనగా “”, ఇది ఓపెన్సివి కోసం ఒక చిత్రం శ్రేణి రూపంలో డేటా కనుక దాని రెండవ స్థాయి శ్రేణిని కూడా సూచిస్తుంది.
ఛానెల్లు: ఇది చదరపు బ్రాకెట్లలో కూడా ఇవ్వబడింది. ఇది మేము హిస్టోగ్రాంను లెక్కించే ఛానెల్ యొక్క సూచిక, ఉదాహరణకు ఇన్పుట్ గ్రేస్కేల్ ఇమేజ్ అయితే దాని విలువ, మీరు పాస్ చేయగల రంగు చిత్రాల కోసం లేదా వరుసగా నీలం, ఆకుపచ్చ మరియు ఎరుపు ఛానెల్ యొక్క హిస్టోగ్రాంను లెక్కించడం.
ముసుగు: ముసుగు చిత్రం. పూర్తి చిత్రం యొక్క హిస్టోగ్రాంను కనుగొనడానికి, ఇది “ఏదీ” గా ఇవ్వబడుతుంది. మీరు చిత్రం యొక్క నిర్దిష్ట ప్రాంతం యొక్క హిస్టోగ్రాంను కనుగొనాలనుకుంటే, మీరు దాని కోసం ఒక ముసుగు చిత్రాన్ని సృష్టించాలి మరియు దానిని ముసుగుగా ఇవ్వాలి.
విస్తరించు: ఇది మా BIN గణనను సూచిస్తుంది. మేము ఉత్తీర్ణత సాధించిన పూర్తి స్థాయి కోసం చదరపు బ్రాకెట్లలో ఇవ్వాలి.
శ్రేణులు: ఇది మా పరిధి, సాధారణంగా
OpenCV ఉపయోగించి చిత్రాలు మరియు ఆకృతులను గీయడం
ఓపెన్సివిలో పంక్తులు, దీర్ఘచతురస్రం, బహుభుజి, సర్కిల్ మొదలైనవి గీయడానికి కొన్ని ఉదాహరణలు క్రింద ఉన్నాయి.
cv2 దిగుమతి సంఖ్యను np # ఒక నల్ల చదరపు చిత్రాన్ని సృష్టించడం = np.zeros ((512,512,3), np.uint8) # మేము దీన్ని నలుపు మరియు తెలుపు రంగులలో కూడా సృష్టించగలము, అయితే ఎటువంటి మార్పులు ఉండవు image_bw = np.zeros ((512,512), np.uint8) cv2.imshow ("బ్లాక్ దీర్ఘచతురస్రం (రంగు)", చిత్రం) cv2.imshow ("బ్లాక్ దీర్ఘచతురస్రం (B&W)", image_bw)
లైన్
బ్లాక్ స్క్వేర్ పైగా ఒక లైన్ #create # cv2.line (చిత్రం, అక్షాంశాలు మొదలు అక్షాంశాలు ముగిసిన, రంగు, మందం) మందం 5 పిక్సెళ్ళు ఒక వికర్ణంగా లైన్ #drawing చిత్రం = np.zeros ((512,512,3), np.uint8) cv2.లైన్ (చిత్రం, (0,0), (511,511), (255,127,0), 5) cv2.imshow ("బ్లూ లైన్", ఇమేజ్)
దీర్ఘ చతురస్రం
ఒక బ్లాక్ స్క్వేర్ పైగా ఒక దీర్ఘ చతురస్రం #create # cv2.rectangle (చిత్రం, అక్షాంశాలు మొదలు అక్షాంశాలు, రంగు ముగించాడు మందం) మందం 5 పిక్సెళ్ళు ఒక దీర్ఘచతురస్ర #drawing చిత్రం = np.zeros ((512,512,3), np.uint8) cv2. దీర్ఘచతురస్రం (చిత్రం, (30,50), (100,150), (255,127,0), 5) cv2.imshow ("దీర్ఘచతురస్రం", చిత్రం)
# నల్ల చతురస్రంపై ఒక వృత్తాన్ని సృష్టించడం # cv2.circle (చిత్రం, మధ్య, వ్యాసార్థం, రంగు, పూరక) చిత్రం = np.zeros ((512,512,3), np.uint8) cv2.circle (చిత్రం, (100,100), (50), (255,127,0), - 1) cv2.imshow ("సర్కిల్", చిత్రం)
# బహుభుజి చిత్రాన్ని సృష్టించడం = np.zeros ((512,512,3), np.uint8) #lets నాలుగు పాయింట్లను నిర్వచించాయి pts = np.array (,,,], np.int32) # లెట్స్ ఇప్పుడు మన పాయింట్లను అవసరమైన రూపంలో పున hap రూపకల్పన చేస్తాయి polylines pts = pts.reshape ((- 1,1,2 % )) cv2.polylines (చిత్రం, ట్రూ, (0,255,255), 3) cv2.imshow ("బహుభుజి", చిత్రం)
opencv # cv2.putText (చిత్రం, 'ప్రదర్శించడానికి వచనం', బూటమ్ ఎడమ ప్రారంభ స్థానం, ఫాంట్, ఫాంట్ పరిమాణం, రంగు, మందం) చిత్రం = np.zeros ((512,512,3), np.uint8) cv2 ఉపయోగించి # టెక్స్ట్. putText (చిత్రం, "హలో వరల్డ్", (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3) cv2.imshow ("హలో వరల్డ్", ఇమేజ్) cv2.nightCey (0) cv2.destroyAllWindows ()
కంప్యూటర్ విజన్ మరియు ఓపెన్సివి కవర్ చేయడానికి చాలా విస్తారమైన విషయాలు కానీ ఓపెన్సివి మరియు ఇమేజ్ ప్రాసెసింగ్ నేర్చుకోవడానికి ఈ గైడ్ మంచి ప్రారంభ స్థానం అవుతుంది.