Opencv イメージの読み取りと書き込み

目次

インポートCV2

画像データを読み込む

ウィンドウを作成する

waitKey メソッド

すべてのウィンドウを閉じます

完全な例

画像を保存する


インポートCV2

# 导入opencv包
import cv2

画像データを読み込む

cv2.imread(path, flag)
パラメータの説明: 
path: 読み込む画像ファイルのパス。
flag (オプション): 画像の読み取り方法を指定します。次のフラグのいずれかになります: 
cv2.IMREAD_COLOR (デフォルト): 透明度を無視して、イメージをカラー イメージとして読み取ります。
cv2.IMREAD_GRAYSCALE: 画像をグレースケール画像として読み取ります。
cv2.IMREAD_UNCHANGED: 画像はアルファ チャネル (存在する場合) を含めて読み取られます。
戻り値:
画像が正常に読み取られた場合、imread() 関数は画像データを表す NumPy 配列オブジェクトを返します。
画像を読み取れなかった場合(ファイルパスが間違っているか、ファイル形式がサポートされていないなど)、None を返します。
    # 读取图像数据,保存到image变量里
    image = cv2.imread(path, cv2.IMREAD_COLOR)

 

ウィンドウを作成する

# サイズを自動的に変更する新しいウィンドウを作成する
cv2.namedWindow('new', cv2.WINDOW_AUTOSIZE) 
cv2.imshow('new', 0)
# サイズ変更可能な新しいウィンドウを作成します
cv2.namedWindow('new', cv2.WINDOW_NORMAL) 
# ウィンドウのサイズを指定された幅と高さに変更します (ここでは 1920x1080) 
cv2.resizeWindow('new', 1920, 1080)
# new という名前の表示ウィンドウを作成し、画像データを表示
cv2.imshow('new', image)

waitKey メソッド

# キーボード入力を待機しています。waitKey メソッドはキーを待機していることを意味し、キーの ASCII 値が返されます。
# 0 は任意のキーを意味し、他の整数はキーの待機時間をミリ秒単位で意味し、ウィンドウは自動的に時間が経過してもキー操作がなければ閉じる # ord get
入力された文字を判断するための文字の ASCII 値を取得し、その後の操作を実行できます
Key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
    cv2.destroyAllWindows()  
# 如果输入的是q  key & 0xFF将保留key的低八位(即最后8个二进制位),相当于对256取余。

すべてのウィンドウを閉じます

cv2.destroyAllWindows()

完全な例

import cv2

# 展示图片
def show_image(path):
    # 读取图像数据,保存到image变量里
    image = cv2.imread(path, cv2.IMREAD_COLOR)
    # 检查图像是否成功读取
    if image is not None:
        # 创建一个自动调整大小的新窗口
        cv2.namedWindow('new', cv2.WINDOW_AUTOSIZE)
        cv2.imshow('new', 0)

        # 创建一个具有可调整大小的新窗口
        cv2.namedWindow('new', cv2.WINDOW_NORMAL)
        # 将窗口大小调整为指定的宽度和高度(这里是1920x1080)
        cv2.resizeWindow('new', 1920, 1080)

        # 创建一个名为new的显示窗口,并显示图像数据
        cv2.imshow('new', image)

        # 等待键盘输入,waitKey方法表示等待按键, 会返回按键的ascii的值
        # 0表示任何按键, 其他整数表示等待按键的时间,单位是毫秒, 超过时间没有发生按键操作窗口会自动关闭.
        Key = cv2.waitKey(0)

        # ord获得字符的ascii的值,可以据此判断输入的字符,然后进行进一步操作
        # if key & 0xFF == ord('q'):  # 如果输入的是q  key & 0xFF将保留key的低八位(即最后8个二进制位),相当于对256取余。
        if Key:
            # 关闭所有窗口
            cv2.destroyAllWindows()
        print(f'{path}的图像成功读取')
        return 0
    else:
        print("无法读取图像")
        return -1

show_image('1.jpg')

画像を保存する

cv2.imwrite("パス名", 保存する画像( NumPy 配列オブジェクト))
img=cv2.imread('img.jpg')
cv2.imwrite("./123.png", img)

# 保存图片
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.resizeWindow('img', 320, 240)
img = cv2.imread("images/5.jpg")
# 利用while循环优化退出逻辑
print("开始保存图片,按esc键退出")
while True:
    cv2.imshow('img', img)
    key = cv2.waitKey(0)
    if key & 0xFF == 27:
        break
    elif key & 0xFF == ord('s'):
        # 使用imwrite保存图片
        cv2.imwrite("./123.png", img)
        print("图片保存成功")
    else:
        print(key)
cv2.destroyAllWindows()

おすすめ

転載: blog.csdn.net/m0_74921567/article/details/132384991