Libraryの追加はIDE参照
OpenCV
[ 動画 ]
Pygame
Pyautogui
pywin32( Windows APIも参照 )
[ FileSystemObject ]
[ WScript.Network ]
[ win32gui ]
[ win32api ]
pythonnet
OpenCV
#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
# 入力画像を読込
img = cv2.imread('C:/Temp/test01.png') #ファイル名は半角英数
#
# 画像の表示
cv2.imshow('image',img)
#
# キーボード入力
cv2.waitKey(0)
# 現在までに作られた全てのウィンドウを閉じる
cv2.destroyAllWindows()
#
# 画像の書込
cv2.imwrite('C:/Temp/write.png', img)
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# パプリカの画像はfood.foto(フード ドット フォト)の画像を利用させて頂きました。
#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
# 入力画像を読込
img = cv2.imread('C:/Temp/test01.png') #ファイル名は半角英数
#
# 画像サイズの取得
height = img.shape[0]
width = img.shape[1]
# 横*1、縦*0.5 に変更
img2 = cv2.resize(img , (int(width*1), int(height*0.5)), interpolation = cv2.INTER_AREA)
#
# 画像の表示
cv2.imshow('LO6.4.2.3(x64)',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# interpolation(補間方法)は省略可能で、以下がある。デフォルトの補間方法は cv2.INTER_LINEAR。
# 但し、省略した場合、resize後、色が変化する場合もある。
# 縮小には cv2.INTER_AREA
# 拡大には cv2.INTER_CUBIC (処理が遅い)又はcv2.INTER_LINEAR(早い)
# が適している。
#
# INTER_LINEAR bilinear(双線型) interpolation
# INTER_NEAREST nearest neighbor(近傍) interpolation
# INTER_CUBIC bicubic(バイキュービック) interpolation
# INTER_AREA resampling using pixel area relation
# INTER_LANCZOS4 Lanczos interpolation over 8x8 neighborhood
#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oShow(arg2, arg1):
cv2.imshow(arg2,arg1)
cv2.waitKey(0)
cv2.destroyAllWindows()
def oTest():
try:
# Load two images
img = cv2.imread('C:/Temp/test01.png')
# 形状を取得する為グレースケール変換。Colorのままではエラー
temp = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# 形状取得
rows, cols = temp.shape
#
M = np.float32([[1,0,100],[0,1,50]])
dst = cv2.warpAffine(img,M,(cols,rows))
oShow('warpAffine', dst)
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oShow(arg2, arg1):
cv2.imshow(arg2,arg1)
cv2.waitKey(0)
cv2.destroyAllWindows()
def oTest():
try:
# Load two images
img = cv2.imread('C:/Temp/test01.png')
# 形状を取得する為グレースケール変換
temp = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# 形状取得
rows, cols = temp.shape
#
M = cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
dst = cv2.warpAffine(img,M,(cols,rows))
oShow('getRotationMatrix2D', dst)
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oShow(arg2, arg1):
cv2.imshow(arg2,arg1)
cv2.waitKey(0)
cv2.destroyAllWindows()
def oTest():
try:
# Load two images
img = cv2.imread('C:/Temp/test01.png')
# 線を追加
oColor = (255, 255, 255) #white = (Blue, Green, Red)
oThick = 2 #文字の太さ
pts = np.array(((10, 100), (300, 100)))
cv2.polylines(img, [pts], True, oColor, oThick)
pts1 = np.array(((10, 150), (300, 150)))
cv2.polylines(img, [pts1], True, oColor, oThick)
pts2 = np.array(((10, 200), (300, 200)))
cv2.polylines(img, [pts2], True, oColor, oThick)
pts3 = np.array(((10, 250), (300, 250)))
cv2.polylines(img, [pts3], True, oColor, oThick)
pts4 = np.array(((50, 50), (50, 250)))
cv2.polylines(img, [pts4], True, oColor, oThick)
pts5 = np.array(((100, 50), (100, 250)))
cv2.polylines(img, [pts5], True, oColor, oThick)
pts6 = np.array(((150, 50), (150, 250)))
cv2.polylines(img, [pts6], True, oColor, oThick)
pts7 = np.array(((200, 50), (200, 250)))
cv2.polylines(img, [pts7], True, oColor, oThick)
oShow('warpAffine', img)
#
# 形状を取得する為グレースケール変換
temp = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# 形状取得
rows,cols = temp.shape
pts1 = np.float32([[50,50],[200,50],[50,200]])
pts2 = np.float32([[10,100],[200,50],[100,250]])
#
M = cv2.getAffineTransform(pts1,pts2)
dst = cv2.warpAffine(img,M,(cols,rows))
#
oShow('warpAffine', dst)
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')

#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oShow(arg2, arg1):
cv2.imshow(arg2,arg1)
cv2.waitKey(0)
cv2.destroyAllWindows()
def oTest():
try:
# Load two images
img = cv2.imread('C:/Temp/shougi.png')
# 線を追加
oColor = (255, 0, 0) #(Blue, Green, Red)
oThick = 3 #文字の太さ
pts = np.array(((93, 23), (20,130), (212, 160), (230,32)))
cv2.polylines(img, [pts], True, oColor, oThick)
oShow('warpPerspective', img)
#
# 形状を取得する為グレースケール変換
temp = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# 形状取得
rows,cols,ch = img.shape
pts1 = np.float32([[93,23],[20,130],[212,160],[230,32]])
pts2 = np.float32([[50,50],[50,250],[250,250],[250,50]])
#
M = cv2.getPerspectiveTransform(pts1,pts2)
#
dst = cv2.warpPerspective(img,M,(300,300))
#
oShow('warpPerspective', dst)
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')

将棋盤の画像はPotockより
#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
# 入力画像を読込
img = cv2.imread('C:/Temp/test01.png') #ファイル名は半角英数
#
oTxt = 'Paprika'
oPos = (5, 50) #文字の左下の位置(x,y)
oFont = cv2.FONT_HERSHEY_PLAIN
oSize = 4 #フォントサイズ
oColor = (255, 255, 255) #white = (Blue, Green, Red)
oBold = 5 #文字の太さ
oLineType = cv2.LINE_AA # cv2.LINE_AAが奨励
#
cv2.putText(img, oTxt, oPos, oFont, oSize, oColor, oBold, oLineType)
#
# 画像の表示
cv2.imshow('LO6.4.3.2(x64)',img)
#
# キーボード入力
cv2.waitKey(0)
# 現在までに作られた全てのウィンドウを閉じる
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# 【 Font 】
# CV_FONT_HERSHEY_SIMPLEX, CV_FONT_HERSHEY_PLAIN, CV_FONT_HERSHEY_DUPLEX, CV_FONT_HERSHEY_COMPLEX, CV_FONT_HERSHEY_TRIPLEX, CV_FONT_HERSHEY_COMPLEX_SMALL, CV_FONT_HERSHEY_SCRIPT_SIMPLEX, CV_FONT_HERSHEY_SCRIPT_COMPLEX
#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
# 入力画像を読込
img = cv2.imread('C:/Temp/test01.png') #ファイル名は半角英数
#
oColor = (255, 255, 255) #white = (Blue, Green, Red)
oThick = 5 #文字の太さ
#
pts = np.array(((80, 130), (65, 150), (80, 180), (110,180), (125,150), (110,130))) #多角形のポイントの座標
cv2.polylines(img, [pts], True, oColor, oThick)
#
# 画像の表示
cv2.imshow('LO6.4.3.2(x64)',img)
#
# キーボード入力
cv2.waitKey(0)
# 現在までに作られた全てのウィンドウを閉じる
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# 多角形以外はnote.nkmk.me参照
#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
# 描写フレームの作成←注:メインルーチンに入れると追加描写されない
img = np.zeros((600,600,3), np.uint8)
cv2.namedWindow(winname='mouse_drawing')
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def draw_circle(event,x,y,flags,param):
#
if event == cv2.EVENT_LBUTTONDOWN: # マウスの左クリックのイベント
cv2.circle(img,(x,y),100,(0,255,0),-1)
elif event == cv2.EVENT_RBUTTONDOWN: # マウスの右クリックのイベント
cv2.circle(img,(x,y),100,(0,0,255),-1)
#
def oTest():
try:
cv2.setMouseCallback('mouse_drawing',draw_circle)
while True:
cv2.imshow('mouse_drawing',img)
if cv2.waitKey(20) & 0xFF == 27: # ESCを押したら画面を閉じる
break
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# マウスイベントは画像情報処理研究室参照

#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def nothing(x):
pass
#
def oTest():
try:
# Create a black image, a window
img2 = np.zeros((180,300,3), np.uint8)
#
cv2.namedWindow('Color Picker')
#
# create trackbars for color change
cv2.createTrackbar('R','Color Picker',0,255,nothing)
cv2.createTrackbar('G','Color Picker',0,255,nothing)
cv2.createTrackbar('B','Color Picker',0,255,nothing)
#
# create switch for ON/OFF functionality
switch = '0 : OFF \n1 : ON'
cv2.createTrackbar(switch, 'Color Picker',0,1,nothing)
#
while(1):
cv2.imshow('image2',img2)
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
# get current positions of four trackbars
r = cv2.getTrackbarPos('R','Color Picker')
g = cv2.getTrackbarPos('G','Color Picker')
b = cv2.getTrackbarPos('B','Color Picker')
s = cv2.getTrackbarPos(switch,'Color Picker')
#
if s == 0:
img2[:] = 0
else:
img2[:] = [b,g,r]
#
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def oTest():
try:
img = cv2.imread('C:/Temp/test01.png')
area = img[80:130, 130:230] #[y:y, x:x]
img[180:230, 130:230] = area
#
cv2.imshow('image',img)
#
# キーボード入力
cv2.waitKey(0)
# 現在までに作られた全てのウィンドウを閉じる
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def oTest():
try:
img = cv2.imread('C:/Temp/test01.png')
#色成分を分割
b,g,r = cv2.split(img)
# Blue成分を0
img[:,:,0] = 0
cv2.imshow('Blue=0',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#
# 元の色成分に戻し、Green成分を0
img = cv2.merge((b,g,r))
img[:,:,1] = 0
cv2.imshow('Green=0',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#
# 元の色成分に戻し、Red成分を0
img = cv2.merge((b,g,r))
img[:,:,2] = 0
cv2.imshow('Red=0',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# 色成分の説明は右記サイトが詳しい⇒teratail


#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def oTest():
try:
img = cv2.imread('C:/Temp/test01.png')
area = img[80:130, 130:230] #[y:y, x:x]
#
# 境界に線を追加 (対象画像,境界の各方向に対する線幅top, bottom, left, right,borderType,value)
constant = cv2.copyMakeBorder(area,5,15,10,20,cv2.BORDER_CONSTANT,value=[255,0,0])
#
# 範囲を張り付け
img[180-5:230+15, 130-10:230+20] = constant #線太さ分、貼付け範囲を大きくすること
#
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
# 入力画像を読込 注:重ねるsrcのサイズは同じこと
img1 = cv2.imread('C:/Temp/test03.png')
img2 = cv2.imread('C:/Temp/test02.png')
#
dst = cv2.addWeighted(img1,0.7,img2,0.3,0)
#
cv2.imshow('img1',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
#
cv2.imshow('img2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
#
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')


#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oShow(arg2, arg1):
cv2.imshow(arg2,arg1)
cv2.waitKey(0)
cv2.destroyAllWindows()
def oTest():
try:
# Load two images
img1 = cv2.imread('C:/Temp/test01.png')
img2 = cv2.imread('C:/Temp/OpenCV.png')
oShow('img2',img2)
# I want to put logo on top-left corner, So I create a ROI
rows,cols,channels = img2.shape
roi = img1[0:rows, 0:cols ]
oShow('roi',roi)
#
# Now create a mask of logo and create its inverse mask also
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
oShow('img2gray',img2gray)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)
oShow('mask_inv',mask_inv)
#
# Now black-out the area of logo in ROI
img1_bg = cv2.bitwise_and(roi,roi,mask = mask_inv)
oShow('img1_bg',img1_bg)
#
# Take only region of logo from logo image.
img2_fg = cv2.bitwise_and(img2,img2,mask = mask)
oShow('img2_fg',img2_fg)
#
# Put logo in ROI and modify the main image
dst = cv2.add(img1_bg,img2_fg)
oShow('dst',dst)
img1[0:rows, 0:cols ] = dst
oShow('img1',img1)
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')







#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oShow(arg2, arg1):
cv2.imshow(arg2,arg1)
cv2.waitKey(0)
cv2.destroyAllWindows()
def oTest():
try:
# Load two images
img = cv2.imread('C:/Temp/OpenCV.png')
#
# BGRでの色抽出
bgrLower = np.array([0,0,0]) # 抽出する色の下限(BGR)
bgrUpper = np.array([0,0,255]) # 抽出する色の上限(BGR)
img_mask = cv2.inRange(img, bgrLower, bgrUpper) # BGRからマスクを作成
result = cv2.bitwise_and(img, img, mask=img_mask) # 元画像とマスクを合成
#
oShow('Pick Up Color', result)
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')


#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oShow(arg2, arg1):
cv2.imshow(arg2,arg1)
cv2.waitKey(0)
cv2.destroyAllWindows()
def oTest():
try:
# Load two images
img = cv2.imread('C:/Temp/OpenCV.png')
#
# 画像をHSVに変換
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
#
# HSVでの色抽出/Red
hsvLower = np.array([0,0,0]) # 抽出する色の下限(HSV)
hsvUpper = np.array([0,255,255]) # 抽出する色の上限(HSV)
hsv_mask = cv2.inRange(hsv, hsvLower, hsvUpper) # HSVからマスクを作成
result = cv2.bitwise_and(img, img, mask=hsv_mask) # 元画像とマスクを合成
oShow('HSV: Red', result)
#
# HSVでの色抽出/Green
hsvLower = np.array([60,0,0]) # 抽出する色の下限(HSV)
hsvUpper = np.array([60,255,255]) # 抽出する色の上限(HSV)
hsv_mask = cv2.inRange(hsv, hsvLower, hsvUpper) # HSVからマスクを作成
result = cv2.bitwise_and(img, img, mask=hsv_mask) # 元画像とマスクを合成
oShow('HSV: Green', result)
#
# HSVでの色抽出/Blue
hsvLower = np.array([120,0,0]) # 抽出する色の下限(HSV)
hsvUpper = np.array([120,255,255]) # 抽出する色の上限(HSV)
hsv_mask = cv2.inRange(hsv, hsvLower, hsvUpper) # HSVからマスクを作成
result = cv2.bitwise_and(img, img, mask=hsv_mask) # 元画像とマスクを合成
oShow('HSV: Blue', result)
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# RGBとHSV・HSBの相互変換ツールと変換計算式
# HSVの説明はソースに絡まるエスカルゴ / 【python/OpenCV】画像の特定の色を抽出する方法参照
#名称 値の範囲
#色相(H)= 0~180 : 本来は0~360だがOpenCVでは1/2の範囲になる
#彩度(S)= 0~255 : 値が0に近づくほど白く、255に近づくほどHの色になる
#明度(V)= 0~255 : 値が0に近づくほど黒く、255に近づくほどHの色になる
#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oShow(arg2, arg1):
cv2.imshow(arg2,arg1)
cv2.waitKey(0)
cv2.destroyAllWindows()
def oTest():
try:
# Load two images
img = cv2.imread('C:/Temp/Color.png',0)
#
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)
#
titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]
#
for i in range(6):
oShow(titles[i], images[i])
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')





#!
#coding: utf-8
# python Marco
import numpy as np
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oShow(arg2, arg1):
cv2.imshow(arg2,arg1)
cv2.waitKey(0)
cv2.destroyAllWindows()
def oTest():
try:
# Load two images
img = cv2.imread('C:/Temp/10a_addWeighted03a.png',0)
#
img = cv2.medianBlur(img,5)
#
blocksize = 11 # しきい値計算に使用する近傍領域のサイズ.1より大きい奇数を指定
c = 2 # 計算されたしきい値から引く定数
#
ret,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,blocksize, c)
th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,blocksize, c)
th4 = cv2.adaptiveThreshold(th3,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,blocksize, c)
#
titles = ['Original Image', 'Global Thresholding (v = 127)','Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
images = [img, th1, th2, th3]
#
for i in range(4):
oShow(titles[i], images[i])
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')



下記CodeはLibreOffice6.2.4.2 (x64)のPyhonマクロで動作するかの確認用に以下のサイトの方法①のCodeを移植(コピー)したものです。
Code引用元 : 西住工房/【Python/OpenCV】テンプレートマッチングの実装(SSD、SAD、NCC、ZNCC)
事前に以下のライブリーを追加しておくこと!
・opencv-python
・numpy
#!
#coding: utf-8
# python Marco
import cv2
import numpy as np
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
# 入力画像とテンプレート画像をで取得
img = cv2.imread('C:/Temp/img.png')
temp = cv2.imread('C:/Temp/temp.png')
#
# グレースケール変換
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
temp = cv2.cvtColor(temp, cv2.COLOR_RGB2GRAY)
#
# テンプレート画像の高さ・幅
h, w = temp.shape
#
# テンプレートマッチング(OpenCVで実装)
match = cv2.matchTemplate(gray, temp, cv2.TM_SQDIFF)
min_value, max_value, min_pt, max_pt = cv2.minMaxLoc(match)
pt = min_pt
#
# テンプレートマッチングの結果を出力
cv2.rectangle(img, (pt[0], pt[1]), (pt[0] + w, pt[1] + h), (0, 0, 200), 3)
cv2.imwrite('C:/Temp/write.png', img)
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.2.4.2(x64)')
#Note
# h, w = temp.shape は h = temp.shape[0] / w = temp.shape[1] と同じ。(参考URL: a,b=hogeというような代入される値が二つあるものの意味)
元画像:img.png
比較画像:temp.png
出力結果:write.png
[ 動画 ]
#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
# 動画を読込
cap = cv2.VideoCapture('C:/Temp/nhkFireWork.mp4') #ファイル名は英数のみ。記号も不可
#
# 動画終了まで繰り返し
while(cap.isOpened()):
# フレームを取得
ret, frame = cap.read()
if not ret:
break
# フレームを表示
cv2.imshow('LO6.4.3.2(x64)',frame)
# qキーが押されたら途中終了
if cv2.waitKey(25) & 0xFF == ord('q'):
break
#
cap.release()
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# 映像:NHKクリエイティブ・ライブラリー
# cv2.waitKey() に適切な時間を設定。 通常は25ミリ秒。値が小さいと高速に再生。大きいとスロー再生。
# 映像が終了したらLoopを抜けないとエラー ⇒ teratail / 動画再生後,必ずエラーが発生します
#!
#coding: utf-8
# python Marco
import cv2
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
# 動画を読込
cap = cv2.VideoCapture('C:/Temp/nhkFireWork.mp4') #ファイル名は英数のみ。記号も不可
#
# 動画情報の取得
fps = cap.get(cv2.CAP_PROP_FPS)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
#
# 出力先の設定
fourcc = cv2.VideoWriter_fourcc('M','P','4','V')
out = cv2.VideoWriter('C:/Temp/output.mp4', int(fourcc), fps, (int(width), int(height)))
#
# 動画終了まで繰り返し
while(cap.isOpened()):
# フレームを取得
ret, frame = cap.read()
if not ret:
break
#
#frameを左右反転
frame = cv2.flip(frame,0)
#
#output.aviにframe毎書込み
out.write(frame)
#
# フレームを表示
cv2.imshow('LO6.4.3.2(x64)',frame)
# qキーが押されたら途中終了
if cv2.waitKey(25) & 0xFF == ord('q'):
break
#
cap.release()
out.release() #書込み開放
cv2.destroyAllWindows()
#
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# 動画ファイル再生可否状況 ⇒ Qiita / OpenCVで遊んでみた
Pygame
#!
#coding: utf-8
# python Marco
import pygame
from pygame.locals import *
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def main():
try:
pygame.init() # Pygameの初期化
(w, h) = (400, 280)
(x, y) = (w/2, h/2)
screen = pygame.display.set_mode((w, h)) # 大きさ400*300の画面を生成
pygame.display.set_caption('pygame') # タイトルバーに表示する文字
bg = pygame.image.load('C:/Temp/test01.png').convert_alpha() # 背景画像の指定
rect_bg = bg.get_rect()
player = pygame.image.load('C:/Temp/basketball_a12.png').convert_alpha() # ボール画像の指定
rect_player = player.get_rect()
rect_player.center = (x, y) # ボール座標
#
while (1):
screen.blit(bg, rect_bg) # 背景画像の描画
screen.blit(player, rect_player) # キャラの描画
pygame.time.wait(10) # 更新間隔
pygame.display.update() # 画面を更新
x += 1 # 画面更新毎にx座標を+1
y += 1 # 画面更新毎にy座標を+1
rect_player.center = (x, y)
if x > w: # 端まで来たら座標を0にリセット
x = 0
if y > h: # 同上
y = 0
# イベント処理
for event in pygame.event.get():
if event.type == QUIT: # 閉じるボタンが押されたら終了
pygame.quit() # Pygameの終了(画面閉じられる)
oDisp = 'Success'
sys.exit()
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
oDisp = 'Success'
sys.exit()
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import pygame
from pygame.locals import *
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def main():
try:
pygame.init() # Pygameの初期化
screen = pygame.display.set_mode((300, 200)) # 大きさ300*200の画面を生成
pygame.display.set_caption('Pygame') # タイトルバーに表示する文字
font = pygame.font.Font(None, 55) # フォントの設定(55px)
#
while (1):
screen.fill((0,100,0)) # 画面を緑色に塗りつぶし
text = font.render('LO6.4.3.2(x64)', True, (255,255,255)) # 描画する文字列の設定
screen.blit(text, [20, 100]) # 文字列の表示位置
pygame.display.update() # 画面を更新
# イベント処理
for event in pygame.event.get():
if event.type == QUIT: # 閉じるボタンが押されたら終了
pygame.quit() # Pygameの終了(画面閉じられる)
oDisp = 'Success'
sys.exit()
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import pygame
from pygame.locals import *
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def main():
try:
pygame.init() # Pygameの初期化
screen = pygame.display.set_mode((400, 250)) # 大きさ600*500の画面を生成
pygame.display.set_caption('Pygame') # タイトルバーに表示する文字
bg = pygame.image.load('C:/Temp/test01.png').convert_alpha() # 背景画像の指定
rect_bg = bg.get_rect()
#
while (1):
screen.blit(bg, rect_bg) # 背景画像の描画
#
# (100,0)から(280,80)まで線幅5pxで赤色(R=255, G=0, B=0)の直線を描く
pygame.draw.line(screen, (255,0,0), (100,0), (280,80), 5) # 直線の描画
#
# 左上座標(10,10)、幅80px、高さ50pxの長方形を線幅5pxの緑色(R=0, G=80, B=0),で(R=0, G=160, B=0)描く
pygame.draw.rect(screen,(0,80,0),Rect(10,10,80,50),5) # 四角形を描画(塗りつぶしなし)
pygame.draw.rect(screen,(0,160,0),Rect(30,30,80,50)) # 四角形を描画(塗りつぶし)
#
# 左上の座標が(50,50)、幅が150、高さが50の矩形に内接する楕円を線幅5pxの青色(R=0, G=0, B=255),(R=0, G=0, B=200)で描く
pygame.draw.ellipse(screen,(0,0,255),(50,50,200,100),5) # 楕円を描画(塗りつぶしなし)
pygame.draw.ellipse(screen,(0,0,200),(300,10,100,100)) # 円を描画(塗りつぶし)
#
pygame.display.update() # 画面を更新
# イベント処理
for event in pygame.event.get():
if event.type == QUIT: # 閉じるボタンが押されたら終了
pygame.quit() # Pygameの終了(画面閉じられる)
oDisp = 'Success'
sys.exit()
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#
# draw - Pygameドキュメント 日本語訳
#!
#coding: utf-8
# python Marco
import pygame
from pygame.locals import *
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def main():
try:
(w,h) = (300,200) # 画面サイズ
(x,y) = (w/2, h/2)
pygame.init() # pygame初期化
screen = pygame.display.set_mode((w, h)) # 大きさ400*400の画面を生成
pygame.display.set_caption(u'図形の描画') # タイトルバーに表示する文字
dif = 10 # 矢印で動く増分値
#
while (1):
pygame.display.update() # 画面更新
pygame.time.wait(30) # 更新時間間隔
screen.fill((0, 255, 255, 0)) # 画面の背景色
# 円の中心座標が画面の範囲外にある場合
if x < 0:
x = 0
if x > w:
x = w
if y < 0:
y = 0
if y > h:
y = h
# 円を描画
pygame.draw.circle(screen, (255,0,0), (int(x), int(y)), 10)
# イベント処理
for event in pygame.event.get():
# 画面の閉じるボタンを押したとき
if event.type == QUIT:
pygame.quit()
oDisp = 'Success'
sys.exit()
# キーを押したとき
if event.type == KEYDOWN:
# ESCキーなら終了
if event.key == K_ESCAPE:
pygame.quit()
oDisp = 'Success'
sys.exit()
# 矢印キーなら円の中心座標を矢印の方向に移動
if event.key == K_LEFT:
x -= dif
if event.key == K_RIGHT:
x += dif
if event.key == K_UP:
y -= dif
if event.key == K_DOWN:
y += dif
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import pygame
from pygame.locals import *
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def main():
try:
(w,h) = (300,200) # 画面サイズ
(x,y) = (w/2, h/2)
pygame.init() # pygame初期化
screen = pygame.display.set_mode((w, h)) # 大きさ300*200の画面を生成
pygame.display.set_caption(u'Key長押し') # タイトルバーに表示する文字
dif = 1 # 矢印で動く増分値
#
player = pygame.image.load('C:/Temp/basketball_a12.png').convert_alpha() # ボール画像の指定
rect_player = player.get_rect()
#
while (1):
# キーイベント処理(キャラクタ画像の移動)
pressed_key = pygame.key.get_pressed()
if pressed_key[K_LEFT]:
x-=dif
if pressed_key[K_RIGHT]:
x+=dif
if pressed_key[K_UP]:
y-=dif
if pressed_key[K_DOWN]:
y+=dif
screen.fill((150, 250, 150, 0)) # 画面の背景色
screen.blit(player, rect_player) # キャラの描画
pygame.display.update() # 画面更新
pygame.time.wait(30) # 更新時間間隔
# 円の中心座標が画面の範囲外にある場合
if x < 0:
x = 0
if x > w:
x = w
if y < 0:
y = 0
if y > h:
y = h
#
rect_player.center = (x, y) # ボール座標
# イベント処理
for event in pygame.event.get():
# 画面の閉じるボタンを押したとき
if event.type == QUIT:
pygame.quit()
oDisp = 'Success'
sys.exit()
# キーを押したとき
if event.type == KEYDOWN:
# ESCキーなら終了
if event.key == K_ESCAPE:
pygame.quit()
oDisp = 'Success'
sys.exit()
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import pygame
from pygame.locals import *
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def main():
try:
(w,h) = (400,300) # 画面サイズ
(x,y) = (w/2, h/2)
pygame.init() # pygame初期化
screen = pygame.display.set_mode((w, h)) # 大きさ300*200の画面を生成
pygame.display.set_caption(u'マウスクリックでキャラクター移動') # タイトルバーに表示する文字
#
player = pygame.image.load('C:/Temp/basketball_a12.png').convert_alpha() # ボール画像の指定
#
while (1):
screen.fill((200, 200, 250, 0)) # 画面の背景色
screen.blit(player, (x, y)) # キャラの描画
pygame.display.update() # 画面更新
pygame.time.wait(30) # 更新時間間隔
#
for event in pygame.event.get():
# マウスクリックで画像移動
if event.type == MOUSEBUTTONDOWN and event.button == 1:
x, y = event.pos
x -= player.get_width() / 2
y -= player.get_height() / 2
#
# 画面の閉じるボタンを押したとき
if event.type == QUIT:
pygame.quit()
oDisp = 'Success'
sys.exit()
# キーを押したとき
if event.type == KEYDOWN:
# ESCキーなら終了
if event.key == K_ESCAPE:
pygame.quit()
oDisp = 'Success'
sys.exit()
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
#!
#coding: utf-8
# python Marco
import pygame
from pygame.locals import *
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def main():
try:
(w,h) = (400,300) # 画面サイズ
(x,y) = (w/2, h/2)
pygame.init() # pygame初期化
screen = pygame.display.set_mode((w, h)) # 大きさ300*200の画面を生成
pygame.display.set_caption(u'マウスクリック & ドラッグでボール移動') # タイトルバーに表示する文字
#
player = pygame.image.load('C:/Temp/basketball_a12.png').convert_alpha() # ボール画像の指定
#
while (1):
screen.fill((200, 200, 200, 0)) # 画面の背景色
screen.blit(player, (x, y)) # キャラの描画
pygame.display.update() # 画面更新
pygame.time.wait(30) # 更新時間間隔
#
mouse_pressed = pygame.mouse.get_pressed()
#
if mouse_pressed[0]: # 左クリック
x, y = pygame.mouse.get_pos()
x -= player.get_width() / 2
y -= player.get_height() / 2
#
for event in pygame.event.get():
# 画面の閉じるボタンを押したとき
if event.type == QUIT:
pygame.quit()
oDisp = 'Success'
#sys.exit()
return # ボタンから実行する時はsys.exit()でなくreturn
# キーを押したとき
if event.type == KEYDOWN:
# ESCキーなら終了
if event.key == K_ESCAPE:
pygame.quit()
oDisp = 'Success'
#sys.exit()
return
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
def Test(*args): # ボタンから実行する時は引数(*args)が必要
main()
#!
#coding: utf-8
# python Marco
import pygame
from pygame.locals import *
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def main():
try:
(w,h) = (400,300) # 画面サイズ
(x,y) = (w/2, h/2)
pygame.init() # pygame初期化
screen = pygame.display.set_mode((w, h)) # 大きさ300*200の画面を生成
pygame.display.set_caption(u'マウスポインターでボール移動') # タイトルバーに表示する文字
#
player = pygame.image.load('C:/Temp/basketball_a12.png').convert_alpha() # ボール画像の指定
#
while (1):
screen.fill((100, 200, 200, 0)) # 画面の背景色
screen.blit(player, (x, y)) # キャラの描画
pygame.display.update() # 画面更新
pygame.time.wait(30) # 更新時間間隔
#
for event in pygame.event.get():
# マウスポインタで画像も移動
if event.type == MOUSEMOTION:
x, y = event.pos
x -= int(player.get_width() / 2)
y -= int(player.get_height() / 2)
# 画面の閉じるボタンを押したとき
if event.type == QUIT:
pygame.quit()
oDisp = 'Success'
#sys.exit()
return # ボタンから実行する時はsys.exit()でなくreturn
# キーを押したとき
if event.type == KEYDOWN:
# ESCキーなら終了
if event.key == K_ESCAPE:
pygame.quit()
oDisp = 'Success'
#sys.exit()
return
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
def Test(*args): # ボタンから実行する時は引数(*args)が必要
main()
#!
#coding: utf-8
# python Marco
import pygame.mixer
import time
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def main():
try:
pygame.mixer.init(frequency = 44100) # 初期設定
pygame.mixer.music.load('C:/Temp/flashing.mp3') # 音楽ファイルの読み込み
pygame.mixer.music.play(1) # 音楽の再生回数(1回)
time.sleep(5) # 音楽の再生時間: 5秒
pygame.mixer.music.stop() # 再生の終了
oDisp = "Success"
#sys.exit()
return # ボタンから実行する時はsys.exit()でなくreturn
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
def Test(*args): # ボタンから実行する時は引数(*args)が必要
main()
#!
#coding: utf-8
# python Marco
import pygame
from pygame.locals import *
import math
import pygame.mixer
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
# """shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
# 画面サイズ
SCREEN = Rect(0, 0, 400, 400)
#
# バドルのクラス
class Paddle(pygame.sprite.Sprite):
# コンストラクタ(初期化メソッド)
def __init__(self, filename):
pygame.sprite.Sprite.__init__(self, self.containers)
self.image = pygame.image.load(filename).convert()
self.rect = self.image.get_rect()
self.rect.bottom = SCREEN.bottom - 20 # パドルのy座標
#
def update(self):
self.rect.centerx = pygame.mouse.get_pos()[0] # マウスのx座標をパドルのx座標に
self.rect.clamp_ip(SCREEN) # ゲーム画面内のみで移動
#
# ボールのクラス
class Ball(pygame.sprite.Sprite):
# コンストラクタ(初期化メソッド)
def __init__(self, filename, paddle, blocks, score, speed, angle_left, angle_right):
pygame.sprite.Sprite.__init__(self, self.containers)
self.image = pygame.image.load(filename).convert()
self.rect = self.image.get_rect()
self.dx = self.dy = 0 # ボールの速度
self.paddle = paddle # パドルへの参照
self.blocks = blocks # ブロックグループへの参照
self.update = self.start # ゲーム開始状態に更新
self.score = score
self.hit = 0 # 連続でブロックを壊した回数
self.speed = speed # ボールの初期速度
self.angle_left = angle_left # パドルの反射方向(左端:135度)
self.angle_right = angle_right # パドルの反射方向(右端:45度)
#
# ゲーム開始状態(マウスを左クリック時するとボール射出)
def start(self):
# ボールの初期位置(パドルの上)
self.rect.centerx = self.paddle.rect.centerx
self.rect.bottom = self.paddle.rect.top
#
# 左クリックでボール射出
if pygame.mouse.get_pressed()[0] == 1:
self.dx = 0
self.dy = -self.speed
self.update = self.move
#
# ボールの挙動
def move(self):
self.rect.centerx += self.dx
self.rect.centery += self.dy
#
# 壁との反射
if self.rect.left < SCREEN.left: # 左側
self.rect.left = SCREEN.left
self.dx = -self.dx # 速度を反転
if self.rect.right > SCREEN.right: # 右側
self.rect.right = SCREEN.right
self.dx = -self.dx
if self.rect.top < SCREEN.top: # 上側
self.rect.top = SCREEN.top
self.dy = -self.dy
#
# パドルとの反射(左端:135度方向, 右端:45度方向, それ以外:線形補間)
# 2つのspriteが接触しているかどうかの判定
if self.rect.colliderect(self.paddle.rect) and self.dy > 0:
self.hit = 0 # 連続ヒットを0に戻す
(x1, y1) = (self.paddle.rect.left - self.rect.width, self.angle_left)
(x2, y2) = (self.paddle.rect.right, self.angle_right)
x = self.rect.left # ボールが当たった位置
y = (float(y2-y1)/(x2-x1)) * (x - x1) + y1 # 線形補間
angle = math.radians(y) # 反射角度
self.dx = self.speed * math.cos(angle)
self.dy = -self.speed * math.sin(angle)
pygame.mixer.music.load('C:/Temp/flying_pan.mp3') # ブロックにボールが衝突した時の効果音取得
pygame.mixer.music.play(1) # 音楽の再生回数(1回)
#
# ボールを落とした場合
if self.rect.top > SCREEN.bottom:
self.update = self.start # ボールを初期状態に
pygame.mixer.music.load('C:/Temp/badend1.mp3') # ゲームオーバー時の効果音取得
pygame.mixer.music.play(1) # 音楽の再生回数(1回)
#
self.hit = 0
self.score.add_score(-100) # スコア減点-100点
#
# ボールと衝突したブロックリストを取得(Groupが格納しているSprite中から、指定したSpriteと接触しているものを探索)
blocks_collided = pygame.sprite.spritecollide(self, self.blocks, True)
if blocks_collided: # 衝突ブロックがある場合
oldrect = self.rect
for block in blocks_collided:
# ボールが左からブロックへ衝突した場合
if oldrect.left < block.rect.left and oldrect.right < block.rect.right:
self.rect.right = block.rect.left
self.dx = -self.dx
#
# ボールが右からブロックへ衝突した場合
if block.rect.left < oldrect.left and block.rect.right < oldrect.right:
self.rect.left = block.rect.right
self.dx = -self.dx
#
# ボールが上からブロックへ衝突した場合
if oldrect.top < block.rect.top and oldrect.bottom < block.rect.bottom:
self.rect.bottom = block.rect.top
self.dy = -self.dy
#
# ボールが下からブロックへ衝突した場合
if block.rect.top < oldrect.top and block.rect.bottom < oldrect.bottom:
self.rect.top = block.rect.bottom
self.dy = -self.dy
#
pygame.mixer.music.load('C:/Temp/flashing.mp3') # パドルにボールが衝突した時の効果音取得
pygame.mixer.music.play(1) # 音楽の再生回数(1回)
#
self.hit += 1 # 衝突回数
self.score.add_score(self.hit * 10) # 衝突回数に応じてスコア加点
#
# ブロックのクラス
class Block(pygame.sprite.Sprite):
def __init__(self, filename, x, y):
pygame.sprite.Sprite.__init__(self, self.containers)
self.image = pygame.image.load(filename).convert()
self.rect = self.image.get_rect()
# ブロックの左上座標
self.rect.left = SCREEN.left + x * self.rect.width
self.rect.top = SCREEN.top + y * self.rect.height
#
# スコアのクラス
class Score():
def __init__(self, x, y):
self.sysfont = pygame.font.SysFont(None, 20)
self.score = 0
(self.x, self.y) = (x, y)
def draw(self, screen):
img = self.sysfont.render("SCORE:"+str(self.score), True, (255,255,250))
screen.blit(img, (self.x, self.y))
def add_score(self, x):
self.score += x
#
def main():
try:
pygame.init()
screen = pygame.display.set_mode(SCREEN.size)
#
# 描画用のスプライトグループ
group = pygame.sprite.RenderUpdates()
#
# 衝突判定用のスプライトグループ
blocks = pygame.sprite.Group()
#
# スプライトグループに追加
Paddle.containers = group
Ball.containers = group
Block.containers = group, blocks
#
# パドルの作成
paddle = Paddle('C:/Temp/paddle.png')
#
# ブロックの作成(14*10)
for x in range(1, 15):
for y in range(1, 11):
Block('C:/Temp/block.png', x, y)
#
# スコアを画面(10, 10)に表示
score = Score(10, 10)
#
# ボールを作成
Ball('C:/Temp/ball.png',paddle, blocks, score, 5, 135, 45)
#
clock = pygame.time.Clock()
#
while (1):
clock.tick(60) # フレームレート(60fps)
screen.fill((0,20,0))
# 全てのスプライトグループを更新
group.update()
# 全てのスプライトグループを描画
group.draw(screen)
# スコアを描画
score.draw(screen)
# 画面更新
pygame.display.update()
#
# キーイベント(終了)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
oDisp =u'X終了'
#sys.exit()
return # ボタンから実行する時はsys.exit()でなくreturn
if event.type == KEYDOWN and event.key == K_ESCAPE:
pygame.quit()
oDisp =u'ESC終了'
#sys.exit()
return # ボタンから実行する時はsys.exit()でなくreturn
except Exception as er:
pygame.quit()
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
sys.exit()
finally:
omsgbox(oDisp,1,'LO6.4.3.2(x64)')
def Test(*args): # ボタンから実行する時は引数(*args)が必要
main()
#
# 西住工房/【Pygame】ブロック崩しの作り方(効果音付き)より(一部、変更しています。)
# 効果音:flashing.mp3、flying_pan.mp3、badend1.mp3 は 無料効果音で遊ぼう! / ゲーム・アニメ調より
Pyautogui
#!
#coding: utf-8
# python Marco
import pyautogui
import time
import uno
import sys, traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
pyautogui.moveTo(300,300)
oPos = pyautogui.position()
oDisp = '移動前:' + str(oPos)
pyautogui.moveRel(200,0, duration=1.0)
pyautogui.moveRel(0,200, duration=1.0)
pyautogui.moveRel(-200,0, duration=1.0)
pyautogui.moveRel(0,-200, duration=1.0)
oPos = pyautogui.position()
oDisp = oDisp + '\n' + '移動後:' + str(oPos)
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
#[参考サイト]
# Why it doesn't work? / Python マウスとキーボードを制御する(マウスのクリック)
# Pythonでマウスやキーボードを操作できるPyAutoGUIによる自動操作マニュアル
#!
#coding: utf-8
# python Marco
import webbrowser
import pyautogui
import time
import uno
import sys, traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
oURL = 'https://openoffice3.web.fc2.com/'
if webbrowser.open(oURL,new=1,autoraise=1)== False: # false is error
raise webbrowser.Error
# 5[sec]待機(Browser起動まで待機)
time.sleep(5.0)
# 指定範囲のScreenshot
oSC = pyautogui.screenshot(region=(350, 200, 1000, 300))
oSC.save('C:/Temp/Screen01.png')
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')

#!
#coding: utf-8
# python Marco
import subprocess
import pyautogui
import time
import uno
import sys, traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
cmd='C:/Program Files/Mozilla Firefox/firefox.exe'
oRtn = subprocess.call(cmd, shell=True)
if oRtn != 0:
oDisp = 'プロセスが異常終了しました'
sys.exit()
oPng = 'C:/Temp/yahoo.png'
while pyautogui.locateOnScreen(oPng , confidence=0.9) is None:
time.sleep(1)
#Yahooのアイコンの位置を取得
oPos = pyautogui.locateOnScreen(oPng , confidence=0.9)
omsgbox(str(oPos),1,'LO7.0.1.2')
#yahooのアイコンをクリック
pyautogui.click(oPos)
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
# ↓yahoo.png↓
#!
#coding: utf-8
# python Marco
import pyautogui
import time
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
pyautogui.press('win') #windowsキーを押す。
time.sleep(1)
pyautogui.typewrite('firefox') #firefoxと入力
pyautogui.press('enter') #Enter keyを押す
time.sleep(4)
pyautogui.moveTo(550, 220) #Firefoxの検索テキストボックスの位置にカーソル移動
pyautogui.click() #マウスをclick
time.sleep(4)
pyautogui.typewrite('pyautogui')
pyautogui.press('enter')
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
#coding: utf-8
# python Marco
import pyautogui
import time
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
pyautogui.FAILSAFE = True #pyautoguiの中断を有効にする: 画面の左上端 座標(0,0)にマウスをもっていくと中断
pyautogui.press('win')
time.sleep(1)
pyautogui.typewrite('firefox')
pyautogui.press('enter')
time.sleep(4)
pyautogui.moveTo(550, 220)
pyautogui.click()
time.sleep(4)
pyautogui.typewrite('pyautogui')
pyautogui.press('enter')
oDisp = 'Success'
except pyautogui.FailSafeException:
oDisp = u'pyautogui.FAILSAFE実行'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
pywin32
[ FileSystemObject ]
#!
#coding: utf-8
# python Marco
import win32com.client
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
oFSObj = win32com.client.Dispatch('Scripting.FileSystemObject')
oFile = 'C:/temp/output.csv'
if oFSObj.FileExists(oFile) == True:
oDisp = str(oFile) + ' は存在します'
else:
oDisp = str(oFile) + ' は存在しません'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.4.2')
[ WScript.Network ]
#!
#coding: utf-8
# python Marco
import win32com.client
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
oWNetObj = win32com.client.Dispatch('WScript.Network')
oDomain = oWNetObj.UserDomain
oComputer = oWNetObj.ComputerName
oUser = oWNetObj.UserName
oDisp = 'Domain = ' + oDomain + '\n' + 'Computer = ' + oComputer + '\n' + 'User Name = ' + oUser
oDisp = oDisp + '\n\n' + 'Seccess' + '\n' + '[ Windows10(64bit) ]'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
Win32 API
[ win32gui ]
#!
#coding: utf-8
# python Marco
import win32gui
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
hwnd = win32gui.GetDesktopWindow()
oDisp = 'GetDesktopWindow\n = ' + str(hwnd)
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
#Python for Win32 Extensions Help / Module win32gui
#!
#coding: utf-8
# python Marco
import win32gui
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
hwnd = win32gui.GetDesktopWindow()
dc = win32gui.GetWindowDC(hwnd)
oDisp = 'GetWindowDC\n = ' + str(dc)
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
#F-Basic Programming Tips / GetWindowDC
#!
#coding: utf-8
# python Marco
import subprocess
import time
import win32gui
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
AppName = 'notepad.exe'
p = subprocess.Popen(AppName)
# 起動するまで待機
time.sleep(1)
# 起動したApplicationのハンドルを取得する
hw1 = win32gui.GetForegroundWindow()
oDisp = '[起動したApplicationのハンドル]\n 起動アプリ: ' + AppName + '\n' + ' GetForegroundWindow = ' + str(hw1)
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
#Programming Library / 120.現在操作中のウインドウのハンドルを取得する
#!
#coding: utf-8
# python Marco
import subprocess
import time
import win32gui
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
AppName = 'notepad.exe'
p = subprocess.Popen(AppName)
# 起動するまで待機
time.sleep(1)
# 起動したApplicationのハンドルを取得する
hw1 = win32gui.GetForegroundWindow()
wtnm = win32gui.GetWindowText(hw1)
oDisp = '[起動したアプリのWindowタイトル]\n 起動アプリ: ' + AppName + '\n' + ' GetWindowText = ' + str(wtnm)
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
#win32gui.GetWindowText
#!
#coding: utf-8
# python Marco
import subprocess
import time
import win32gui
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
AppName = 'notepad.exe'
p = subprocess.Popen(AppName)
# 起動するまで待機
time.sleep(1)
# 起動したApplicationのハンドルを取得する
hw1 = win32gui.GetForegroundWindow()
x0, y0, x1, y1 = win32gui.GetWindowRect(hw1)
oDisp = '[起動したアプリのWindowサイズ]\n 起動アプリ: ' + AppName + '\n' + ' 左上端(X, Y) = (' + str(x0)+ ' , ' + str(y0) + ')\n 右下端(X, Y) = (' + str(x1) + ' , ' + str(y1) + ')'
except Exception as e:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#!
#coding: utf-8
# python Marco
import win32gui
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
#無題のCalcのタイトル(Windowのタイトル)を指定してハンドルを取得
hw1 = win32gui.FindWindow(None,'無題 1 - LibreOffice Calc')
oDisp = '[無題のCalcのハンドル]\n' + ' FindWindow = ' + str(hw1)
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#!
#coding: utf-8
# python Marco
import win32gui
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
#無題のCalcのタイトル(Windowのタイトル)を指定してハンドルを取得
oTitle = '無題 - メモ帳'
hw1 = win32gui.FindWindow(None,oTitle)
if hw1 == 0:
oDisp = oTitle + 'が起動していませn。'
sys.exit()
win32gui.ShowWindow(hw1, 3)
omsgbox('Windowサイズの最大化',1,'LO7.0.1.2')
win32gui.ShowWindow(hw1, 9)
omsgbox('Windowサイズを元に戻す',1,'LO7.0.1.2')
win32gui.ShowWindow(hw1, 6)
omsgbox('Windowサイズの最小化',1,'LO7.0.1.2')
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
#Microsoft Doc / ShowWindow function (winuser.h)


#!
#coding: utf-8
# python Marco
import subprocess
import time
import win32gui
import win32process
import win32api
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
MOUSEEVENTF_LEFTDOWN = 0x2
MOUSEEVENTF_LEFTUP = 0x4
p = subprocess.Popen('notepad.exe')
# 起動するまで待機
time.sleep(1)
# 起動したメモ帳のハンドルを取得する。
hw1 = win32gui.GetForegroundWindow()
(tid1, pid1) = win32process.GetWindowThreadProcessId(hw1)
#
current_threadid = win32api.GetCurrentThreadId()
#
# トップレベルウィンドウを切り替える(この時点ではフォーカスできていない)
win32process.AttachThreadInput(current_threadid, tid1, True)
win32gui.BringWindowToTop(hw1)
win32process.AttachThreadInput(current_threadid, tid1, False)
#
# ウィンドウの左上の隅っこをクリックしてアクティブにする。
(left, top, right, bottom) = win32gui.GetWindowRect(hw1)
win32api.SetCursorPos((left + 1, top + 1))
time.sleep(0.1)
win32api.mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0)
time.sleep(0.1)
win32api.mouse_event(MOUSEEVENTF_LEFTUP, 0, 0)
oDisp = 'Success'
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
#参考URL1:stamemo / ウィンドウを確実にアクティブにする方法
#参考URL2:teratail / windowsで特定のwindowを最前面にしたい
[ win32api ]
#!
#coding: utf-8
# python Marco
import win32api
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
oDS = win32api.GetDiskFreeSpaceEx('C:')
oDisp = '利用可能Diskspace = ' + str(int(oDS[0]/1024**3)) + ' GB\n'
oDisp = oDisp + 'Total Diskspace = ' + str(int(oDS[1]/1024**3)) + ' GB\n'
oDisp = oDisp + 'Total Free Diskspace = ' + str(int(oDS[2]/1024**3)) + ' GB'
except Exception as e:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#!
#coding: utf-8
# python Marco
import win32api
import datetime
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
#
def oTest():
try:
oNowB = str(datetime.datetime.now())
# 5[sec]待機
win32api.Sleep(5000)
#
oNowA = str(datetime.datetime.now())
oDisp = u'[ 任意時間(5[sec])処理を中断 ]\n'
oDisp = oDisp + oNowB + '\n\n' + oNowA
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
pythonnet
#!
#coding: utf-8
# python Marco
import clr
from System.Collections.Generic import List
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
"""shows message."""
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
window = frame.getContainerWindow()
toolkit = window.getToolkit()
msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
return msgbox.execute()
def oTest():
try:
clr.AddReference('System.Collections')
lst = List[int]()
lst.Add(3)
lst.Add(5)
lst.Add(1)
lst.Sort()
oDisp = '[System.Collections]'
for x in lst:
oDisp = oDisp + '\n' + str(x)
except Exception as er:
oDisp = ''
oDisp = str(traceback.format_exc()) + '\n' + str(er)
finally:
omsgbox(oDisp,1,'LO7.0.1.2')
#
# Pythonのコードから.NETを呼び出す