PythonとGoogle_Colab_AI作成

Last-modified: 2024-10-21 (月) 22:47:13

※GIMPを使用した手作業、人力の方が、精度が高い。

未完成のプログラム。この方法は普段は不使用。
実験的な内容になる。
Google Colab AIを使用して、
二つの画像の差分を検出して切り取り、もう片方の画像に貼り付けるプログラムを作成して貰った。
画像の幅と高さを合わせて、ズレが無いことが前提となる。
中国語のコメントは、プログラムの生成と共に作られた。そのコメントの右の文章は、DeepLで翻訳して貰った。
文字化けした場合はコメントは削除して貰ってもいい。

Google Colab AIへの指示文を、以下に示す。
「pythonを使用して、二つの画像の差分を複数、検出して、切り取って、もう片方の画像に貼り付けるプログラムを作成して下さい。」

【環境】
Google Colab AI
Anaconda3
Jupyter Notebook

【使い方】
img1 = cv2.imread(path1)の「path1」の所に、無修正(海外版)の画像のダブルコーテーション有りのパスを入れる。
img2 = cv2.imread(path2)の「path2」の所に、修正有り(日本語版)の画像のダブルコーテーション有りのパスを入れる。
エラーが出る場合は、パスの前に「R」か「r」を打つ。

以下に例を示す。

img1 = cv2.imread(r"C:\Users\user\Desktop\pythoncolab1.jpg")

以下に、プログラムを示す。






import cv2
import numpy as np

# 2つの画像を読む
img1 = cv2.imread(path1)
img2 = cv2.imread(path2)

#  画像をグレースケールに変換する
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

#  2つの画像の差の絶対値を計算する
diff = cv2.absdiff(gray1, gray2)

#  差分画像の閾値処理
thresh = cv2.threshold(diff, 10, 255, cv2.THRESH_BINARY)[1]

#  閾値処理された画像に対してモルフォロジー演算を行う
kernel = np.ones((5,5),np.uint8)
thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
thresh = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)

#  閾値処理された画像から輪郭を見つける
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

#  アウトラインの横断
for contour in contours:
    #  アウトラインのバウンディングボックスを取得
    x, y, w, h = cv2.boundingRect(contour)

    #  アウトラインが十分な大きさであれば、それをカットして別の画像に貼り付けます。
    if w > 5 and h > 5:
        # 剪切差异
        diff_region = img1[y:y+h, x:x+w]

        #  差分を別の画像に貼り付ける
        img2[y:y+h, x:x+w] = diff_region



cv2.imwrite('res.png', img2)

#
cv2.imshow('Result', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()

実験結果

zoom,代替文字列zoom,代替文字列
zoom,代替文字列