2017-04-27 16 views
0

私の目標は、画像から任意のカードを抽出するために..ですキャンバス:画像内のカードの検索コーナー

説明:

私は最初に次のイメージを持っている...

Original Image

キャンバス上に描いて、鋭いエッジ検出を適用し、これを得ました。

Image after Canny Edge Detection

私が取得したい結果はとsomethigようになります。私は、カードの角を見つける必要がある画像からカードを抽出するには

required output

OR

私はインターネット上で見つかったもう一つの方法は次のとおりです。そして、すべてのエッジによる

  1. ループとクローズのものを見つけ、

  2. は最大のクローズドエッジと作物を探しますそれに応じて。

しかし、いずれの方法を実装するためのロジックを構築しようとしている間、私は無知になっています。

エッジ検出を得るためにこれをした、そしてさらに進行することができません:

var img = new Image(); 
img.src = "bcard.png"; 
img.onload = function() { 
    var canv = document.getElementById("canv"); 
    var ctx = canv.getContext("2d"); 
    canv.height = img.height; 
    canv.width = img.width; 
    ctx.drawImage(img,0,0); 
    window.canny = CannyJS.canny(canv); //included a js script to do canny edge detection 
    canny.drawOn(canv); 

}

+0

あなたが試したコードを含めてください。画像は助けになりません! – Pugazh

+0

@Pugazhエッジ検出を取得した後、さらに進んでいく方法を推測することができません。 –

答えて

1

まず、私が提供された画像から赤チャンネル抽出しました。

赤チャネル画像:

enter image description here

次は私がガウスぼかしを適用し、それをぼやけ。

ボケ画像:

enter image description here

最後に、私は、次を得るためにエッジ検出を行います。

最終エッジ:カードをトリミングするために

enter image description here

は完全にあなただけONE外部輪郭を見つける必要があります。あなたはDILATE結果の画像

膨張画像があることを行うには:

enter image description here

を今、あなたは輪郭を見つける必要があります。存在する外部輪郭を見つける。この場合、輪郭は1つしか見つかりません。この輪郭の周りに境界の矩形を描画します。境界矩形の座標を使用して

enter image description here

作物画像:

enter image description here

(I Pythonで結果のスクリプトを持っていますが、私はあなたのコード内のスクリプト化している見ますjavascript)

+1

努力をいただきありがとうございます。このアプローチでJavascriptで何ができるのですか? –

+0

@SauravPradhan前にぼかしを行うための適切なカーネルサイズを選択しましたエッジを見つける。この場合、カーネルのサイズは5 –

+0

です。Pythonで使った画像の赤いチャンネルを抽出するコードを教えてください。@ Jeru Luke –

関連する問題