【Intel】OpenCV総合スレ 5画素目【画像処理】
■ このスレッドは過去ログ倉庫に格納されています
OpenCVはインテルが公開したオープンソースのコンピュータービジョンライブラリ。
現在はWillowGateが開発している。
本家
http://opencv.willowgarage.com/wiki/
日本語資料など
http://opencv.jp/
前
【Intel】OpenCV総合スレ 4画素目【画像処理】
http://toro.2ch.net/test/read.cgi/tech/1329040627/ >>709
クラス変数にしてるので、そうできない局面で。 > mt = cv::Mat(height, width, CV_8U).clone()
これを分かりやすく展開したらこんな風に二度newした挙句memcpyまでするだろ
tmp = new byte[height*width*CV_8U];
ZeroMemory(tmp, sizeof(tmp));
mt = new byte[sizeof(tmp)];
memcpy(mt, tmp, sizeof(tmp);
メモリ管理連呼してるくせにメモリ管理まったくわかってないんじゃないか あ、そうなの?
.cloneしなかったら、
右辺はnewしないので、
スコープ抜けたら右辺の実態は消えるということ?
なら、.clone必要になるんですが。 Mat mt(height, width, CV_8U);
Mat new_mt(new_height, new_width, CV_8U);
mt = new_mt.clone();
これじゃダメなの?? クラス変数: Mat mt(height, width, CV_8U);
としたとき、
Mat new_mt(new_height, new_width, CV_8U);
mt = new_mt.clone();
で、cloneの有る無しで、メモリ管理は、どうなりますでしょうか。 どうも質問者はC++とJavaをごっちゃにしてる感あるな >>718
Mat mat(h, w, CV_8U);
mat2 = mat; //mat2.data は mat.data と共有されてるので mat2 を変更すると mat も変更される
mat3 = mat.clone(); //この時点でmat3の内容は mat と全く同じだがmat3はmat から独立してるので
//mat3 に何をしてもmat には反映されない >>710
vectorがどうしてcloneを呼ばなくていいか、Matでcloneを呼ばなきゃいけないときはどういうときか、そういうのを把握するためにC++のクラスの基礎的な理解が必要だって言ってるんだけど。
vectorがどうして呼ばなくていいか(どういう処理が実際に行われてるか)わかるようになればMatでどうすればいいかはソース読むか簡単な実験すればわかる
別に馬鹿にしてるわけでもないのに馬鹿だの知能が足りないだの短気なやつだな。 >>712
vectorでやってもおかしくならないよ。 >>722
おま、頭悪いなー。
vectorだと内容をコピー、
Matだと内容を共有。
動作の違いだと、なんどいったら、小一時間、、、 >>723
リファレンスやソース読めばその動作の違いはわかるよ
もちろん問題なく使い分け出来てるけど、それが出来ないのは頭が悪いからなのでは?w >>724
しつこいんだけど。
バカなの?市ぬの? 一連の流れで一番賢かったのは>>707だな。だめだコイツ Pythonで
import cv2
したら
SAMEプロブレムになるのでわ? >mat2 = mat; //mat2.data は mat.data と共有されてるので mat2 を変更すると mat も変更される
ここで、matがローカル変数で、mat2がクラス変数(つまり永続)のとき、
matがスコープ抜けた時って、
共有されているので、mat2の中身も変更(この場合、実態が破棄)されるということでしょうか。
それとも、そうならないようにOpenCVの中で工夫してくれているので、考えなくて良いのでしょうか。 >>728
内部実装で参照カウンティングが使われていてれば問題なく mat2 を
使い続けられるだろうけどウィロウガレージの中の奴らを信頼するべきじゃない
(基本ゴミ)なので危なそうな使い方は最初から避けるのが無難 了解です。
無駄なステートメントになったとしても、.cloneを使うことにします。
参照カウンティング〜ということは、OpenCVのベース部分にガベコレが何らか実装されているということですね。 だから最初から大人しくclone使えばいいって言ったやんけ
少しくらい量が多くなっても大して変わらん、メモリ管理ガーとか言ってる時間の方が無駄 いや、そのりくつはおかしい。
動作が分かったうえで、
余分な処理を明示的に書くのならおkですが、
そうでなければ、
メモリリークだらけ!!!
で、かつ原因不明!!!!!
調べようもない。 基本的なことを押さえようとしないで最終的な方法だけショートカットして知ろうとしてるみたいだし、とりあえず1発なんとなく動けばいいレベルのプログラムが出来ればいいって考え方なんじゃないのかな
そういうことが必要な状況もあるだろうから、否定はしないが 初心者です。
今png画像からHoughCirclesで円を検出しているのですが、png画像で検出出来なくてもjpg画像にすると円を検出出来ることが度々あるのですが理由など分かりますか?
画像処理で精度求めるなら可逆圧縮のpngなど使うのが良いと思ってたので混乱してます。 >>736
それぞれのファイル形式でimreadしたときに、どんなMatが出てきてるか確認してる?同じようなものならHough変換の結果もそんなに変わらないはず。 >>736
超能力でアレすると,アルファチャンネル付きのpngを扱ってるのが原因かも
OpenCVはアルファチャンネルの画像の扱いがおかしい(ことがある)。 ttp://rad-base.com/wp-content/uploads/2015/08/005_ph04.jpg
こういった感じで、ある範囲のピクセル値を持つ領域を、
外側(青)と内側(赤)に自動で分けたいのだけど、
OpenCVとか使うとできるものですか? ある範囲のピクセル値を持つ領域
↑
この定義によってはできるし、できない ロバスト性考慮しなかったらadaptiveThreshold使えば5分でできる >>742-744
ありがとうございます。
ttp://www.hatchobori.jp/asset/naizoushibou.gif
説明不足でしたが、要はこういうことをしたいわけで。
(内側と外側は、同じ範囲のピクセル値)
adaptiveThresholdという関数もありがとうございます。
OpenCVを調べてみようかと思います。 Xcode で openCV動かしの民なんだか
今回のアプデでOpenCV動かんくなった もちソースに変更なし
解決方法しってる博識おらんか? だいたい医療画像って確か周波数領域で扱うもんだったでしょ?
フーリエ変換してフィルタかけるとかの方がいいんじゃね?知らんけど >>746
1.前ソースに戻す
2.動けば解決で修正とかパッチなり待てばよい
3.動かなければアプデのせいじゃないのでドンマイ >>748
そ〜す変えてないから修正待ちするわ うんち サンクス >>749
そ〜すってOpenCV自体のソースのことじゃ無いの?
OpenCVを以前のバージョンに戻してみるって話でしょ。 それ
ついでに、望みはそんなにないけどまあヒントくらいはもしかしたら与えてやれるかも知れないから具体的にどう動かないのか教えてみて。 本探してもC++で解説してるやつばっかりやな pythonで解説書いてるやつで初心者にも分かりやすいやつ教えてくれ 割りとまじめに先にgoogleの使い方覚えたほうがいいと思うよ
覚えたら本買う気なんてなくなるから >>751
OpenCVのバージョンも何も、変わらず
ついこないだまでやってたXcodeプロジェクトをXcode 9.0にしたらエラー吐くようになったの
画像どこにうpすればいいかわからんからこれで勘弁して
https://drive.google.com/open?id=0B1gQp0SqZRp6UnZoVlVxcGZKYlU
ちょっとググったらシンボリックリンク貼り直せだの(やったけど治らん)
brew doctorしたら pruneしろだの 言われて打ったけど動かない…
学生なんでこれ使えないと割と困るんでヘルプお願いします…>< opencvなんも関係ないだろw
もっとちゃんとエラー見ろよ 卒研かーい
そして、プログラム君がimage not foundって思いっきり訴えてきてるけど? >>752
基本的には何も変わらないよ
あるとしたら、numpyの知識が若干欲しいくらい、それさえ覚えれば大体のことはどうとでもなる そのimage not found の訴えの退け方がわからnいっす ・・・何だろう・・・社会に出ちゃっていいのかな・・・? >>753
そう思っていた時期がわたしにもありました OpenCV使わずに自力で書いた方が早い気もするw spyder使ってるんだけどwebカメラ起動するコード書いて実行するとフリーズするんだけど軽くする方法教えて どうせそのコードが悪いんだろ。エスパーじゃなきゃわからん 何回かやったらカメラは起動できたけど顔は認識されないしグレースケールにもなってない、、 >>767
while で意図的に無限ループ作るやつは所々 sleep 入れると動くこともある カメラのfps内でsleep入れた方がいいよな
画像取得するまでひたすら無限ループをブン回すのは暴走の元 こういう糞なテストコードをまともに動く形に持って行くのって大変だよな ウェイトを入れないのもどうかと思うけど、
イベント通知やら何やらの仕組みが無いのも問題っちゃー問題ではあるんだよな 画像内に写る要素の微小領域を統合したい
どうすれば統合できるかな?
今はラベリングでやろうとしてるけどそれ以外の方法もあるのかな? >>776
バラバラに散らばった領域を太らせて一個の領域にするということ??
言ってることがよくわからないな >>777
隣り合ってるような微少領域要素を統合していって大まかなラベル分けをしたい 統合とラベリングって割と相反する概念だと思うんだけど こういう緑の線みたいな感じで領域統合して大まかなラベルつけたい
なんかないかな
どういうルールで小さいやつはどちらに分けるか決めるの? 特徴を決める尺度により過ぎるとしか。
画像みたいに近いものでまとめるなら物体毎の重心点でk平均取るとかでいいやろうけど。 ネットワークカメラの映像を流す(ストリーミング)Windowsフォームを作りたいです。
この分野は全くの初心者でざっと調べてみたらOpenCVを使うのがよさげなのでこちらで質問させてください。
そもそも、上記目的にはOpenCVが最適なのでしょうか?
取得した動画や画像で何かを処理するとかはないのでオーバースペックのような気もしています。
開発言語はVS2013のC#を考えています。 opencvに配信機能なんかあるのか?
配信だけならmsとかのツール使えばすぐだろ >>790
まずネットワークカメラの機種が固定でライブラリが有るかどうか
あればライブラリとC#だけで出来る
汎用のWebカメラとかだったら、Directshowをラップしたり、OpenCVSharpを使うが、最初が意外と面倒
OpenCVは画像処理がメインだけども、C#のWinFormにWebカメラライブラリが無い >>792
レスありがとうございます。
AXIS社製のカメラなのですが、ライブラリがなさそうな気がします。
> OpenCVは画像処理がメインだけども、C#のWinFormにWebカメラライブラリが無い
OpenCVで画像(動画)を取得してもWinFormでは扱えないということでしょうか? >>793
言葉足らずですいません、
OpenCVで画像を取得すれば、C#のWinFormで画像を扱えます
WinFormにはWebカメラのライブラリが無いので、何らかの外部ライブラリ(OpenCV等)が必要ってことです >>793
言葉足らずですいません、
OpenCVで画像を取得すれば、C#のWinFormで画像を扱えます
WinFormにはWebカメラのライブラリが無いので、何らかの外部ライブラリ(OpenCV等)が必要ってことです >>795
ネットワークカメラと通信して画像データを取り出すところは、OpenCVの範囲ではないような気がするな
AXISのVAPIXってAPIか、libvlcとか、gstreamerとか、Windows詳しくないんでよくわからないけどDirectShowとかWMFとか、その辺を触らないといけないと思う
ごく標準的なWebカメラであれば、OpenCVのVideoCaptureで開けたと思うけど、Skypeとかのカメラ一覧に出てくる範囲とかそのレベルが選べるだけだと思う。 >>785
ちなみに opencv superpixel でぐぐったらすぐ出てきたので
superpixel って言葉覚えておくといいです 手持ちのVC++2010でOpenCV導入しようと思ったのに
いくらプロジェクトの設定いじっても「外部参照が未解決です」みたいなエラーが出まくって
1週間くらい苦しんだ挙句VS2017をインスコして同じようにプロジェクト作り直したらあっさりエラー消えた
マジファック 失礼します。OpenCV(c++)を始めようとしているものですが早速詰まりました。
1.「brew install opencv3」で入れる
2. サンプルコードを丸コピ。`pkg-config --cflags opencv` `pkg-config --libs opencv`をつけてコンパイル。
3. すると「ld: library not found for -llibopencv_stitching.3.3.1.dylib」という文章が
4. pkg-config --libs opencvで調べたが確かにそこにlibopencv_stitching.3.3.1.dylibはある。どちてnot found?
こういった感じです。ネットで調べても有力な情報が見つからなかったのでわかる方いればよろしくお願いします LD_LIBRARY_PATHが指定されてないんだろ >>801
export LD_LIBRARY_PATH=/use/local/Cellar/opencv/3.3.1_1/lib
で試したのですが何も変わりませんでした。
ちなみにこのパスは>>800の4で出てきたやつです。 入れるだけなら楽なんですけどね・・・
ライブラリがnot foundのせいでネットにある導入方法が通用しなくて困る。特に変なことした覚えないのになぁ detectorでcomputeした際のdescriptが空の時(多分特徴点が見つからない時)、bfmatcherでマッチングするとエラーになるのですが、これを回避する方法はなんかいい案ありませんか?
カメラから連続フレームで処理してると特徴点がない時に止まります。
簡単な回避法としてcatchとかtry-except系で例外を捕まえるのは、こちらの都合的にあまり望ましくないので、出来ればアルゴリズムで何とかしたいのですが。 1フレーム前の特徴点も取っておいてとりあえず適用とか ver2.4だけどデフォルトで特定の色をラベリングする方法ない? デフォルトの意味が分からんけど1つの関数でってこと?
素直に色検出とラベリングに分けたらいいのに ■ このスレッドは過去ログ倉庫に格納されています