рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 3 рдбреА рдореЙрдбрд▓ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдПрдХ рдмрд╛рд░ рдореБрдЭреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдФрд░ рдиреАрдЪреЗ рдХреЗ 3 рдбреА рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЖрдЬ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкрд╛рдпрдерди рдХреЗ 3 рдбреА рдореЙрдбрд▓ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ 3. рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ: рдмреНрд▓реЗрдВрдбрд░ рдкрд╛рдЗрдерди рдЕрдкреА, рд╡рд┐рдлреНрдереЙрди ... рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбрд▓ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред



тЖТ рдЬреАрдердм рд╕реЗ рд▓рд┐рдВрдХ

рдПрд╕рдЯреАрдПрд▓


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рдЯреАрдПрд▓ рдкреНрд░рд╛рд░реВрдк (рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп 3 рдбреА рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк) рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреВрд░реЗ рдореЙрдбрд▓ рдореЗрдВ рдХрдИ рддреНрд░рд┐рдХреЛрдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдирдХреЗ рдХреЛрдиреЗ рдХреЗ 3-рдЖрдпрд╛рдореА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВред

рдПрд╕рдЯреАрдПрд▓ рдлрд╝рд╛рдЗрд▓
рдареЛрд╕
рдкрд╣рд▓реВ рд╕рд╛рдорд╛рдиреНрдп 0 0 0
рдмрд╛рд╣рд░реА рд▓реВрдк
рд╢реАрд░реНрд╖ реж реж реж
рд╢реАрд░реНрд╖ 1 1 0
рд╢реАрд░реНрд╖ 1 1 0
endloop
endfacet
рдкрд╣рд▓реВ рд╕рд╛рдорд╛рдиреНрдп 0 0 0
рдмрд╛рд╣рд░реА рд▓реВрдк
рд╢реАрд░реНрд╖ 1 1 0
рд╢реАрд░реНрд╖ реж реж реж
рд╡рд░реНрдЯреЗрдХреНрд╕ 0 1 0
endloop
endfacet
endsolid

рдЙрджрд╛рд╣рд░рдг


рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдлреЛрдЯреЛ рдореЗрдВ рдкрд┐рдХреНрд╕рд▓ рдХреА рдЪрдордХ рд╕реЗ рдПрдХ 3D рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВрдиреЗ рдпрд╣ рдлреЛрдЯреЛ рдиреАрдЪреЗ рд▓рд┐рдпрд╛ред



рдЫрд╡рд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдереЛрдбрд╝рд╛ рдзреБрдВрдзрд▓рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдСрдкрдиреЗрдВрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрдордХ рдореЗрдВ рддреЗрдЬ рдЫрд▓рд╛рдВрдЧ рди рд▓рдЧреЗ)ред

import cv2 import numpy as np cd_1=['0', '0', '0']#      1  cd_2=['0', '0', '0']#      2  cd_3=['0', '0', '0']#      3  file_stl='new.stl' file_im=r'C:\Users\allex\Pictures\2.jpg'#    op_stl=open(file_stl, 'w') op_im=cv2.imread(file_im) gray = cv2.cvtColor(op_im, cv2.COLOR_BGR2GRAY)#    blur = cv2.GaussianBlur(gray,(0,0),1)#      res=cv2.resize(blur,(320,240))#     320*240 

рдиреАрдЪреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рддреНрд░рд┐рдХреЛрдг рдХреЗ рдХреЛрдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде 3 рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдкрд░ 1 рддреНрд░рд┐рдХреЛрдгреАрдп рдЪреЗрд╣рд░рд╛ рд▓рд┐рдЦрддрд╛ рд╣реИред

 def face_file_stl(cd_1, cd_2, cd_3): op_stl.write("facet normal 0 0 0") op_stl.write("outer loop") op_stl.write("vertex " + " ".join(cd_1))#    1  op_stl.write("vertex " + " ".join(cd_2))#    2  op_stl.write("vertex " + " ".join(cd_3))#    3  op_stl.write("endloop \n\tendfacet") 

рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ 3 рдбреА рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреЗ рдХреЛрдиреЗ рдХреЗ рд╕рд╣реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдмрдирд╛рдирд╛ рд╣реИред


рдХреЛрдб рдХрд╛ рд╡рд╣ рдЯреБрдХрдбрд╝рд╛ рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдмрдирд╛рддрд╛ рд╣реИред

 for i in range(size.shape[1]):#    for k in range(size.shape[0]-1):#    if i!=size.shape[1]-1: try: #making the first triangls for relief cd_1=[str(i), str(k), str(blur[k, i]) ] cd_2=[str(i + 1), str(k), str(blur[k, i+1]) ] cd_3=[str(i+1), str(k+1), str(blur[k+1,i+1])] except: print('er') face_file_stl(cd_1, cd_2, cd_3) try: #making the second triangls for relief cd_1=[str(i), str(k), str(blur[k, i]) ] cd_2=[str(i+1), str(k+1), str(blur[k+1, i+1])] cd_3=[str(i), str(k+1), str(blur[k+1,i]) ] except: print('er') face_file_stl(cd_1, cd_2, cd_3) 

3D рдореЙрдбрд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛
рджрд░рдЕрд╕рд▓, рдпрд╣ рд╕рдм рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдкреВрд░рд╛ рдХреЛрдб
 import cv2 cd_1=['0', '0', '0']#      1  cd_2=['0', '0', '0']#      2  cd_3=['0', '0', '0']#      3  file_stl='new.stl' file_im=r'C:\Users\allex\Pictures\22.jpg'#    op_stl=open(file_stl, 'w') op_im=cv2.imread(file_im) gray = cv2.cvtColor(op_im, cv2.COLOR_BGR2GRAY)#    blur = cv2.GaussianBlur(gray,(0,0),1)#      blur=cv2.resize(blur,(320,240)) x=0 y=0 file='STL_project-1.stl' o_1="\n\t" o_2="\n\t\t" o_3="\n\t\t\t" op_stl.write("solid") def face_file_stl(cd_1, cd_2, cd_3): op_stl.write(o_1+"facet normal 0 0 0") op_stl.write(o_2 + "outer loop") op_stl.write(o_3 + "vertex " + " ".join(cd_1))#    1  op_stl.write(o_3 + "vertex " + " ".join(cd_2))#    2  op_stl.write(o_3 + "vertex " + " ".join(cd_3))#    3  op_stl.write(o_2 + "endloop \n\tendfacet") #making the first triangls for base for i in range(blur.shape[1]-1): cd_1=[str(i),"0","0"] cd_3=[str(i+1),str(blur.shape[0]-1),"0"] cd_2=[str(i),str(blur.shape[0]-1),"0"] face_file_stl(cd_1, cd_2, cd_3) #making the second triangls for base for i in range(blur.shape[1]-1): cd_1=[str(i+1),str(blur.shape[0]-1),"0"] cd_3=[str(i),"0","0"] cd_2=[str(i+1),"0","0"] face_file_stl(cd_1, cd_2, cd_3) #base has done for i in range(blur.shape[1]): if i%30==0: print(i) for k in range(blur.shape[0]-1):#making the first triangls for relief if i!=blur.shape[1]-1: try: cd_1=[str(i), str(k), str(blur[k, i]) ] cd_2=[str(i + 1), str(k), str(blur[k, i+1]) ] cd_3=[str(i+1), str(k+1), str(blur[k+1,i+1])] except: print('er') face_file_stl(cd_1, cd_2, cd_3) #for j in range(blur.shape[1]-1):#making the second triangls for relief try: cd_1=[str(i), str(k), str(blur[k, i]) ] cd_2=[str(i+1),str(k+1), str(blur[k+1, i+1])] cd_3=[str(i), str(k+1), str(blur[k+1,i]) ] except: print('er') face_file_stl(cd_1, cd_2, cd_3) #relief has done #making the first triangls for right side for i in range(blur.shape[1]): if i!=blur.shape[1]-1: try: cd_1=[str(i),str(blur.shape[0]-1),"0"] cd_3=[str(i+1),str(blur.shape[0]-1),str(blur[blur.shape[0]-1, i+1])] cd_2=[str(i),str(blur.shape[0]-1),str(blur[blur.shape[0]-1, i])] except: print("er") face_file_stl(cd_1, cd_2, cd_3) #making the second triangls for right side try: cd_1=[str(i),str(blur.shape[0]-1),"0"] cd_3=[str(i+1),str(blur.shape[0]-1),"0"] cd_2=[str(i+1),str(blur.shape[0]-1),str(blur[blur.shape[0]-1, i+1])] except: print("er") face_file_stl(cd_1, cd_2, cd_3) if i!=blur.shape[1]-1: try: cd_1=[str(i),'0',"0"] cd_2=[str(i+1),'0',str(blur[0, i+1])] cd_3=[str(i),'0',str(blur[0, i])] except: print("er") face_file_stl(cd_1, cd_2, cd_3) #making the second triangls for right side try: cd_1=[str(i),'0',"0"] cd_2=[str(i+1),'0',"0"] cd_3=[str(i+1),'0',str(blur[0, i+1])] except: print("er") face_file_stl(cd_1, cd_2, cd_3) for i in range(blur.shape[0]): if i!=blur.shape[0]-1: try: cd_1=['0',str(i),"0"] cd_3=['0',str(i+1),str(blur[ i+1,0])] cd_2=['0',str(i),str(blur[i,0])] except: print("er") face_file_stl(cd_1, cd_2, cd_3) #making the second triangls for right side try: cd_1=['0',str(i),"0"] cd_3=['0',str(i+1),"0"] cd_2=['0',str(i+1),str(blur[i+1,0])] except: print("er") face_file_stl(cd_1, cd_2, cd_3) try: cd_2=[str(blur.shape[1]-1),str(i),"0"] cd_3=[str(blur.shape[1]-1),str(i+1),str(blur[ i+1,blur.shape[1]-1])] cd_1=[str(blur.shape[1]-1),str(i),str(blur[i,blur.shape[1]-1])] except: print("er") face_file_stl(cd_1, cd_2, cd_3) #making the second triangls for right side try: cd_2=[str(blur.shape[1]-1),str(i),"0"] cd_3=[str(blur.shape[1]-1),str(i+1),"0"] cd_1=[str(blur.shape[1]-1),str(i+1),str(blur[i+1,blur.shape[1]-1])] except: print("er") face_file_stl(cd_1, cd_2, cd_3) op_stl.write("\nendsolid" ) op_stl.close() print('end') 

Source: https://habr.com/ru/post/hi411899/


All Articles