X



【Intel】OpenCV総合スレ 5画素目【画像処理】
■ このスレッドは過去ログ倉庫に格納されています
0714デフォルトの名無しさん
垢版 |
2017/08/17(木) 10:37:36.74ID:Rjw/N7cG
> 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);
メモリ管理連呼してるくせにメモリ管理まったくわかってないんじゃないか
0715デフォルトの名無しさん
垢版 |
2017/08/17(木) 10:51:32.35ID:uDwfQQpB
あ、そうなの?

.cloneしなかったら、
右辺はnewしないので、
スコープ抜けたら右辺の実態は消えるということ?

なら、.clone必要になるんですが。
0716デフォルトの名無しさん
垢版 |
2017/08/17(木) 10:58:32.69ID:LViMArV/
Mat mt(height, width, CV_8U);
Mat new_mt(new_height, new_width, CV_8U);
mt = new_mt.clone();

これじゃダメなの??
0718デフォルトの名無しさん
垢版 |
2017/08/17(木) 11:20:36.76ID:uDwfQQpB
クラス変数: Mat mt(height, width, CV_8U);

としたとき、

Mat new_mt(new_height, new_width, CV_8U);
mt = new_mt.clone();

で、cloneの有る無しで、メモリ管理は、どうなりますでしょうか。
0720デフォルトの名無しさん
垢版 |
2017/08/17(木) 11:25:00.41ID:JrjUJCSV
>>718


Mat mat(h, w, CV_8U);

mat2 = mat; //mat2.data は mat.data と共有されてるので mat2 を変更すると mat も変更される

mat3 = mat.clone(); //この時点でmat3の内容は mat と全く同じだがmat3はmat から独立してるので
             //mat3 に何をしてもmat には反映されない
0721デフォルトの名無しさん
垢版 |
2017/08/17(木) 11:38:41.34ID:e+gexvbV
>>710
vectorがどうしてcloneを呼ばなくていいか、Matでcloneを呼ばなきゃいけないときはどういうときか、そういうのを把握するためにC++のクラスの基礎的な理解が必要だって言ってるんだけど。
vectorがどうして呼ばなくていいか(どういう処理が実際に行われてるか)わかるようになればMatでどうすればいいかはソース読むか簡単な実験すればわかる
別に馬鹿にしてるわけでもないのに馬鹿だの知能が足りないだの短気なやつだな。
0723デフォルトの名無しさん
垢版 |
2017/08/17(木) 12:02:48.59ID:uDwfQQpB
>>722

おま、頭悪いなー。

vectorだと内容をコピー、
Matだと内容を共有。

動作の違いだと、なんどいったら、小一時間、、、
0724デフォルトの名無しさん
垢版 |
2017/08/17(木) 12:17:18.50ID:QOcYPa3W
>>723
リファレンスやソース読めばその動作の違いはわかるよ
もちろん問題なく使い分け出来てるけど、それが出来ないのは頭が悪いからなのでは?w
0728デフォルトの名無しさん
垢版 |
2017/08/17(木) 14:29:50.95ID:uDwfQQpB
>mat2 = mat; //mat2.data は mat.data と共有されてるので mat2 を変更すると mat も変更される

ここで、matがローカル変数で、mat2がクラス変数(つまり永続)のとき、
matがスコープ抜けた時って、
共有されているので、mat2の中身も変更(この場合、実態が破棄)されるということでしょうか。

それとも、そうならないようにOpenCVの中で工夫してくれているので、考えなくて良いのでしょうか。
0729デフォルトの名無しさん
垢版 |
2017/08/17(木) 16:55:00.33ID:JrjUJCSV
>>728
内部実装で参照カウンティングが使われていてれば問題なく mat2 を
使い続けられるだろうけどウィロウガレージの中の奴らを信頼するべきじゃない
(基本ゴミ)なので危なそうな使い方は最初から避けるのが無難
0730デフォルトの名無しさん
垢版 |
2017/08/17(木) 17:02:48.62ID:uDwfQQpB
了解です。
無駄なステートメントになったとしても、.cloneを使うことにします。

参照カウンティング〜ということは、OpenCVのベース部分にガベコレが何らか実装されているということですね。
0731デフォルトの名無しさん
垢版 |
2017/08/17(木) 21:16:47.77ID:vpgYUhkf
だから最初から大人しくclone使えばいいって言ったやんけ
少しくらい量が多くなっても大して変わらん、メモリ管理ガーとか言ってる時間の方が無駄
0733デフォルトの名無しさん
垢版 |
2017/08/18(金) 15:39:27.28ID:EZSlBiH3
いや、そのりくつはおかしい。

動作が分かったうえで、
余分な処理を明示的に書くのならおkですが、
そうでなければ、
メモリリークだらけ!!!
で、かつ原因不明!!!!!
調べようもない。
0734デフォルトの名無しさん
垢版 |
2017/08/18(金) 19:18:01.96ID:/zjZyZlS
基本的なことを押さえようとしないで最終的な方法だけショートカットして知ろうとしてるみたいだし、とりあえず1発なんとなく動けばいいレベルのプログラムが出来ればいいって考え方なんじゃないのかな

そういうことが必要な状況もあるだろうから、否定はしないが
0736デフォルトの名無しさん
垢版 |
2017/09/02(土) 01:09:37.90ID:/3mdn3Bp
初心者です。
今png画像からHoughCirclesで円を検出しているのですが、png画像で検出出来なくてもjpg画像にすると円を検出出来ることが度々あるのですが理由など分かりますか?

画像処理で精度求めるなら可逆圧縮のpngなど使うのが良いと思ってたので混乱してます。
0737デフォルトの名無しさん
垢版 |
2017/09/02(土) 18:51:13.79ID:AmWVvi8J
>>736
それぞれのファイル形式でimreadしたときに、どんなMatが出てきてるか確認してる?同じようなものならHough変換の結果もそんなに変わらないはず。
0740デフォルトの名無しさん
垢版 |
2017/09/06(水) 18:11:42.76ID:gNGLiUGh
>>736
超能力でアレすると,アルファチャンネル付きのpngを扱ってるのが原因かも
OpenCVはアルファチャンネルの画像の扱いがおかしい(ことがある)。
0741デフォルトの名無しさん
垢版 |
2017/09/21(木) 11:43:21.80ID:YvwuVHPl
ttp://rad-base.com/wp-content/uploads/2015/08/005_ph04.jpg
こういった感じで、ある範囲のピクセル値を持つ領域を、
外側(青)と内側(赤)に自動で分けたいのだけど、
OpenCVとか使うとできるものですか?
0742デフォルトの名無しさん
垢版 |
2017/09/21(木) 12:27:46.38ID:1bEsMVa+
ある範囲のピクセル値を持つ領域

この定義によってはできるし、できない
0745デフォルトの名無しさん
垢版 |
2017/09/21(木) 13:15:37.25ID:YvwuVHPl
>>742-744
ありがとうございます。

ttp://www.hatchobori.jp/asset/naizoushibou.gif
説明不足でしたが、要はこういうことをしたいわけで。
(内側と外側は、同じ範囲のピクセル値)

adaptiveThresholdという関数もありがとうございます。
OpenCVを調べてみようかと思います。
0746デフォルトの名無しさん
垢版 |
2017/09/21(木) 15:10:39.94ID:pZ67HTqZ
Xcode で openCV動かしの民なんだか
今回のアプデでOpenCV動かんくなった もちソースに変更なし
解決方法しってる博識おらんか?
0747デフォルトの名無しさん
垢版 |
2017/09/21(木) 15:12:39.22ID:Rn57IsrY
だいたい医療画像って確か周波数領域で扱うもんだったでしょ?
フーリエ変換してフィルタかけるとかの方がいいんじゃね?知らんけど
0748デフォルトの名無しさん
垢版 |
2017/09/21(木) 15:14:22.21ID:Rn57IsrY
>>746
1.前ソースに戻す
2.動けば解決で修正とかパッチなり待てばよい
3.動かなければアプデのせいじゃないのでドンマイ
0750デフォルトの名無しさん
垢版 |
2017/09/21(木) 15:45:53.27ID:0Ii6MUxg
>>749
そ〜すってOpenCV自体のソースのことじゃ無いの?
OpenCVを以前のバージョンに戻してみるって話でしょ。
0751デフォルトの名無しさん
垢版 |
2017/09/21(木) 16:03:20.26ID:Rn57IsrY
それ
ついでに、望みはそんなにないけどまあヒントくらいはもしかしたら与えてやれるかも知れないから具体的にどう動かないのか教えてみて。
0752デフォルトの名無しさん
垢版 |
2017/09/21(木) 18:17:31.79ID:gMObALxl
本探してもC++で解説してるやつばっかりやな pythonで解説書いてるやつで初心者にも分かりやすいやつ教えてくれ
0753デフォルトの名無しさん
垢版 |
2017/09/21(木) 19:11:25.47ID:vYu+noTX
割りとまじめに先にgoogleの使い方覚えたほうがいいと思うよ
覚えたら本買う気なんてなくなるから
0754デフォルトの名無しさん
垢版 |
2017/09/21(木) 20:49:19.64ID:djJph1z5
>>751
OpenCVのバージョンも何も、変わらず
ついこないだまでやってたXcodeプロジェクトをXcode 9.0にしたらエラー吐くようになったの
画像どこにうpすればいいかわからんからこれで勘弁して
https://drive.google.com/open?id=0B1gQp0SqZRp6UnZoVlVxcGZKYlU
ちょっとググったらシンボリックリンク貼り直せだの(やったけど治らん)
brew doctorしたら pruneしろだの 言われて打ったけど動かない…
学生なんでこれ使えないと割と困るんでヘルプお願いします…><
0756デフォルトの名無しさん
垢版 |
2017/09/21(木) 21:40:35.95ID:Rn57IsrY
卒研かーい
そして、プログラム君がimage not foundって思いっきり訴えてきてるけど?
0757デフォルトの名無しさん
垢版 |
2017/09/21(木) 21:41:56.41ID:Rn57IsrY
>>752
基本的には何も変わらないよ
あるとしたら、numpyの知識が若干欲しいくらい、それさえ覚えれば大体のことはどうとでもなる
0763デフォルトの名無しさん
垢版 |
2017/09/23(土) 08:35:19.56ID:5Hpz6Jfl
spyder使ってるんだけどwebカメラ起動するコード書いて実行するとフリーズするんだけど軽くする方法教えて
0768デフォルトの名無しさん
垢版 |
2017/09/24(日) 15:16:29.64ID:EP+fvRXu
何回かやったらカメラは起動できたけど顔は認識されないしグレースケールにもなってない、、
0771デフォルトの名無しさん
垢版 |
2017/09/25(月) 11:23:45.06ID:8qLoQ9vT
カメラのfps内でsleep入れた方がいいよな
画像取得するまでひたすら無限ループをブン回すのは暴走の元
0773デフォルトの名無しさん
垢版 |
2017/09/25(月) 15:57:29.86ID:DS9STyAc
ウェイトを入れないのもどうかと思うけど、
イベント通知やら何やらの仕組みが無いのも問題っちゃー問題ではあるんだよな
0776デフォルトの名無しさん
垢版 |
2017/10/07(土) 21:15:49.05ID:taSaJaQU
画像内に写る要素の微小領域を統合したい
どうすれば統合できるかな?

今はラベリングでやろうとしてるけどそれ以外の方法もあるのかな?
0777デフォルトの名無しさん
垢版 |
2017/10/07(土) 21:44:58.48ID:VGyrO9v6
>>776
バラバラに散らばった領域を太らせて一個の領域にするということ??
言ってることがよくわからないな
0780デフォルトの名無しさん
垢版 |
2017/10/08(日) 09:18:49.15ID:00HukpVD
こういう緑の線みたいな感じで領域統合して大まかなラベルつけたい

なんかないかな
0783デフォルトの名無しさん
垢版 |
2017/10/08(日) 19:10:35.72ID:mjOcXoyF
特徴を決める尺度により過ぎるとしか。
画像みたいに近いものでまとめるなら物体毎の重心点でk平均取るとかでいいやろうけど。
0790デフォルトの名無しさん
垢版 |
2017/10/10(火) 13:25:12.71ID:seBlNaJU
ネットワークカメラの映像を流す(ストリーミング)Windowsフォームを作りたいです。

この分野は全くの初心者でざっと調べてみたらOpenCVを使うのがよさげなのでこちらで質問させてください。
そもそも、上記目的にはOpenCVが最適なのでしょうか?
取得した動画や画像で何かを処理するとかはないのでオーバースペックのような気もしています。

開発言語はVS2013のC#を考えています。
0791デフォルトの名無しさん
垢版 |
2017/10/10(火) 13:55:35.29ID:Hmt4/j8e
opencvに配信機能なんかあるのか?
配信だけならmsとかのツール使えばすぐだろ
0792デフォルトの名無しさん
垢版 |
2017/10/10(火) 14:17:41.70ID:IAzrS1Nq
>>790
まずネットワークカメラの機種が固定でライブラリが有るかどうか
あればライブラリとC#だけで出来る
汎用のWebカメラとかだったら、Directshowをラップしたり、OpenCVSharpを使うが、最初が意外と面倒
OpenCVは画像処理がメインだけども、C#のWinFormにWebカメラライブラリが無い
0793デフォルトの名無しさん
垢版 |
2017/10/10(火) 14:41:23.40ID:seBlNaJU
>>792

レスありがとうございます。

AXIS社製のカメラなのですが、ライブラリがなさそうな気がします。

> OpenCVは画像処理がメインだけども、C#のWinFormにWebカメラライブラリが無い

OpenCVで画像(動画)を取得してもWinFormでは扱えないということでしょうか?
0794デフォルトの名無しさん
垢版 |
2017/10/10(火) 14:57:31.39ID:IAzrS1Nq
>>793
言葉足らずですいません、
OpenCVで画像を取得すれば、C#のWinFormで画像を扱えます
WinFormにはWebカメラのライブラリが無いので、何らかの外部ライブラリ(OpenCV等)が必要ってことです
0795デフォルトの名無しさん
垢版 |
2017/10/10(火) 14:57:36.08ID:IAzrS1Nq
>>793
言葉足らずですいません、
OpenCVで画像を取得すれば、C#のWinFormで画像を扱えます
WinFormにはWebカメラのライブラリが無いので、何らかの外部ライブラリ(OpenCV等)が必要ってことです
0796デフォルトの名無しさん
垢版 |
2017/10/11(水) 00:17:39.63ID:nDtE4t5M
>>795
ネットワークカメラと通信して画像データを取り出すところは、OpenCVの範囲ではないような気がするな
AXISのVAPIXってAPIか、libvlcとか、gstreamerとか、Windows詳しくないんでよくわからないけどDirectShowとかWMFとか、その辺を触らないといけないと思う
ごく標準的なWebカメラであれば、OpenCVのVideoCaptureで開けたと思うけど、Skypeとかのカメラ一覧に出てくる範囲とかそのレベルが選べるだけだと思う。
0797デフォルトの名無しさん
垢版 |
2017/10/11(水) 07:40:46.23ID:DjyQ9XYK
>>785
ちなみに opencv superpixel でぐぐったらすぐ出てきたので
superpixel って言葉覚えておくといいです
0799デフォルトの名無しさん
垢版 |
2017/10/21(土) 19:29:48.36ID:pUWAFaS6
手持ちのVC++2010でOpenCV導入しようと思ったのに
いくらプロジェクトの設定いじっても「外部参照が未解決です」みたいなエラーが出まくって
1週間くらい苦しんだ挙句VS2017をインスコして同じようにプロジェクト作り直したらあっさりエラー消えた
マジファック
0800デフォルトの名無しさん
垢版 |
2017/11/05(日) 22:58:47.69ID:usqcDD8H
失礼します。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?

こういった感じです。ネットで調べても有力な情報が見つからなかったのでわかる方いればよろしくお願いします
0802デフォルトの名無しさん
垢版 |
2017/11/06(月) 10:23:29.78ID:RyIEypXM
ぼくのOpenCV日記の始まりです
0803デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:11:15.68ID:6e1Qi6xs
>>801
export LD_LIBRARY_PATH=/use/local/Cellar/opencv/3.3.1_1/lib
で試したのですが何も変わりませんでした。
ちなみにこのパスは>>800の4で出てきたやつです。
0805デフォルトの名無しさん
垢版 |
2017/11/06(月) 21:09:38.78ID:opoHmSqm
入れるだけなら楽なんですけどね・・・
ライブラリがnot foundのせいでネットにある導入方法が通用しなくて困る。特に変なことした覚えないのになぁ
0807デフォルトの名無しさん
垢版 |
2017/11/07(火) 20:30:57.86ID:JC+Xd9TU
detectorでcomputeした際のdescriptが空の時(多分特徴点が見つからない時)、bfmatcherでマッチングするとエラーになるのですが、これを回避する方法はなんかいい案ありませんか?
カメラから連続フレームで処理してると特徴点がない時に止まります。
簡単な回避法としてcatchとかtry-except系で例外を捕まえるのは、こちらの都合的にあまり望ましくないので、出来ればアルゴリズムで何とかしたいのですが。
0811デフォルトの名無しさん
垢版 |
2017/11/10(金) 15:31:11.19ID:R4AIGq6h
ver2.4だけどデフォルトで特定の色をラベリングする方法ない?
0812デフォルトの名無しさん
垢版 |
2017/11/10(金) 16:49:51.40ID:5Db1u5mc
デフォルトの意味が分からんけど1つの関数でってこと?
素直に色検出とラベリングに分けたらいいのに
0813デフォルトの名無しさん
垢版 |
2017/11/27(月) 12:22:21.40ID:Wz99dXP5
顔認識ではなくて図形の認識を行いたいのですがどんな方法があるでしょうか?
認識する図形は形は同じで大きさが異なるものです。
■ このスレッドは過去ログ倉庫に格納されています