[画像をトリミングする、画像の反転指定も可] , 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個は、図中に示したように、画像の向きが変わっている。

Fig 1

----------
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(パイソン) プログラム作ってみた インデックス へ


この記事が気に入ったらサポートをしてみませんか?