[画像をトリミングする、画像の反転指定も可] , Python(パイソン) 使って作ってみた ,ソースプログラムリスト あり
Python(パイソン) プログラム作ってみた インデックス へ
-----
2024.10.27 presented in [note] ( //note.com/runningWater/ )
2024.10.30 rewritten
----------
1 はじめに
これ以降に記述されている内容は、このようなコンピューター・プログラムを制作した、というような事を、ただ、述べているに過ぎない。
以下の記述を読んだ人が、それを単に参考にする、というのであれば、問題は無いと、思われる。
しかし、記述されている内容に沿って、その人が、そこに記されているのと同様の制作や作業を行った際に、その制作、作業、コンピューターの作動の結果、使用されたコンピューター等、様々な方面において、何らかの問題が発生しない、という保証は、全くない。
その制作、作業、コンピューターの作動の結果、その人や、その人が所属している組織、その人が使用した様々な機器、インフラストラクチャー等の、身の上にどのような事が起ころうとも、私は一切、責任を負わない。
このプログラムは、Python(パイソン) 言語を使って、記述されている。
----------
2 どのようなものを作ったのか
下記 [Fig 1] にあるように、
[Fig 1]上部にある画像から、
[Fig 1]下部にある4個の画像を、作成した。
これらの画像は、[Fig 1]上部にある画像の一部を切り取った(トリミングした、クロップした)ような内容になっており、
それらのうち、右側にある3個は、図中に示したように、画像の向きが変わっている。
----------
3 構成
このモジュール群は、下記のモジュールより、構成されている。
[ TestMakeTrimedImageData ]
[ MakeTrimedImageData ]
以降に、これらのモジュールの内容を、記す。
これらのモジュールは、必要に応じて、下記に解説されているモジュールを、使用している。
[[画像処理, OpenCV2 使用] を 行う, 機能追加版, 多角形(内部ぬりつぶし)描画機能を追加] , Python(パイソン) 使って作ってみた ,ソースプログラムリスト あり
Python(パイソン) ,ソースプログラムリスト あり ,プログラム作ってみた ,[エラー処理] を 行う
----------
4 [ TestMakeTrimedImageData ]
ファイル名 [ TestMakeTrimedImageData.py ]
下記の各過程が、Fig 1 中に示されている、画像の反転に対応している。
Test 1 --- 反転なし
Test 2 --- 左右反転
Test 3 --- 上下反転
Test 4 --- 左右および上下反転
----------
import ImageDataTwoDimensionHandlingV3
import MakeTrimedImageData
module_name = "TestMakeTrimedImageData"
function_name = "_____"
#------------------------------------------------
# from x = [ 0 ] [ 0 ]
# to x = [ 1 ] [ 0 ]
# from y = [ 0 ] [ 1 ]
# to y = [ 1 ] [ 1 ]
list_CopySource_From_and_To_xy = \
[ [ 50 , 50 ] \
, [ 300 , 400 ] \
]
# ====== # Test 1 ( Flip No ) =======================
ins_ImageDataTwoDimensionHandlingV3 \
= ImageDataTwoDimensionHandlingV3 \
.ImageDataTwoDimensionHandlingV3 ( \
module_name
, function_name
)
do_flip = "N"
# "T" Top --- Bottom
# "L" Left --- Right
flipping_direction = " "
ins_ImageDataTwoDimensionHandlingV3 \
.load_image_data ( \
module_name
, function_name
, "E:/ForPython/ForTest/Test_E/Test_Image_Data.png"
)
ins_ImageDataTwoDimensionHandlingV3_1 = \
MakeTrimedImageData \
.make_ins_ImageDataTwoDimensionHandlingV3_trimed ( \
ins_ImageDataTwoDimensionHandlingV3
, list_CopySource_From_and_To_xy
, do_flip
, flipping_direction
)
ins_ImageDataTwoDimensionHandlingV3_1 \
.write_loaded_image_data_to_directed_path ( \
module_name
, "_____"
, "E:/ForPython/ForTest/Test_E/Test_Image_Data_Output_Flip_No.png"
)
# ====== # Test 2 ( Flip Left --- Right ) =======================
do_flip = "Y"
# "L" Left --- Right
flipping_direction = "L"
ins_ImageDataTwoDimensionHandlingV3 \
.load_image_data ( \
module_name
, function_name
, "E:/ForPython/ForTest/Test_E/Test_Image_Data.png"
)
ins_ImageDataTwoDimensionHandlingV3_L = \
MakeTrimedImageData \
.make_ins_ImageDataTwoDimensionHandlingV3_trimed ( \
ins_ImageDataTwoDimensionHandlingV3
, list_CopySource_From_and_To_xy
, do_flip
, flipping_direction
)
ins_ImageDataTwoDimensionHandlingV3_L \
.write_loaded_image_data_to_directed_path ( \
module_name
, "_____"
, "E:/ForPython/ForTest/Test_E/Test_Image_Data_Output_Flip_L.png"
)
# ====== # Test 3 ( Flip Top --- Bottom ) =======================
do_flip = "Y"
# "T" Top --- Bottom
flipping_direction = "T"
ins_ImageDataTwoDimensionHandlingV3 \
.load_image_data ( \
module_name
, function_name
, "E:/ForPython/ForTest/Test_E/Test_Image_Data.png"
)
ins_ImageDataTwoDimensionHandlingV3_T = \
MakeTrimedImageData \
.make_ins_ImageDataTwoDimensionHandlingV3_trimed ( \
ins_ImageDataTwoDimensionHandlingV3
, list_CopySource_From_and_To_xy
, do_flip
, flipping_direction
)
ins_ImageDataTwoDimensionHandlingV3_T \
.write_loaded_image_data_to_directed_path ( \
module_name
, "_____"
, "E:/ForPython/ForTest/Test_E/Test_Image_Data_Output_Flip_T.png"
)
# ====== # Test 4 ( Flip Left --- Right and Top --- Bottom and ) =======
do_flip = "Y"
# "B" Both , Left --- Right , and Top --- Bottom
flipping_direction = "B"
ins_ImageDataTwoDimensionHandlingV3 \
.load_image_data ( \
module_name
, function_name
, "E:/ForPython/ForTest/Test_E/Test_Image_Data.png"
)
ins_ImageDataTwoDimensionHandlingV3_T = \
MakeTrimedImageData \
.make_ins_ImageDataTwoDimensionHandlingV3_trimed ( \
ins_ImageDataTwoDimensionHandlingV3
, list_CopySource_From_and_To_xy
, do_flip
, flipping_direction
)
ins_ImageDataTwoDimensionHandlingV3_T \
.write_loaded_image_data_to_directed_path ( \
module_name
, "_____"
, "E:/ForPython/ForTest/Test_E/Test_Image_Data_Output_Flip_B.png"
)
#======================================
----------
----------
5 [ MakeTrimedImageData ]
ファイル名 [ MakeTrimedImageData.py ]
----------
import cv2
import ImageDataTwoDimensionHandlingV3
global_module_name = "MakeTrimedImageData"
#------------------------------------------------
def make_ins_ImageDataTwoDimensionHandlingV3_trimed ( \
arg_ins_ImageDataTwoDimensionHandling_Source
# from x = [ 0 ] [ 0 ]
# to x = [ 1 ] [ 0 ]
# from y = [ 0 ] [ 1 ]
# to y = [ 1 ] [ 1 ]
# in the commonly used mathematical XY cordinates
, arg_list_CopySource_From_and_To_xy
, arg_do_flip
# "T" Top --- Bottom
# "L" Left --- Right
# "B" Left --- Right , and , Top --- Bottom
, arg_flipping_direction
) :
function_name = "make_ins_ImageDataTwoDimensionHandlingV3_trimed"
global global_module_name
print ( "==================================" )
print ( "Enter into , Module = " + global_module_name
+ " , function = " + function_name )
print ( "==================================" )
image_data_of_Source \
= arg_ins_ImageDataTwoDimensionHandling_Source \
.get_loaded_image_data ( \
global_module_name
, function_name
)
image_data_of_Source_width \
= arg_ins_ImageDataTwoDimensionHandling_Source \
.get_width_of_ImageData ( )
image_data_of_Source_height \
= arg_ins_ImageDataTwoDimensionHandling_Source \
.get_height_of_ImageData ( )
#---------------------------------
from_x = arg_list_CopySource_From_and_To_xy [ 0 ] [ 0 ]
to_x = arg_list_CopySource_From_and_To_xy [ 1 ] [ 0 ] + 1
from_y = arg_list_CopySource_From_and_To_xy [ 0 ] [ 1 ]
to_y = arg_list_CopySource_From_and_To_xy [ 1 ] [ 1 ] + 1
From_x_on_ImageData_space_computer_graphics = from_x
To_x_on_ImageData_space_computer_graphics = to_x
#------------------
From_y_on_ImageData_space_computer_graphics = \
image_data_of_Source_height \
- to_y - 1
To_y_on_ImageData_space_computer_graphics = \
image_data_of_Source_height \
- from_y - 1
print ( "==================================" )
print ( "Module = " + global_module_name
+ " , function = " + function_name )
print ( "image_data_of_Source_width = " \
, image_data_of_Source_width )
print ( "image_data_of_Source_height = " \
, image_data_of_Source_height )
print ( "arg_list_CopySource_From_and_To_xy = " \
, arg_list_CopySource_From_and_To_xy )
print ( "From_x_on_ImageData_space_computer_graphics = " \
, From_x_on_ImageData_space_computer_graphics )
print ( "To_x_on_ImageData_space_computer_graphics = " \
, To_x_on_ImageData_space_computer_graphics )
print ( "From_y_on_ImageData_space_computer_graphics = " \
, From_y_on_ImageData_space_computer_graphics )
print ( "To_y_on_ImageData_space_computer_graphics = " \
, To_y_on_ImageData_space_computer_graphics )
print ( "==================================" )
#---------------------------------
image_data_of_Trimed \
= image_data_of_Source [ \
From_y_on_ImageData_space_computer_graphics \
: To_y_on_ImageData_space_computer_graphics \
, From_x_on_ImageData_space_computer_graphics \
: To_x_on_ImageData_space_computer_graphics \
]
#---------------------------------
set_ImageData = image_data_of_Trimed
#---------------------------------
if ( arg_do_flip == "Y" ) :
# do flipping
if ( arg_flipping_direction == "L" ) :
# flipping direction is [ Left --- Right ]
set_ImageData = cv2 \
.flip ( image_data_of_Trimed , 1 )
else :
if ( arg_flipping_direction == "T" ) :
# flipping direction is [ Top --- Bottom ]
set_ImageData = cv2 \
.flip ( image_data_of_Trimed , 0 )
else :
# flipping direction is [ Left --- Right ]
# and [ Top --- Bottom ]
set_ImageData = cv2 \
.flip ( image_data_of_Trimed , -1 )
#---------------------------------
ins_ImageDataTwoDimensionHandlingV3_Trimed = \
ImageDataTwoDimensionHandlingV3 \
.ImageDataTwoDimensionHandlingV3 ( \
global_module_name
, function_name
)
ins_ImageDataTwoDimensionHandlingV3_Trimed \
.set_image_data ( \
global_module_name
, function_name
, set_ImageData
)
print ( "==================================" )
print ( "Exit from , Module = " + global_module_name
+ " , function = " + function_name )
print ( "==================================" )
return ins_ImageDataTwoDimensionHandlingV3_Trimed
#======================================
----------
----------
Python(パイソン) プログラム作ってみた インデックス へ