オープン操作:重要な形態学的画像操作のいずれか、腐食の形成と組み合わせた拡張操作に基づいて、主に二値画像の解析に使用される、グレースケール画像よいです
= +拡張可能な操作上の腐食、入力構造要素画像+
処置:より大きな物体滑らかな境界が有意領域を変更しないでいる間に、小さなオブジェクトを除去するために、水平または垂直線抽出
開閉動作:腐食の形成と組み合わせた拡張操作に基づいて、重要な形態学的画像操作のいずれか、;主にバイナリ画像、グレースケール画像の解析に使用されてもよいです
= +拡張閉動作腐食、入力画像の構成要素+
処置:同時に、詰め物のための小さな穴は、オブジェクトがスムーズな境界領域が大きく変化しない隣接接続されています
パイソン達成
インポートCV2の DEF open_demo(画像): プリント(image.shape) 灰色 = cv2.cvtColor(画像、cv2.COLOR_BGR2GRAY) RET、バイナリ = cv2.threshold(灰色、0、255、cv2.THRESH_BINARY | cv2.THRESH_OTSU) CV2。関数imshow(" バイナリ" 、バイナリ) カーネル = cv2.getStructuringElement(cv2.MORPH_RECT、(5,5 )) バイナリ = cv2.morphologyEx(バイナリ、cv2.MORPH_OPEN、カーネル) cv2.imshow(" オープン結果" 、バイナリ) DEF close_demo(画像): プリント(image.shape) グレー =cv2.cvtColor(画像、cv2.COLOR_BGR2GRAY) RET、バイナリ = cv2.threshold(灰色、0、255、cv2.THRESH_BINARY | cv2.THRESH_OTSU) cv2.imshow(" バイナリ" 、バイナリ) カーネル = cv2.getStructuringElement(CV2 .MORPH_RECT、(5,5 )) バイナリ = cv2.morphologyEx(バイナリ、cv2.MORPH_CLOSE、カーネル) cv2.imshow(" 近い結果" 、バイナリ) であれば __name__ == " __main__ " : IMG = cv2.imread(" 画像/open.jpg 」) cv2.namedWindow("入力画像"cv2.WINDOW_AUTOSIZE) cv2.imshow(" 入力画像」、IMG) open_demo(IMG) cv2.waitKey(0) cv2.destroyAllWindows()
オープンなオペレーティング結果、そのまま他の構成要素を保ち、小さなオブジェクトを排除
私たちは、カーネルのサイズを変更すると、あなたは私たちは=(15,1)ksizeを設定するなど、さまざまな効果を得ることができ、画像を横一直線に抽出することができます
カーネル= cv2.getStructuringElement(cv2.MORPH_RECT、(15、1 ))
バイナリ = cv2.morphologyEx(バイナリ、cv2.MORPH_OPEN、カーネル)
同様に、我々は、(1,15)= ksizeてみましょう、あなたは垂直線の画像を抽出することができます。結果は以下の通りであります
操作閉会結果、他の人が変更されないまま、囲まれた領域を塗りつぶし
我々はコアの形状を変更したときだけでなく、そのようなイメージサークルの抽出などのさまざまな効果を達成するために
カーネル= cv2.getStructuringElement(cv2.MORPH_ELLIPSE、(5,5 ))
バイナリ = cv2.morphologyEx(バイナリ、cv2.MORPH_CLOSE、カーネル)
結果は以下の通りであります
SRCパラメータ:入力画像
OPパラメータ:操作のタイプ
MORTH_OPEN 函数做开运算
MORTH_CLOSE 函数做闭运算
MORTH_GRADIENT 函数做形态学梯度运算
MORTH_TOPHAT 函数做顶帽运算
MORTH_BLACKHAT 函数做黑帽运算
MORTH_DILATE 函数做膨胀运算
MORTH_ERODE 函数做腐蚀运算
kernel参数 :内核类型,用getStructuringElement函数得到