Python-opencv修正画像

8251 ワード

OpenCVは、BSDライセンス(オープンソース)に基づいて発行されるプラットフォーム間コンピュータビジュアルライブラリです.
OpenCVのインストール:
pip3 install opencv-python
ケース画像に透かしを追加
OpenCV簡単操作画像:
一、画像を読み取る
OpenCVは、画像をさらに処理することができる、例えば、画像を合成したり、透かしを追加したりして、opencvを装着後にcv 2を導くことができる.
import cv2
#  1   ,  2    ,    cv2.IMREAD_GRAYSCALE,        
img = cv2.imread('image.jpeg', cv2.IMREAD_COLOR)
print(img)  #         

imread関数によるピクチャ参照1の読み出し:ピクチャ参照2:読み出し方式:
  • cv2.IMREAD_COLOR#:1カラー画像をロードすると、画像の透明度は無視されます.これはデフォルトのフラグ
  • です.
  • cv2.IMREAD_GRAYSCALE#:0画像
  • をグレースケールモードでロードする
  • cv2.IMREAD_UNCHANGED#:-1 alpha channel(透明チャネル)
  • を含む画像をロード
    読み込まれたのはマトリクス、線形代数です
    二、ウィンドウに画像を表示する
    import cv2
    
    img = cv2.imread('image.jpeg', cv2.IMREAD_COLOR)
    
    #     1        2       
    cv2.imshow('  A', img)
    
    #           0                >0             
    #      ascii 
    key = cv2.waitKey(0)
    
    

    imshow関数を使用して、最初に読んだデータをパラメータ1:カスタムウィンドウ名パラメータ2:画像データ(任意の複数のウィンドウを作成できますが、ウィンドウ名は異なることを保証する必要があります)を読み出します.
    ダイレクトコールimshowはデフォルトのウィンドウフォーマットを使用しており、まずズーム可能なウィンドウを作成し、新しいウィンドウにimshowで表示することができます.
    #               
    cv2.namedWindow('erha',cv2.WINDOW_NORMAL)
    

    cv2.waitKeyはキーボードバインド関数で、パラメータはミリ秒単位です.この関数は、指定したミリ秒以内のキーボードイベント(キーボードのいずれかのキーを押すなど)を待機します.その時間帯にキーボードのキーを押すと、プログラムは続行されます.パラメータが0に設定と、キーストロークが無期限に待機する.
    三、画像を保存する
    #        ,        
    cv2.imwrite('newimage', img)  
    

    imwrite関数を使用して、画像を保存します.
    参照1:新しいファイル名参照2:保存する画像の矩形情報
    画像を読み込んだ後、新しい画像に保存すると、保存する前に画像を修正することができます.
    四、画像データの修正
    1画像に白い線を追加
    import cv2
    
    #          
    img = cv2.imread('img1.jpg', cv2.IMREAD_UNCHANGED)
    
    
    # 2.             BGR
    for i in range(500):
        img[i, i] = [255, 255, 255]
    
    #         ( 1   , 2  )
    cv2.imwrite("newimg.jpg", img)
    
    key = cv2.waitKey(0)
    print(key)
    #     
    cv2.destroyAllWindows()
    

    修正した画像を保存したが、ウィンドウに表示されなかった.
    2画像の一部を別の画像に貼り付ける
    import os
    import cv2
    
    #            
    img1 = cv2.imread('img1.jpg', cv2.IMREAD_UNCHANGED)
    #          
    img2 = cv2.imread('img2.jpg', cv2.IMREAD_UNCHANGED)
    
    # x,y       
    img1[100:250, 100:250] = img2[200:350, 200:350]
    
    #   hehe    ,   img1
    cv2.imshow('hehe', img1)
    
    
    key = cv2.waitKey(0)
    print(key)
    #     
    cv2.destroyAllWindows()
    

    画像1の一部を画像2に表示する.
    補足:画像プロパティへのアクセス
    画像のプロパティには
  • 行数
  • 列数
  • チャネル数channels
  • 画像データ型
  • ピクセル数…など…
  • 1 . img.shape画像の形状はimg.shapeは、メタグループ形式の行数、列数、チャネル数(画像がカラーの場合)を返します.完全な画像は、赤と緑、青の3つのチャネルから構成されています.彼らの共同作用は完全な画像を生み出し、注意してください.
              3
            ,               ,             ,  
     shape                             
    

    2 . img.size画素の総数(行数x列数xチャネル数)はimgとすることができる.sizeが得る:
    3 . img.dtype画像のデータ型はimg.dtypeで取得:img.dtypeは、OpenCV-Pythonコードの多くのエラーが無効なデータ型によって引き起こされるため、debug中に非常に重要です.
    uint8        8      rgb         0-255,  8