82 lines
2.9 KiB
Python
82 lines
2.9 KiB
Python
|
import bpy, math, os, platform, subprocess, sys, re, shutil
|
||
|
|
||
|
def ShowMessageBox(message = "", title = "Message Box", icon = 'INFO'):
|
||
|
|
||
|
def draw(self, context):
|
||
|
self.layout.label(text=message)
|
||
|
|
||
|
bpy.context.window_manager.popup_menu(draw, title = title, icon = icon)
|
||
|
|
||
|
class TLM_Install_OpenCV(bpy.types.Operator):
|
||
|
"""Install OpenCV"""
|
||
|
bl_idname = "tlm.install_opencv_lightmaps"
|
||
|
bl_label = "Install OpenCV"
|
||
|
bl_description = "Install OpenCV"
|
||
|
bl_options = {'REGISTER', 'UNDO'}
|
||
|
|
||
|
def execute(self, context):
|
||
|
|
||
|
scene = context.scene
|
||
|
cycles = bpy.data.scenes[scene.name].cycles
|
||
|
|
||
|
print("Module OpenCV")
|
||
|
|
||
|
if (2, 91, 0) > bpy.app.version:
|
||
|
pythonbinpath = bpy.app.binary_path_python
|
||
|
else:
|
||
|
pythonbinpath = sys.executable
|
||
|
|
||
|
if platform.system() == "Windows":
|
||
|
pythonlibpath = os.path.join(os.path.dirname(os.path.dirname(pythonbinpath)), "lib")
|
||
|
else:
|
||
|
pythonlibpath = os.path.join(os.path.dirname(os.path.dirname(pythonbinpath)), "lib", os.path.basename(pythonbinpath))
|
||
|
|
||
|
ensurepippath = os.path.join(pythonlibpath, "ensurepip")
|
||
|
|
||
|
cmda = [pythonbinpath, ensurepippath, "--upgrade", "--user"]
|
||
|
pip = subprocess.run(cmda)
|
||
|
cmdc = [pythonbinpath, "-m", "pip", "install", "--upgrade", "pip"]
|
||
|
pipc = subprocess.run(cmdc)
|
||
|
|
||
|
if pip.returncode == 0:
|
||
|
print("Sucessfully installed pip!\n")
|
||
|
else:
|
||
|
|
||
|
try:
|
||
|
import pip
|
||
|
module_pip = True
|
||
|
except ImportError:
|
||
|
#pip
|
||
|
module_pip = False
|
||
|
|
||
|
if not module_pip:
|
||
|
print("Failed to install pip!\n")
|
||
|
if platform.system() == "Windows":
|
||
|
ShowMessageBox("Failed to install pip - Please start Blender as administrator", "Restart", 'PREFERENCES')
|
||
|
else:
|
||
|
ShowMessageBox("Failed to install pip - Try starting Blender with SUDO", "Restart", 'PREFERENCES')
|
||
|
return{'FINISHED'}
|
||
|
|
||
|
cmdb = [pythonbinpath, "-m", "pip", "install", "opencv-python"]
|
||
|
|
||
|
#opencv = subprocess.run(cmdb, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||
|
opencv = subprocess.run(cmdb)
|
||
|
|
||
|
if opencv.returncode == 0:
|
||
|
print("Successfully installed OpenCV!\n")
|
||
|
else:
|
||
|
print("Failed to install OpenCV!\n")
|
||
|
|
||
|
if platform.system() == "Windows":
|
||
|
ShowMessageBox("Failed to install opencv - Please start Blender as administrator", "Restart", 'PREFERENCES')
|
||
|
else:
|
||
|
ShowMessageBox("Failed to install opencv - Try starting Blender with SUDO", "Restart", 'PREFERENCES')
|
||
|
|
||
|
return{'FINISHED'}
|
||
|
|
||
|
module_opencv = True
|
||
|
print("Sucessfully installed OpenCV!\n")
|
||
|
ShowMessageBox("Please restart blender to enable OpenCV filtering", "Restart", 'PREFERENCES')
|
||
|
|
||
|
return{'FINISHED'}
|