opencv-python 学習 (8): 画像の切り取り、結合

原理は、画像マトリックスを操作することにより、指定された位置の画像を取得または結合することです。

写真の指定した領域をキャプチャするか、指定した領域に写真を追加します

コードは以下のように表示されます。

# 引入包
import cv2 as cv

def jie_image(src1):
    src2 = src1[369:637, 572:922] # 截取指定的区域
    cv.namedWindow("splice", cv.WINDOW_NORMAL)
    cv.imshow("splice", src2)
    src1[169:437, 572:922] = src2 # 指定位置填充,大小要一样才能填充
    cv.namedWindow("merge", cv.WINDOW_NORMAL)
    cv.imshow("merge", src1)

src = cv.imread("./static/image/blur.jpg")
cv.namedWindow("oldImage", cv.WINDOW_NORMAL)
cv.imshow("oldImage", src)
jie_image(src)
cv.waitKey(0)
cv.destroyAllWindows()

コード説明:
この図に従って解析してみましょうsrc1[369:637, 572:922]意味。

0:375 は、垂直方向から369 ~ 637 をインターセプトすることを指します
。 240:480 は、画像の左上隅を原点とした水平方向から572 ~ 922 をインターセプトすることを指します。

∣−−--------369,637 − − − − − − − − − − − − − − − − − >x
∣            ∣               ∣                  
∣            ∣               ∣                
∣            ∣               ∣               
∣            ∣− − − − − − −572,922
∣ 
∨ 
y 

もちろん、スライスを使用して関心領域 (ROI、関心領域) を選択することもできます。

PS. 最初、ここで xy が逆転しているのが不思議に思いましたが、実はこれは 2 次元の ndarray インデックスの概念が明確ではないためです。2 次元 ndarray インデックスは実際には C++/Java の 2 次元配列インデックスと同じで、最初に行を検索し、次に列を検索します。このように理解しても不思議ではありません。より具体的に言うと、実際には最初の軸を見つけてから 2 番目の軸を見つけます。軸の概念は、「基本」の最初の 3 つの段落を参照できます。y は最初の軸を表し、x は 2 番目の軸を表します。常に最初の軸が検索され、次に 2 番目の軸が検索されます。

src1[169:437, 572:922] = src2
ここで [169:437, 572:922] は src2 の画像と同じサイズである必要があります。そうでない場合はエラーが報告されます。

操作結果:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_33538887/article/details/118385008