パイソン+ OpenCVのは、画像のエッジ検出、画像フィルタ機能を実現します

パイソンJupyterノートで使用される画像をフィルタリングし、次のエッジ検出コードを達成するため、特定の機能を実行処理画像を達成するためのプロセスは、ビットラフであってもよいです。:を参照することができますOpenCVのライブラリにインストールOpenCVのライブラリと要約問題のいくつかの下でPythonのインストール

まず、エッジ抽出

インポート CV2 インポートOpenCVのライブラリ

#は、オリジナルのグラデーション画像の読み取り 
画像cv2.imread =(test.bmp 
cv2.imshow(画像、画像)「画像」という名前の元の画像を表示されている

#の閾値画像を分割処理、画像処理が白黒二値画像に対して約ある 
RET、画像1 = cv2.threshold(画像、80、255、cv2.THRESH_BINARY)   #1 バイナリ(白黒2値)、代表RET閾値、低い閾値が80であり、 255は高閾値である 
cv2.imshow(画像1 、画像1)#1 しきい値プロセス名「画像1」が表示された後、画像

バイナリ画像の色反転、反転画像のピクセルの 
高さ、幅= image1.shape 画像サイズに戻す 
画像2 = image1.copy()
 I における範囲(高さ)
     のために J レンジ(幅):
        画像2 [I、J] =(255- 画像1 [I、J])
cv2.imshow(' 画像2 '、画像2) 処理後の反応色「画像2」という名前の画像を表示

キャニー関数を使用してエッジ抽出を 
image2_3 = cv2.Canny(image2,80,255) 低閾値に設定80、高しきい値255 
cv2.imshow(image2_3 、image2_3)#1 エッジ抽出画像は「image2_3」が表示されているという名前の後に

エッジ抽出の再度カラー反転画像が黒であり、残りは、同じ方法で白画像2 
height1、WIDTH1 = image2_3.shape 
画像3 = image2_3.copy()
 I における範囲(height1)
     のための J :(WIDTH1)レンジ
        画像3 [I、J] =(255- image2_3 [I、J])
cv2.imshow(' 画像3 '、画像3) 逆カラーエッジ抽出後「画像3」という名前の画像が表示さ 
cv2.waitKey(0) キーボード入力待ちを、無限の待機入力しないでください 
(cv2.destroyAllWindowsを)   すべてのウィンドウを破壊します

結果:

 

 

 

 

 

 

 

 

 

 

第二に、画像フィルタ

インポートCV2
 インポートnumpyの
 インポートは、ASのPLTをmatplotlib.pyplot
 から PIL インポート画像、ImageDraw、ImageFont 

絵に中国語の文字を追加するために
DEF ImgText_CN(IMG、テキスト、左、上、の、textColor =(0、255、0)、TEXTSIZE = 20 ):
     のiF(でisinstance(IMG、numpy.ndarray)):  決定するかどうかOpenCVの画像タイプ 
        IMG = Image.fromarray(cv2.cvtColor(IMG、cv2.COLOR_BGR2RGB))
    描画 = ImageDraw.Draw(IMG)
    fontText = ImageFontを。 TrueTypeフォント(" フォント/ simhei.ttf "コード=、TEXTSIZE、" UTF-8 "
    Draw.text((上、左)、テキスト、の、textColor、フォント = fontText)
 戻りcv2.cvtColor(numpy.asarray(IMG)、cv2.COLOR_RGB2BGR) 

、元のグレースケール画像を読み取る 
SRC = cv2.imread(" TEST2 .BMP " 
cv2.imshow(" SRC "SRC) 名前原画像" SRC "示さ 
src_cn = ImgText_CN(SRC、" 原画像、5、5、(255、0、0)、20 
cv2.imshow(" src_cn "、src_cn) "src_cn"という名前の追加のテキストSRCが表示され、平均フィルタ 
デcv2.blur =(SRC、(5、5 ))
cv2.imshow("DES "DES) 名前SRC後の平均フィルタリング処理" DES "と表示 
des_cn = ImgText_CN(DES、" 平均値フィルタ、5 ,. 5、(255、0、0)、20である
cv2.imshow(" des_cn "、des_cn) 追加テキストDESは"des_cn"と命名されて表示メディアンフィルタ 
メッド= cv2.medianBlurを(SRC ,. 5 
cv2.imshow(" メッド"、メッド)メディアンフィルタ"のmed"と表示された名前のSRCの後 
med_cn = ImgText_CNを(メッド、" メディアンフィルタリング"、5 ,. 5、(255、0、0)、20がある
cv2.imshow(" med_cn "、med_cn) 追加テキストは、 "med_cn"と命名し、表示MED ガウス 
ガウス= cv2.GaussianBlur(SRC、(5,5 )、0)
cv2.imshow(" ガウス"、ガウス)ガウシアンフィルタ処理後のSRC "ガウス"という名前で表示 
gauss_cn = ImgText_CN(ガウス、" ガウス"、5 ,. 5、(255、0、0)、20である
cv2.imshow(" gauss_cn "、gauss_cn) 追加テキストガウス名付け"gauss_cn"と表示されガウスエッジ検出 
gaussedge = cv2.Canny(ガウス、0,50 
cv2.imshow(" gaussedge "、gaussedge) ガウス後端検出が"gaussedge"と命名され、表示れる処理
= ImgText_CN gaussedge_cn(gaussedge、" ガウスエッジ検出"、5 ,. 5、(0、255、0)、20である
cv2.imshow(" gaussedge_cn "、gaussedge_cn) "gaussedge_cn"という名前のテキストgaussedgeを追加して表示 
cv2.waitKey(0)

結果:

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/BIXIABUMO/p/12594654.html