タグ付けされた質問 「opencv」

OpenCV(オープンソースコンピュータービジョン)は、リアルタイムコンピュータービジョン用のライブラリです。このタグを使用するときは、使用しているOpenCVリリース(例:3.4.6)について言及し、必要に応じて言語固有のタグ(python、c ++など)を追加してください。

24
画像処理:「コカ・コーラ缶」認識のためのアルゴリズムの改善
私が過去数年間取り組んだ最も興味深いプロジェクトの1つは、画像処理に関するプロジェクトでした。目標は、コカコーラの「缶」を認識できるシステムを開発することでした(「缶」という言葉を強調していることに注意してください。その理由はすぐにわかります)。下のサンプルを見ることができます。缶はスケールと回転で緑色の長方形で認識されます。 プロジェクトに関するいくつかの制約: 背景は非常に騒々しいかもしれません。 缶は、任意の可能性があり、スケールまたは回転(合理的な範囲内で)、あるいは配向を。 画像にある程度のぼやけがある可能性があります(輪郭が完全にまっすぐではない場合があります)。 画像にコカコーラのボトルが含まれている可能性があり、アルゴリズムは缶を検出するだけです! 画像の明るさは大きく異なる可能性があります(そのため、色の検出に「過度に」依存することはできません)。 缶は、部分的側面または途中に隠された、おそらく一部は瓶の後ろに隠れてすることができます。 画像にはまったく缶がありません。その場合、何も見つからず、そのことを伝えるメッセージを書く必要がありました。 したがって、次のようなトリッキーなものになる可能性があります(この場合、アルゴリズムが完全に失敗しました)。 私はこのプロジェクトを少し前にやっていましたが、それを行うのはとても面白かったし、適切な実装がありました。ここに私の実装に関するいくつかの詳細があります: 言語:OpenCVライブラリを使用してC ++で実行。 前処理:画像の前処理、つまり画像をより生の形式に変換してアルゴリズムに提供するために、2つの方法を使用しました。 カラードメインをRGBからHSVに変更し、「赤」の色相に基づいてフィルタリングし、特定のしきい値を超える彩度でオレンジ色のような色を避け、低い値でフィルタリングして暗い色調を避けます。最終結果は、白黒のバイナリ画像で、すべての白いピクセルがこのしきい値に一致するピクセルを表します。明らかに画像にはまだがらくたがたくさんありますが、これにより、操作する必要がある次元の数が減ります。 ノイズを減らすために、メディアンフィルタリング(すべての近傍のピクセル値の中央値を取り、この値でピクセルを置き換える)を使用したノイズフィルタリング。 キャニーエッジ検出フィルターを使用して、前の2つの手順の後にすべてのアイテムの輪郭を取得します。 アルゴリズム:このタスクで選択したアルゴリズム自体は、特徴抽出に関するこの素晴らしい本から引用され、一般化ハフ変換(通常のハフ変換とはかなり異なります)と呼ばれています。それは基本的にいくつかのことを言います: 分析方程式(ここではその場合)を知らなくても、空間内のオブジェクトを記述できます。 スケーリング係数と回転係数のすべての組み合わせについて画像を基本的にテストするため、スケーリングや回転などの画像変形に耐性があります。 アルゴリズムが「学習」する基本モデル(テンプレート)を使用します。 輪郭画像に残っている各ピクセルは、モデルから学んだことに基づいて、オブジェクトの(重力に関して)中心となる別のピクセルに投票します。 最後に、投票のヒートマップが作成されます。たとえば、ここでは、缶の輪郭のすべてのピクセルがその重心に投票するので、同じピクセルに対応する多数の投票が中央にあり、ヒートマップに次のようなピークが表示されます。 それができたら、単純なしきい値ベースのヒューリスティックが中心ピクセルの位置を提供し、そこからスケールと回転を導き出し、その周りに小さな長方形をプロットできます(最終的なスケールと回転係数は明らかに、元のテンプレート)。理論的には少なくとも... 結果:現在、このアプローチは基本的なケースでは機能しましたが、一部の領域では非常に不十分でした。 それは非常に遅いです!私はこれを十分に強調していません。一部の缶が非常に小さかったため、回転と平行移動のスケーリング係数が非常に高かったため、30枚のテスト画像の処理にはほぼ1日が必要でした。 ボトルが画像内にあると完全に失われ、何らかの理由でほとんどの場合、缶の代わりにボトルが見つかりました(おそらく、ボトルが大きく、ピクセルが多く、投票数が多かったためです)。 投票は中央付近のランダムな場所のピクセルで行われ、非常にノイズの多いヒートマップで終わったため、あいまいな画像も良くありませんでした。 平行移動と回転の不変が達成されましたが、向きは達成されませんでした。つまり、カメラの対物レンズに直接面していない缶は認識されませんでした。 上記の4つの特定の問題を解決するために、OpenCV機能のみを使用して、特定のアルゴリズムを改善するのを手伝っていただけますか? 何かを学んでくれる人もいるといいのですが、結局、質問をする人だけが学ぶべきではないと思います。:)

10
クリスマスツリーを検出するには?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 昨年休業。 次の画像に表示されるクリスマスツリーを検出するアプリケーションを実装するために使用できる画像処理技術はどれですか。 これらすべての画像で機能するソリューションを探しています。したがって、ハールカスケード分類器またはテンプレートマッチングのトレーニングを必要とするアプローチは、それほど興味深いものではありません。 オープンソーステクノロジーのみを使用している限り、任意のプログラミング言語で記述できるものを探しています。ソリューションは、この質問で共有されている画像でテストする必要があります。あり6枚の入力画像は、その答えは、それらのそれぞれの処理結果を表示する必要があります。最後に、各出力画像には、検出されたツリーを囲むように赤い線が描画されている必要があります。 これらの画像に含まれる木をプログラムでどのように検出しますか?

3
OpenCV-Pythonのシンプルな数字認識OCR
OpenCV-Python(cv2)で「数字認識OCR」を実装しようとしています。それは単に学習目的のためです。OpenCVのKNearest機能とSVM機能の両方について学びたいと思います。 各桁のサンプル(画像)が100個あります。一緒にトレーニングしたいです。 letter_recog.pyOpenCVサンプルに付属するサンプルがあります。しかし、それをどうやって使うのかまだ分かりませんでした。サンプルやレスポンスなどがわかりません。また、最初はtxtファイルが読み込まれましたが、最初はわかりませんでした。 後で少し検索すると、cppサンプルにletter_recognition.dataが見つかりました。私はそれを使用し、letter_recog.pyのモデルでcv2.KNearestのコードを作成しました(テスト用のみ): import numpy as np import cv2 fn = 'letter-recognition.data' a = np.loadtxt(fn, np.float32, delimiter=',', converters={ 0 : lambda ch : ord(ch)-ord('A') }) samples, responses = a[:,1:], a[:,0] model = cv2.KNearest() retval = model.train(samples,responses) retval, results, neigh_resp, dists = model.find_nearest(samples, k = 10) print results.ravel() それは私にサイズ20000の配列を与えました、私はそれが何であるかわかりません。 質問: …

16
OpenCVの使用時にモジュールcv2が見つかりません
OpenCVをインストールしましたここにある jayrambhiaのスクリプトを使用して、Raspberry PiのOccidentalisオペレーティングシステム(Raspbianの一種)にました。バージョン2.4.5をインストールしました。 import cv2Pythonプログラムで実行しようとすると、次のメッセージが表示されます。 pi@raspberrypi~$ python cam.py Traceback (most recent call last) File "cam.py", line 1, in <module> import cv2 ImportError: No module named cv2 ファイル cv2.soはに保存されます/usr/local/lib/python2.7/site-packages/... にはフォルダもあります /usr/local/libpython3.2とpython2.6というが、問題になる可能性、よくわかりません。 これはおそらくパスエラーですか?Linuxは初めてです。

8
Pythonを使用してOpenCVで画像をトリミングする方法
以前にPILで行ったように、OpenCVを使用して画像をトリミングする方法を教えてください。 PILの作業例 im = Image.open('0.png').convert('L') im = im.crop((1, 1, 98, 33)) im.save('_0.png') しかし、どうすればOpenCVでそれを実行できますか? これは私が試したものです: im = cv.imread('0.png', cv.CV_LOAD_IMAGE_GRAYSCALE) (thresh, im_bw) = cv.threshold(im, 128, 255, cv.THRESH_OTSU) im = cv.getRectSubPix(im_bw, (98, 33), (1, 1)) cv.imshow('Img', im) cv.waitKey(0) しかし、それは機能しません。 私は間違って使用したと思いますgetRectSubPix。その場合は、この機能の使い方を教えてください。
234 python  opencv 

30
Condaを介してPython OpenCVをインストールするにはどうすればよいですか?
Anacondaを介してPython用のOpenCVをインストールしようとしていますが、これを理解できないようです。 私は試した conda install opencv conda install cv2 私も検索してみました conda search cv シガーなし。opencv含まれているパッケージとしてリストされているこれに遭遇しました: http://docs.continuum.io/anaconda/pkgs.html 実行後conda info、バージョンが3.4.1であることに気付きましたが、このバージョンに関する情報をオンラインで見つけることができませんでした。私はこれについてかなり混乱しています。 ここにかなり明白なものがないのですか?opencv以前のバージョンのAnacondaで利用できた場合、なぜそれが新しいバージョンで利用できないのですか?そして、なぜそのリンクはバージョン1.9.2のドキュメントしか表示しないのですか?
230 python  opencv  anaconda  conda 


7
画像の類似性を比較するためのシンプルで高速な方法
2つの画像の類似性を比較する簡単で高速な方法が必要です。つまり、まったく同じものが含まれていても、背景がわずかに異なり、数ピクセルずつ移動/サイズ変更されている可能性がある場合は、高い値を取得します。 (それが重要な場合、より具体的には:1つの画像がアイコンであり、他の画像がスクリーンショットのサブエリアであり、そのサブエリアが正確にアイコンであるかどうか知りたい。) 私はOpenCVを手元に持っていますが、まだ慣れていません。 これまでに考えた1つの可能性:両方の画像を10x10のセルに分割し、それらの100個のセルのそれぞれについて、カラーヒストグラムを比較します。次に、いくつかの構成されたしきい値を設定できます。取得した値がそのしきい値を超えている場合、それらは類似していると想定します。 まだ十分に機能していないので、まだ試していませんが、これで十分でしょう。画像はすでに(私の使用例では)かなり似ているので、かなり高いしきい値を使用できます。 これには他にも何十もの解決策があり、多かれ少なかれ機能すると思います(本当に非常に類似している場合にのみ類似性を検出したいので、タスク自体は非常に単純なので)。何を提案しますか? 画像から署名/指紋/ハッシュを取得することに関して、非常に関連する/類似した質問がいくつかあります。 OpenCV / SURF記述子から画像ハッシュ/フィンガープリント/署名を生成する方法は? 多くの画像の類似性を比較するための画像指紋 ほぼ重複する画像の検出 OpenCV:指紋画像とデータベースとの比較。 もっと、もっと、もっと、もっと、もっと、もっと、もっと また、フィンガープリントを取得するための機能を備えたこれらの実装に遭遇しました。 pHash imgSeek(GitHub repo)(GPL)は紙の高速マルチ解像度画像クエリに基づいています 画像一致。私が探していたものとよく似ています。あらゆる種類の画像の画像署名、ゴールドバーグらに基づくpHashに似ています。PythonとElasticsearchを使用します。 iqdb ImageHash。pHashをサポートします。 イメージ重複排除機能(imagededup)。CNN、PHash、DHash、WHash、AHashをサポートします。 知覚的画像ハッシュに関するいくつかの議論:ここ 少し問題:オーディオ指紋を作成する方法はたくさんあります。MusicBrainzは、曲の指紋ベースの検索を提供するWebサービスであり、wikiに概要があります。現在、AcoustIDを使用しています。これは、正確な(またはほぼ完全な)一致を見つけるためのものです。同様の一致を見つけるには(または一部のスニペットまたはノイズが多い場合)、Echoprintを参照してください。関連するSOの質問はこちらです。したがって、これはオーディオについては解決されているようです。これらのソリューションはすべて非常に優れています。 ファジー検索全般についてのもう少し一般的な質問はこちらです。たとえば、局所性に敏感なハッシュと最近傍探索があります。

6
数独の正方形の凸状欠陥を取り除く方法は?
私は楽しいプロジェクトをしていた:OpenCVを使用して(Googleゴーグルなどのように)入力画像から数独を解く。そして、私はタスクを完了しましたが、最後に私がここに来た小さな問題を見つけました。 OpenCV 2.3.1のPython APIを使用してプログラミングを行いました。 以下は私がやったことです: 画像を読む 輪郭を見つける 最大の面積を持つものを選択します(また、正方形と多少同等です)。 コーナーポイントを見つけます。 たとえば、以下のとおりです。 (緑の線が数独の真の境界と正確に一致しているため、数独を正しく歪めることができます。次の画像を確認してください) 画像を完全な正方形にワープします 例:画像: OCRを実行します(OpenCV-PythonのSimple Digit Recognition OCRで指定した方法を使用しました) そして、方法はうまくいきました。 問題: この画像をチェックしてください。 この画像に対して手順4を実行すると、以下の結果が得られます。 描かれた赤い線は、数独境界の真の輪郭である元の輪郭です。 描かれた緑の線は近似された輪郭であり、ワープされた画像の輪郭になります。 もちろん、数独の上端で緑の線と赤の線に違いがあります。したがって、ワープしている間、私は数独の元の境界を取得していません。 私の質問 : 数独の正しい境界、つまり赤い線で画像を歪めるにはどうすればよいですか、またはどのように赤い線と緑の線の違いを取り除くことができますか?OpenCVでこれを行う方法はありますか?

6
OpenCV C ++ / Obj-C:1枚の紙の検出/ Square検出
OpenCVの正方形検出の例をテストアプリケーションに正常に実装しましたが、出力がかなり乱雑なので、フィルター処理する必要があります。または、コードが間違っていますか? 私は(のようなスキュー低減のために紙の4つの隅の点に興味があること)、さらに処理... 入出力: 元の画像: クリック コード: double angle( cv::Point pt1, cv::Point pt2, cv::Point pt0 ) { double dx1 = pt1.x - pt0.x; double dy1 = pt1.y - pt0.y; double dx2 = pt2.x - pt0.x; double dy2 = pt2.y - pt0.y; return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10); …

2
OpenCV –未校正ステレオシステムの深度マップ
キャリブレーションされていない方法で深度マップを取得しようとしています。SIFTで対応する点を見つけ、を使用することで、基本行列を取得できcv2.findFundamentalMatます。次に、を使用cv2.stereoRectifyUncalibratedして各画像のホモグラフィ行列を取得します。最後にcv2.warpPerspective、視差を修正して計算するために使用しますが、これでは適切な深度マップが作成されません。値が非常に高いので、を使用するwarpPerspective必要があるのか​​、またはで取得したホモグラフィ行列から回転行列を計算する必要があるのか​​疑問に思いstereoRectifyUncalibratedます。 をstereoRectifyUncalibrated修正して得られたホモグラフィ行列の場合の射影行列がわかりません。 コードの一部: #Obtainment of the correspondent point with SIFT sift = cv2.SIFT() ###find the keypoints and descriptors with SIFT kp1, des1 = sift.detectAndCompute(dst1,None) kp2, des2 = sift.detectAndCompute(dst2,None) ###FLANN parameters FLANN_INDEX_KDTREE = 0 index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5) search_params = dict(checks=50) flann = cv2.FlannBasedMatcher(index_params,search_params) matches = flann.knnMatch(des1,des2,k=2) …

5
OpenCV2.0とPython2.6で画像のサイズを変更する方法
OpenCV2.0とPython2.6を使用して、サイズ変更された画像を表示したいと思います。私はhttp://opencv.willowgarage.com/documentation/python/cookbook.htmlの例を使用して採用しましたが、残念ながらこのコードはOpenCV2.1用であり、2.0では動作していないようです。ここに私のコード: import os, glob import cv ulpath = "exampleshq/" for infile in glob.glob( os.path.join(ulpath, "*.jpg") ): im = cv.LoadImage(infile) thumbnail = cv.CreateMat(im.rows/10, im.cols/10, cv.CV_8UC3) cv.Resize(im, thumbnail) cv.NamedWindow(infile) cv.ShowImage(infile, thumbnail) cv.WaitKey(0) cv.DestroyWindow(name) 使えないので cv.LoadImageM 使った cv.LoadImage 代わりに、他のアプリケーションでは問題ありませんでした。それにもかかわらず、cv.iplimageには属性の行、列、サイズはありません。誰でも私にヒントを与えることができますか、この問題を解決する方法は?ありがとう。

9
テキストOpenCVの抽出
画像内のテキストの境界ボックスを見つけようとしていますが、現在このアプローチを使用しています。 // calculate the local variances of the grayscale image Mat t_mean, t_mean_2; Mat grayF; outImg_gray.convertTo(grayF, CV_32F); int winSize = 35; blur(grayF, t_mean, cv::Size(winSize,winSize)); blur(grayF.mul(grayF), t_mean_2, cv::Size(winSize,winSize)); Mat varMat = t_mean_2 - t_mean.mul(t_mean); varMat.convertTo(varMat, CV_8U); // threshold the high variance regions Mat varMatRegions = varMat > 100; このような画像が与えられると: それから私が示すとき私はvarMatRegionsこの画像を取得します: ご覧のように、テキストの左側のブロックとカードのヘッダーが少し組み合わされています。ほとんどのカードでは、この方法はうまく機能しますが、使用頻度の高いカードでは問題が発生する可能性があります。 …

7
Android StudioのOpenCV
Android StudioのアプリでOpenCVライブラリを使用したい。ここにある指示に従いましたが、エラーになります 「デフォルト」という名前の設定が見つかりません 何が悪いのでしょうか? Android Studio 1.0とGradle 2.2.1を使用しています。

4
OpenCVで2つの画像がどの程度類似しているかをどのように評価できますか?
OpenCVは2つの画像の比較をサポートし、これらの画像がどの程度類似しているかを示す値(おそらくパーセンテージ)を返しますか?たとえば、同じ画像が2回渡された場合は100%が返され、画像がまったく異なる場合は0%が返されます。 StackOverflowについては、すでに多くの同様のトピックを読みました。かなりググリングもしました。残念ながら、満足のいく答えを見つけることができませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.