ዝርዝር ሁኔታ:
ቪዲዮ: ለዲጂታል 3 ዲ ካርታ መሰረታዊ 3 ዲ ስካነር 5 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:30
በዚህ ፕሮጀክት ውስጥ የ 3 ዲ ፍተሻ እና የመልሶ ግንባታ መሰረታዊ መሠረቶችን በአነስተኛ ከፊል አውሮፕላኖች ቅኝት ላይ የተተገበረውን እና የርቀት መቆጣጠሪያ አውሮፕላኖችን ለማግኘት ወደ መቃኘት እና የመልሶ ግንባታ ስርዓቶች ሊዘረጋ የሚችልበትን እና የሠራተኛውን መሰረታዊ መሠረት እገልጻለሁ እና እገልጻለሁ። 3 ዲ አምሳያ። የሚወስዳቸው አውሮፕላን የሚበርባቸው ቦታዎች
የመጨረሻው ሀሳብ እንደ አንድ ዲጂታል ካርታ (እንደ ፕሮቴተየስ ፊልም) እንደ አንድ ዲጂታል ካርታ ለመጠቀም የአንዳንድ ቦታ ወይም አካባቢ ፣ ውጫዊም ሆነ ውስጣዊ የ 3 ዲ ቅኝት ማግኘት ነው።
ደረጃ 1
ሀሳቡ በ 3 ዲ ውስጥ የሚበርበትን የትኛውም ቦታ ምናባዊ ካርታ ዲጂታል ለማድረግ መላውን የ 3 ዲ ፍተሻ ስርዓት በርቀት ቁጥጥር በሚደረግ አውሮፕላን ላይ መጫን ነው ፣ ግን ለዚህ እኛ የጨረር ሶስት አቅጣጫዊ አሠራሩ ሥራ ከመጀመር ጀምሮ ጀምረናል። በጨረር (triangulation) መቃኘት ወይም 3 ዲ መልሶ ማቋቋም በመሠረቱ አንድ ነገር ሊቃኝ በሚችል ነገር ላይ የታቀደውን ሙሉውን የሌዘር ጭረት ለማግኘት የጨረር ጨረር በሚያመነጭ የፕሪዝም ውስጥ የሌዘር ጨረርን ማለፍን ያጠቃልላል ፣ እና ይህ የጨረር ትንበያ ከተገኘ በኋላ የወለል ንጣፍ ከቦታው ለመቃኘት ሥዕሉ በአንዳንድ የካሜራ ዓይነቶች ተይዞ ከተለቀቀው የሌዘር ጭረት ትንበያ ማእዘን አንፃር የተሠራውን አንግል ማወቅ ቢቻል ፣ ምክንያቱም እነዚህ ምስሎች እያንዳንዳቸው የታቀዱትን የሌዘር ጭረቶች ይይዛሉ። በእቃው ገጽ ላይ ፣ የሚቃኘውን የነገር ልኬት ባህሪያትን ለማውጣት ቀድመው ይዘጋጃሉ ፣ እና በእቃው ተሻጋሪው ክፍል ውስጥ የወለልውን መገለጫ ለማግኘት ከእቃው በላይ ያለውን ንጣፍ በቀላሉ በመቃኘት እና በመቀጠል ይያዙ የነገሩን ቀጣይ መስቀለኛ ክፍል የታቀደውን ንጣፍ ፣ ሁሉንም የታቀዱትን ጭረቶች አንድ ላይ ለማከል ፣ ከኦቶ ሁሉም መስቀለኛ ክፍሎች በፊት የፊቱ ገጽታ ባለ ሶስት አቅጣጫዊ ቅኝት እናገኛለን
ደረጃ 2
እኛ ዓላማችንን ስላወቅን ፣ ለመነሳት ቀጣዩ ደረጃ መጀመሪያ እግሮችዎን መሬት ላይ አጥብቀው መያዝ አለብዎት ፣ ስለሆነም የመሠረታዊውን ትክክለኛ አሠራር ለማረጋገጥ በመስመር 3 ዲ ስካነር የሙከራ ፕሮቶኮል መሬት ላይ ጀመርን። ከላይ በምስሉ ላይ እንደሚመለከቱት የ 3 ዲ ቅኝት ፣ እኔ ፒሲ ፣ OpenCV ፣ Glut of OpenGL ፣ የድር ካሜራ ፣ ሌዘር ፣ የሌዘር እርሻ ጀነሬተር (በዚህ ሁኔታ በማዞሪያ መስታወት በኩል) የኤሌክትሮኒክ መስመራዊ የመፈናቀል ስርዓት (በባቡር የተሠራ) እና ከአሮጌ አታሚ የተወሰደ ስርዓት) ዕቃዎቹ እንዲቃኙ ፣ ከእንጨት እና ከፕላስቲን እና በፎቶው ላይ እንደሚመለከቱት በኮምፒዩተር ላይ ካስቀመጥኩበት መሠረት ላይ- እኔ ከ OpenGL ሶስት ላይ ከግሉት ለማመንጨት እና ለማሳየት ችዬ ነበር- በተቃኘው እውነተኛ ነገር ላይ በመመስረት የመጠን ልኬት (በዚህ ሁኔታ አሻንጉሊት ሸረሪት)
ስለዚህ የአሠራር መርሆው ተግባራዊ መሆኑን እና ከበረራ ስርዓቱ ጋር በሚስማሙበት እና በሚላመድበት ጊዜ የሚበርበትን አካባቢ 3 ዲ ካርታ መቃኘት እና ማባዛት የበለጠ ግልፅ ነው።
ግን ይህ ስርዓት የሚበርሩባቸውን ቦታዎች ውጫዊ ገጽታን 3 ዲ ካርታዎችን ለማግኘት ብቻ ያገለግላል ???…
ደረጃ 3
የዋሻዎችን እና የቧንቧዎችን ውስጣዊ ገጽታ (ልክ እንደ ፕሮቴስየስ ፊልም ውስጥ) ይህ 3-ልኬት አሰሳ ስርዓት እንዲሁ እንደ ዋሻዎች ፣ ህንፃዎች ፣ ዋሻዎች ፣ ወዘተ ያሉ ትላልቅ እና ክፍት ያልሆኑ ነገሮች የውስጥ ገጽታ ባለ ሶስት አቅጣጫዊ ሞዴሎችን እንደገና ለመገንባት ያገለግላል። በትክክል ከተገለፀው እና በመሠረቱ የሚከተሉትን ያጠቃልላል
- ለመቃኘት በላዩ ላይ ያለውን የሌዘር ጭረት የእያንዳንዱን ትንበያ ፎቶ ያንሱ
- ከምስል ያጣሩ እና ያስወግዱ
- ከተለዋዋጭ የምስል ደፍ ጋር ቀለሙን ሁለትዮሽ ያድርጉት
- የእያንዳንዱን የሌዘር ትንበያ መስቀለኛ ክፍል የተያዘውን መገለጫ ለመለየት የጠርዝ መመርመሪያን ይተግብሩ
- እና ምናባዊ 3 ዲ ካርታ ላይ እንዲቃኝ እና እንደገና እንዲገነባ የእቃው መስቀለኛ ክፍል 3 ዲ ውክልና ተገቢውን ድንበር ይምረጡ።
- ከዚያ እነዚህ እርምጃዎች በእያንዳንዱ ንዑስ ክፍል ያለማቋረጥ በሚገመቱት በሌዘር ጭረቶች ንዑስ መንገድ ለተነሱት እያንዳንዱ ፎቶ በቀላሉ ይደጋገማሉ።
በካርታው ላይ ባለው ብዙ የመስቀለኛ ክፍል ተወካዮች የተቋቋመ የነጥብ ደመና እስኪያገኝ ድረስ በመስቀል ክፍሎች ውክልና ንብርብር በተከታታይ ይታከላል።
ደረጃ 4
ከዚያ ላዩን የሌዘር ቁርጥራጮችን ግምቶች ለምስል ማቀነባበሪያ ፕሮግራሞችን አቀርባለሁ። እና በተንሰራፋው ባለ ሶስት አቅጣጫዊ የካርታ አምሳያ ውስጥ የእነዚህ አነቃቂ ተሻጋሪ ውክልናዎች ምናባዊ 3 ዲ መልሶ ግንባታ
የምስል ሂደት;
n
#አካትት #አካትት "cv.h" #አካትት "highgui.h" #አካታች // #ያካትታሉ #አካትት #አካትት
ቻር f = 0; የቻር ስም = {"0.jpg"}; int n = 0 ፣ s ፣ x ፣ y; CvScalar sp; FILE *NuPu;
ባዶ የጽሑፍ ነጥቦች () {ቻር ቡፌክስ [33] ፣ ቋት [33] ፤ ኢዮዋ (x ፣ bufferx ፣ 10); ኢዮዋ (y ፣ buffery ፣ 10); fprintf (NuPu ፣ bufferx); fprintf (NuPu ፣ “\ t”); fprintf (NuPu ፣ buffery); fprintf (NuPu ፣ “\ n”) ፤ }
ባዶ ማስታወሻ ደብተር () {NuPu = fopen («NuPu.txt» ፣ «w»)) fseek (ኑP ፣ 0 ፣ 0); fprintf (NuPu ፣ “NP:”) ፤ fprintf (NuPu ፣ “\ n”) ፤ }
int main () {char argstr [128]; noteblockInit (); cout << "ተክለያ!…:" f; ስም [0] = ረ; ኩት <
IplImage* img0 = cvLoadImage ("00.jpg", 0); (f == '0') {ለ (y = 1; yheight-2; y ++) {ለ (x = 1; xwidth-2; x ++) {sp = cvGet2D (img0, y, x); ከሆነ (sp.val [0]> 50) {Writepoints () ፤ n ++;}}}} ሌላ {ለ (y = 1; yheight-2; y ++) {ለ (x = 1 ፣ xwidth-2 ፣ x ++) { sp = cvGet2D (img1 ፣ y ፣ x); ከሆነ (sp.val [0]> 50) {Writepoints () ፤ n ++;}}}} ቻር ቋት [33]; ኢዮዋ (n ፣ ቋት ፣ 10); fprintf (NuPu ፣ “Fin:”); fprintf (NuPu ፣ ቋት); fprintf (NuPu ፣ “\ n”) ፤ fclose (NuPu);
cvWaitKey (0); //_execlp ("calc.exe "," calc.exe ", argstr, NULL); cvDestroyAllWindows (); cvReleaseImage (& ምስል); cvReleaseImage (& img); cvReleaseImage (& img0); cvReleaseImage (& img1); cvReleaseImage (& img2); መመለስ 0; }
3 ዲ መልሶ ግንባታ;
#አካት //////////////////////// #ifdef _APPLE_ #ይካተቱ #ሌላ #ይካተቱ
#define violeta glColor3f (1, 0, 1) #defiine azul glColor3f (0, 0, 1) #define turkeza glColor3f (0, 1, 1) #define verde glColor3f (0, 1, 0) #define amarillo glColor3f (1, 1, 0) #define naranja glColor3f (1,.3, 0) #define rojo glColor3f (1, 0, 0) የስም ቦታ STD ን በመጠቀም ፤ int s ፣ Boton = 1 ፣ Pulbut = 1; ተንሳፋፊ mx = 0 ፣ የእኔ = 0 ፣ mtx = 0 ፣ mty = 0 ፣ mtz = -5.0; const int Avance = 1; ሕብረቁምፊ መስመር ፣ ኦክስ; ቻር ካራክተር = 'ኤች'; FILE *NuPu; int NP ፣ h ፣ w; ተንሳፋፊ G = 0 ፣ n = 0 ፣ cx [5000] ፣ cy [5000] ፣ x ፣ y ፣ ax ፣ ay ፣ az; int ቅርጸ -ቁምፊ = (int) GLUT_BITMAP_8_BY_13; የማይንቀሳቀስ ቻር መለያ [100]; የቻር ቋት [3]; GLfloat anguloCuboX = 0.0f; GLfloat anguloCuboY = 0.0f; GLfloat anguloEsfera = 0.0f; GLint ancho = 500; GLint alto = 500; int hazPerspectiva = 0; ባዶነት ቅርፅ (int ስፋት ፣ int ቁመት) {glViewport (0 ፣ 0 ፣ ስፋት ፣ ቁመት); glMatrixMode (GL_PROJECTION); glLoadIdentity (); (hazPerspectiva) gluPerspective (23.0f ፣ (GLfloat) ስፋት/(GLfloat) ቁመት ፣ 1.0f ፣ 20.0f) ከሆነ። ሌላ glOrtho (-1 ፣ 1 ፣ -1 ፣ 1 ፣ -10 ፣ 10); glMatrixMode (GL_MODELVIEW); መልህቅ = ስፋት; አልቶ = ቁመት; } ባዶነት Kolorear (int K) {ሂፕ ተንሳፈፈ; x = (cx [s] -320)/480; y = (cy [s] -240)/640; ሂፕ = ስኩዌር (ዱቄት (x ፣ 2)+ዱቄት (y ፣ 2)); ከሆነ ((ሂፕ> = 0) && (ሂፕ =.07) && (ሂፕ =.14) && (ሂፕ =.21) && (ሂፕ =.28) && (ሂፕ =.35) && (ሂፕ =.42) && (ሂፕ <=. 49)) {violeta;}} ባዶ DraNuPu (ባዶ) {glColor3f (1, 1, 1); glBegin (GL_LINES); glVertex3f (.2, 0, 0); glVertex3f (-. 2, 0, 0); glVertex3f (0,.2, 0); glVertex3f (0 ፣ -2 ፣ 0); glEnd (); ሮጆ; glBegin (GL_POINTS); ለ (n = 0; n <10; n ++) {ለ (s = 0; s ባዶ setOrthographicProjection () {glMatrixMode (GL_PROJECTION); glPushMatrix (); glLoadIdentity (); gluOrtho2D (0, w, 0, h); glScalef (1 ፣ -1 ፣ 1) ፤ glTranslatef (0 ፣ -h ፣ 0) ፤ glMatrixMode (GL_MODELVIEW) ፤} ባዶ መስጠት ቢትማፕ ስትሪንግ (ተንሳፋፊ x ፣ ተንሳፋፊ y ፣ ባዶ *ቅርጸ -ቁምፊ ፣ ቻር *ሕብረቁምፊ) {char *c; glRasterPos2f (x ፣ y) ፤ ለ (c = string; *c! = '\ 0'; c ++) {glutBitmapCharacter (font, *c);}} ባዶ ማሳያ () {// mx = 468; itoa (mx, buffer, 10);; s <3; s ++) {glutBitmapCharacter (GLUT_BITMAP_TIMES_ROMAN_24 ፣ ቋት [ዎች]);} glTranslatef (mty, -mtx, mtz); glRotatef (mx, 1.0f, 0.0f, 0.0f); glRotatef (የእኔ ፣ 0.0f ፣ 1.0f, 0.0f); drawNuPu (); /*glColor3f(1.0, 1.0, 1.0); glRasterPos2f (.5,.5); // glutBitmapString (GLUT_BITMAP_TIMES_ROMAN_24 ፣ “ጤና ይስጥልኝ ጽሑፍ”); glutBitmapCharacter (GLU_B);* / /*glColor3f (1. 0f ፣ 1.0f ፣ 1.0f); setOrthographicProjection (); glPushMatrix (); glLoadIdentity (); የ BitmapString (30 ፣ 15 ፣ (ባዶ *) ቅርጸ-ቁምፊ ፣ “GLUT አጋዥ --- ---_ ------ _@ 3D ቴክ”); */ glFlush (); glutSwapBuffers (); anguloCuboX+= 0.1f; anguloCuboY+= 0.1f; anguloEsfera+= 0.2f; } ባዶ ባዶ () {glClearColor (0, 0, 0, 0); glEnable (GL_DEPTH_TEST) ፤ መልህቅ = 500; አልቶ = 500; } ባዶነት leer () {ifstream myfile ("A:/Respaldo sept 2016/D/Respaldos/Respaldo compu CICATA abril 2015/usb1/rekostruccion 3D en Especialidad CICATA/Software/Reconstruccion 3D/R3d_0 / bin/Debug/NuPu.txt")); ከሆነ (myfile.is_open ()) {s = 0; ሳለ (getline (myfile ፣ line)) {if ((line [0]! = 'N') && (line [0]! = 'F'))) {Aux = line; መስመር [0] = 48; መስመር [1] = 48; መስመር [2] = 48; መስመር [3] = 48; cy [s] = atoi (line.c_str ()); ኦክስ [4] = 48; ኦክስ [5] = 48; ኦክስ [6] = 48; // ኦክስ [7] = 48; cx [s] = atoi (Aux.c_str ()); s ++; }} myfile.close (); } ሌላ cout <1780) NP = 1700; ኮት <ባዶ ባዶ ፈት () {ማሳያ (); } ባዶ ቁልፍ ሰሌዳ (ያልተፈረመ ቻር ቁልፍ ፣ int x ፣ int y) {ማብሪያ (ቁልፍ) {case 'p': case 'P': hazPerspectiva = 1; ዳግም ቅርፅ (መልህቅ ፣ አልቶ); ሰበር; case 'o': case 'O': hazPerspectiva = 0; ዳግም ቅርፅ (መልህቅ ፣ አልቶ); ሰበር; ጉዳይ 27: // ማምለጫ መውጫ (0); ሰበር; }} ባዶ ባዶ ራቶን (int አዝራር ፣ int state ፣ int x ፣ int y) { / * GLUT_LEFT_BUTTON 0 GLUT_MIDDLE_BUTTON 1 GLUT_RIGHT_BUTTON 2 GLUT_DOWN 0 GLUT_UP 1 * / Boton = button; Ulልቡት = ግዛት; // mx = y; ማሳያ (); } ባዶ ባዶ ራትሞቭ (int x ፣ int y) {if ((Boton == 0) & (Pulbut == 0)) {mx = y; የእኔ = x; } ከሆነ ((Boton == 2) & (Pulbut == 0)) {mtx = (y/200) -1; mty = (x/200) -1; } ከሆነ ((Boton == 1) & (Pulbut == 0)) {mtz =-(y/40) -5; } ማሳያ (); } int main (int argc ፣ char ** argv) { /*glutAddMenuEntry () glutAddSubMenu () glutAttachMenu () glutCreateMenu () glutSetMenu () glutStrokeCharacter () glutStrokeLength ()* / /*glReadPixels () አንድ የፒክሴሎች እገዳ ያንብቡ። የክፈፍ ቋት glGetPixelMapfv () የተገለጸውን የፒክሰል ካርታ መመለስ glGetPixelMapuiv () የተገለጸውን የፒክሰል ካርታ glGetPointerv () የተገለጸውን ጠቋሚ አድራሻ ይመልሳል።*/ Init (); leer (); glutInit (& argc ፣ argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowPosition (50 ፣ 50); glutInitWindowSize (መልህቅ ፣ አልቶ); glutCreateWindow ("ኩቦ 1"); በ ዉስጥ(); glutDisplayFunc (ማሳያ); glutReshapeFunc (ዳግም ቅርፅ); glutIdleFunc (ስራ ፈት); glutMouseFunc (raton); glutMotionFunc (ratmov); glutKeyboardFunc (የቁልፍ ሰሌዳ); glutMainLoop (); መመለስ 0; }
ደረጃ 5
ለጊዜው ማቆም አለብኝ! … ግን በሚቀጥለው ምዕራፍ ውስጥ ቀድሞውኑ በአንዳንድ የርቀት መቆጣጠሪያ አውሮፕላን ላይ በተጫነ ወይም በአንዳንድ የሸረሪት ሮቦቶች ላይ የዋሻዎችን የውስጥ ክፍል ለመቃኘት በራሴ እንጆሪ ፓይ 3 ወይም በጄትሰን ናኖቦርድ ላይ እንደምተገብረው ቃል እገባለሁ።
የሚመከር:
አስማት ሄርኩለስ - ለዲጂታል LED ዎች ነጂ -10 ደረጃዎች
አስማት ሄርኩለስ - ለዲጂታል ኤልኢዲዎች ሾፌር - ፈጣን አጠቃላይ እይታ - የአስማት ሄርኩለስ ሞዱል በታዋቂው እና በቀላል SPI መካከል ወደ NZR ፕሮቶኮል መቀየሪያ ነው። የሞጁሉ ግብዓቶች የ +3.3 ቪ መቻቻል አላቸው ፣ ስለሆነም በ +3.3 ቪ ቮልቴጅ ውስጥ የሚሰሩ ማንኛውንም ማይክሮ መቆጣጠሪያዎችን በደህና ማገናኘት ይችላሉ።
ለዲጂታል አነስተኛነት የስልክ ማግለል !: 5 ደረጃዎች (ከስዕሎች ጋር)
ለዲጂታል አነስተኛነት የስልክ ኳራንቲመር! ስልክ ማግለል ያስፈልገኝ ነበር። በተጨማሪም ፣ ለምን ያህል ጊዜ እንደተተውት ይከታተላል
ለዲጂታል ካሜራዎች ውጫዊ የ Li-ion ባትሪ 12 ደረጃዎች (ከስዕሎች ጋር)
ለዲጂታል ካሜራዎች ውጫዊ የ Li-ion ባትሪ-ከካሜራዎ ጋር ከሚመጡት የ LiPo ባትሪዎች ከፍ ያለ አቅም ስላላቸው ውጫዊ ባትሪ ተጨማሪ ፎቶዎችን እና ቪዲዮዎችን ለማንሳት ይጠቅማል። እንዲሁም አንዳንድ ጊዜ ሊጠቀሙባቸው በሚችሏቸው የመጠባበቂያ ካሜራዎችዎ ውስጥ ለማግኘት አስቸጋሪ የሆኑ ባትሪዎችን መተካት ይችላሉ
Yaesu FT-100 ፒሲ አገናኝ በይነገጽ ለዲጂታል ሁነታዎች 3 ደረጃዎች
Yaesu FT-100 ፒሲ አገናኝ በይነገጽ ለዲጂታል ሁነታዎች-ለ Yaesu FT-100 የፒሲ አገናኝ በይነገጽ ለመገንባት መመሪያዎቹን እዚህ አቀርባለሁ። ይህ በይነገጽ የኤችአይኤም ዲጂታል ሁነቶችን (FT8 ፣ PSK31 ወዘተ) ለማንቀሳቀስ የድምፅ ምልክቶችን ከድምጽ ካርድ እንዲያስተላልፉ እና እንዲቀበሉ ይፈቅድልዎታል። ተጨማሪ መረጃ ይገኛል
ሚሮሎ አውታረ መረብ የ LED ማትሪክስ ማሳያ ለዲጂታል ምልክት 22 ደረጃዎች (ከስዕሎች ጋር)
ሚሮሎ ኔትወርኪድ የ LED ማትሪክስ ማሳያ ለዲጂታል ምልክት - ዲጂታል ምልክት ስለ መጪ ፓነሎች ጎብ visitorsዎችን ለማሳወቅ በክስተቶች ላይ ጠቃሚ ሊሆን ይችላል ፣ በፕሮግራሙ ውስጥ የተደረጉ ለውጦችን ወይም በተለዋዋጭ መረጃን ይሰጣል። ለዚያ የ LED ማትሪክስ ማሳያዎችን በመጠቀም መልእክቶቹ ከሩቅ እንኳን እንዲነበቡ እና ዓይንን የሚስብ ትኩረትን የሚስብ ነው