C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

OpenCV 膨張・収縮

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■93798 / inTopicNo.1)  OpenCV 膨張・収縮
  
□投稿者/ S (1回)-(2020/02/03(Mon) 16:40:45)

分類:[.NET 全般] 

OpenCV初心者です。

import cv2
import numpy as np

#画像読み込みと画像の高さ・幅の取得
img_src = cv2.imread("./tablets.png", cv2.IMREAD_ANYCOLOR)
h = img_src.shape[0] #画像の高さ
w = img_src.shape[1] #画像の幅

#入力画像をグレイスケールに変換
img_gray = cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY)

#空の画像
img_bin = np.zeros((h, w), np.uint8) #2値画像
img_dst1 = np.zeros((h, w), np.uint8) #続く処理後の画像
img_dst2 = np.zeros((h, w), np.uint8) #続く処理後の画像

#2値化
for j in range(h):
for i in range(w):
if img_gray[j, i] > 192:
img_bin[j, i] = 255

#膨張
for j in range(1, h-1):
for i in range(1, w-1):
#1画素分輪郭を膨らませる処理
max = 0
if max < img_bin[j-1, i-1]:
max = img_bin[j-1, i-1]
if max < img_bin[j-1, i ]:
max = img_bin[j-1, i ]
if max < img_bin[j-1, i+1]:
max = img_bin[j-1, i+1]
if max < img_bin[j , i-1]:
max = img_bin[j , i-1]
if max < img_bin[j , i ]:
max = img_bin[j , i ]
if max < img_bin[j , i+1]:
max = img_bin[j , i+1]
if max < img_bin[j+1, i-1]:
max = img_bin[j+1, i-1]
if max < img_bin[j+1, i ]:
max = img_bin[j+1, i ]
if max < img_bin[j+1, i+1]:
max = img_bin[j+1, i+1]

img_dst1[j, i] = max

膨張は上記のような形で行うことができたのですが、収縮をどのようにすればよいか分かりません。
収縮を上記の膨張のような形で行うにはどうすれば良いかどなたか教えていただければ幸いです。
宜しくお願いします。
引用返信 編集キー/
■93799 / inTopicNo.2)  Re[1]: OpenCV 膨張・収縮
□投稿者/ みい (114回)-(2020/02/03(Mon) 17:22:56)
2020/02/03(Mon) 17:31:17 編集(投稿者)
No93798 (S さん) に返信
> 膨張は上記のような形で行うことができたのですが、収縮をどのようにすればよいか分かりません。
逆にすればよいのでは?

min = 255;
if min > img_bin[j-1, i-1]:
    min = img_bin[j-1, i-1]
  (中略)
img_dst1[j, i] = min

膨張後のimg_dst1を収縮したいのなら
min = 255;
if min > img_dst1[j-1, i-1]:
    min = img_dst1[j-1, i-1]
  (中略)
img_dst2[j, i] = min

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ