OpenCVはインテルが公開したオープンソースのコンピュータービジョンライブラリ。
現在はWillowGateが開発している。
本家
http://opencv.willowgarage.com/wiki/
日本語資料など
http://opencv.jp/
前
【Intel】OpenCV総合スレ 4画素目【画像処理】
http://toro.2ch.net/test/read.cgi/tech/1329040627/
探検
【Intel】OpenCV総合スレ 5画素目【画像処理】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2013/10/25(金) 17:28:16.71636デフォルトの名無しさん
2017/06/30(金) 11:57:24.36ID:msOIpcgS637デフォルトの名無しさん
2017/06/30(金) 12:52:20.08ID:3nIvuxBC 初級2ちゃんエスパー検定試験開催中
638デフォルトの名無しさん
2017/06/30(金) 17:53:01.15ID:aYaCN+Zi >>635
教授にUSBカメラのデバイス設定で露出とかそういうの変えられるでしょ?みたいに言われたんですが、制御、設定するプログラミングを別で組まない無理ですよね?
教授にUSBカメラのデバイス設定で露出とかそういうの変えられるでしょ?みたいに言われたんですが、制御、設定するプログラミングを別で組まない無理ですよね?
639デフォルトの名無しさん
2017/06/30(金) 18:17:42.49ID:da6qsFRC 何したいのか知らんけどガンマ補正かけたりして補正するんじゃだめなんかい
せっかくのopencvだからそういう使い方しようよ
あくまでソフトだから、基本的にハードの制御は他でやるべき
せっかくのopencvだからそういう使い方しようよ
あくまでソフトだから、基本的にハードの制御は他でやるべき
640デフォルトの名無しさん
2017/06/30(金) 18:35:58.87ID:hhb/IL1e 「USBカメラのデバイス設定」はopencvじゃないでしょ
USBカメラのデバイス設定では変えれるし、例えばwindowsなら汎用の設定方法が用意されてるからそれ使えばプログラム上から設定できる
USBカメラのデバイス設定では変えれるし、例えばwindowsなら汎用の設定方法が用意されてるからそれ使えばプログラム上から設定できる
641デフォルトの名無しさん
2017/06/30(金) 19:51:51.32ID:AWyPN87J >>636
レスありがとう
パスは変えてるよ、流石に
cv::Mat使ってみたんだけど俺の理解力不足なのかまったく使い物にならん
http://daily-tech.hatenablog.com/entry/2016/06/25/233203
このブログの3個目のプログラムなんだが、CVStereoGC〜ってやつはぜんぶGC→BMって変更加えるってことしかわからんかった
誰か詳しく教えてエロい人
レスありがとう
パスは変えてるよ、流石に
cv::Mat使ってみたんだけど俺の理解力不足なのかまったく使い物にならん
http://daily-tech.hatenablog.com/entry/2016/06/25/233203
このブログの3個目のプログラムなんだが、CVStereoGC〜ってやつはぜんぶGC→BMって変更加えるってことしかわからんかった
誰か詳しく教えてエロい人
642デフォルトの名無しさん
2017/06/30(金) 20:33:12.86ID:X7AokIbD 何で2016年にIplimageとか使ってんだよ・・・w
matに書き換えるのきついならとりあえずデバッグしてみーよ
そもそもエラーメッセージは何?
matに書き換えるのきついならとりあえずデバッグしてみーよ
そもそもエラーメッセージは何?
643デフォルトの名無しさん
2017/06/30(金) 23:32:35.26ID:X7AokIbD ちょっと調べてみたら
StereoGCちゃんは3.系になったときにリストラされてるねwドマーイ
StereoGCちゃんは3.系になったときにリストラされてるねwドマーイ
644デフォルトの名無しさん
2017/07/01(土) 00:44:28.30ID:AOCuOCf0645デフォルトの名無しさん
2017/07/01(土) 00:52:05.72ID:6uo9+xqb それ2.系のソースだから多分動かんよ
646デフォルトの名無しさん
2017/07/01(土) 02:49:09.69ID:PHrzZsba647デフォルトの名無しさん
2017/07/01(土) 03:32:55.02ID:WKIxAUak 意訳「まだエスパー検定試験した方がいいか?まだ続けようか?」
648デフォルトの名無しさん
2017/07/01(土) 07:28:05.90ID:JzB6kPFv ステレオマッチングなんてそこら中にすぐ動くソースあるんじゃねえの
めんどくせえからキネクト買え
めんどくせえからキネクト買え
649デフォルトの名無しさん
2017/07/01(土) 08:26:57.30ID:bop7+UjN まさかの2.系使いかよ
それでそのソースが動かないということは、環境に問題がある気がする
まずこのレベルのは動くのか?
https://reiji1020.gitbooks.io/play-opencv/content/sample-code.html
それでそのソースが動かないということは、環境に問題がある気がする
まずこのレベルのは動くのか?
https://reiji1020.gitbooks.io/play-opencv/content/sample-code.html
650デフォルトの名無しさん
2017/07/01(土) 18:13:02.62ID:wwhF2J4h651デフォルトの名無しさん
2017/07/01(土) 20:29:53.52ID:XI3Ts6Pa >>649
バリバリに動くよ
もちょい調べたら
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11160807996
のソースで動いた
は 書いてること同じのような気がするんだが何が違うのか…
一同ありがとう
IplImageじゃないと動かないみたいだし, Matからの変換も上手くいかないし大人しく化石つかうわ
IplImageってOpenCV界隈じゃもうクソ規格なのかい?
バリバリに動くよ
もちょい調べたら
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11160807996
のソースで動いた
は 書いてること同じのような気がするんだが何が違うのか…
一同ありがとう
IplImageじゃないと動かないみたいだし, Matからの変換も上手くいかないし大人しく化石つかうわ
IplImageってOpenCV界隈じゃもうクソ規格なのかい?
652デフォルトの名無しさん
2017/07/01(土) 21:15:51.07ID:g4C1aejJ opencvのバージョン何?
クソ規格というか、もはや使われていない
過去の遺産的に一応残っているだけ状態
クソ規格というか、もはや使われていない
過去の遺産的に一応残っているだけ状態
653デフォルトの名無しさん
2017/07/01(土) 21:36:43.80ID:XI3Ts6Pa654デフォルトの名無しさん
2017/07/01(土) 22:11:02.32ID:g4C1aejJ 少し違う
3系でもまだ一応遺産は残ってる
ただ新しい関数ではもちろん使われないし、
StereoGCちゃんのように随時削除されていったりする
3系でもまだ一応遺産は残ってる
ただ新しい関数ではもちろん使われないし、
StereoGCちゃんのように随時削除されていったりする
655デフォルトの名無しさん
2017/07/01(土) 22:12:56.09ID:g4C1aejJ だからどうしてもStereoGCちゃん使いたいから旧版使わないといけない!
とかいう場合を除いて基本的に最初に入れる時は最新版の導入がよいよ
とかいう場合を除いて基本的に最初に入れる時は最新版の導入がよいよ
656デフォルトの名無しさん
2017/07/02(日) 02:20:04.60ID:2KVVeWR1657デフォルトの名無しさん
2017/07/03(月) 13:20:20.57ID:3bAoRzZo Iplimageって過去の遺産なのか…
カメラから画像取得でずっとIplimage使ってたわ
2.4.9です
カメラから画像取得でずっとIplimage使ってたわ
2.4.9です
658デフォルトの名無しさん
2017/07/03(月) 13:43:34.00ID:v5BZipuQ なんで遺産なん?
659デフォルトの名無しさん
2017/07/03(月) 14:15:23.22ID:3bAoRzZo 質問です
画像を二値化したとき、白の集団が二つあり、それぞれで認識させるってことは可能なのでしょうか?
画像を二値化したとき、白の集団が二つあり、それぞれで認識させるってことは可能なのでしょうか?
660デフォルトの名無しさん
2017/07/03(月) 18:59:16.39ID:m1etFu0O findcontoursやラベリング関数で出来そう
661デフォルトの名無しさん
2017/07/03(月) 19:21:30.93ID:Lbjam2Yy なんで画素が連続してる前提なんだよ
集団が2つと既知ならk-meansを使えばいい
集団が2つと既知ならk-meansを使えばいい
662デフォルトの名無しさん
2017/07/03(月) 19:36:31.70ID:pS+W+qPk モルフォロジー変換してk-meansでよさそう
663デフォルトの名無しさん
2017/07/04(火) 01:45:34.62ID:rUXogfnF なんでそんな喧嘩腰なんだよ
664デフォルトの名無しさん
2017/07/04(火) 02:39:23.60ID:48gcNEwZ 戦闘民族だから
665デフォルトの名無しさん
2017/07/10(月) 05:08:46.49ID:ImHRmJ7/ opencv超初心者なんですけど、カメラによるリアルタイムの映像にping画像を透過することって出来ますか?
666デフォルトの名無しさん
2017/07/10(月) 11:45:11.85ID:H0WRdEPX できる
667デフォルトの名無しさん
2017/07/10(月) 17:22:42.80ID:Txcdp1OI スーパーダサイヤ人
668デフォルトの名無しさん
2017/07/19(水) 00:43:07.30ID:nwQCI0l5 誤差拡散(たとえばFloyd-Steinberg)で二値化したい場合ってバカ正直に1ピクセルずつ読んで散らしていくしかないのか?
特にインタプリタだと処理時間がバカにならないんでOpenCVの機能を使って速く計算出来ないのかな
OpenCVで計算できないのであればMatのピクセル値とインタプリタの配列を高速に相互変換出来る方法でも良い
ruby-opencvでやっているけどRubyがピクセル値を計算している時間よりMatを読み書きしている時間の方が長いw
特にインタプリタだと処理時間がバカにならないんでOpenCVの機能を使って速く計算出来ないのかな
OpenCVで計算できないのであればMatのピクセル値とインタプリタの配列を高速に相互変換出来る方法でも良い
ruby-opencvでやっているけどRubyがピクセル値を計算している時間よりMatを読み書きしている時間の方が長いw
669デフォルトの名無しさん
2017/07/19(水) 01:05:45.68ID:Ncz3nPsY 高速化したい部分をC/C++で書け
670デフォルトの名無しさん
2017/07/19(水) 11:33:49.64ID:+fK80sDM そこでFPGAですよ
671デフォルトの名無しさん
2017/07/20(木) 01:17:52.39ID:01uupJ2t mat.at(y,x)とBGRの罠はいい加減どうにかならないのか…
672デフォルトの名無しさん
2017/07/20(木) 06:48:41.03ID:m+4agcCu コンピューターの画面は左上が原点になるよう設計されてるからな
タイムマシン発明して変えてこい
タイムマシン発明して変えてこい
673デフォルトの名無しさん
2017/07/20(木) 08:12:57.01ID:tDwsjeaW BMPはわざわざ左下原点にしてるからややこしいことになる
674デフォルトの名無しさん
2017/07/20(木) 08:39:38.64ID:0b9xdtC8 Mat::atと原点位置は関係ないと思うが。低い次元(x)が後の引数なのが違和感あるってことだろ?
Rとかだとxを省略したら行ベクトルを意味するとか合理性はあるんだが、OpenCVのatは
1引数で呼んだ時の動作はなんか適当だね。
Rとかだとxを省略したら行ベクトルを意味するとか合理性はあるんだが、OpenCVのatは
1引数で呼んだ時の動作はなんか適当だね。
675デフォルトの名無しさん
2017/07/20(木) 08:52:36.04ID:CxqiqQov そもそもatとかいらん、ポインタ使え
676デフォルトの名無しさん
2017/07/20(木) 12:30:40.91ID:yGV4vGN/ >>672
ゲームギアは画面の真ん中が原点。
ゲームギアは画面の真ん中が原点。
677デフォルトの名無しさん
2017/07/22(土) 18:01:04.81ID:Zmb5Pcwv CからCvMat@OpenCV2.4のピクセル値を読み書きしたいのですがどのようにしたらいいですか?
ググってもC++からやっている事例ばかり引っかかってCから操作している例を見つけられませんでした
dataあたりから出来そうな気もするのですが・・・
ググってもC++からやっている事例ばかり引っかかってCから操作している例を見つけられませんでした
dataあたりから出来そうな気もするのですが・・・
678デフォルトの名無しさん
2017/07/23(日) 16:50:41.03ID:izG3yijY その通り
679デフォルトの名無しさん
2017/08/07(月) 11:59:39.60ID:w0+OBzVI cv:Mat
の
平行移動サンプルコード
くださいorz
の
平行移動サンプルコード
くださいorz
680デフォルトの名無しさん
2017/08/07(月) 19:28:00.98ID:S06Ddx/X 並行移動ってもうちょい具体的に
681デフォルトの名無しさん
2017/08/07(月) 20:05:51.18ID:FS16tv0T cv:Mat
これで移動完了
これで移動完了
682679
2017/08/08(火) 08:52:07.91ID:OvVzYAy2 Mat frame = cv::imread
とかやって、
frameの画像を下方向に1ピクセル移動、右方向に2ピクセル移動、
は、コーディングはどうなりますでしょうか。
とかやって、
frameの画像を下方向に1ピクセル移動、右方向に2ピクセル移動、
は、コーディングはどうなりますでしょうか。
683デフォルトの名無しさん
2017/08/08(火) 11:55:52.86ID:yWPGhfQU いや、補完の処理をどうすんのかって話
はみ出た部分は消滅させるのか、移動した分だけ画像サイズがでかくなるのか
動いた穴の部分は黒塗りでいいのか
とか
はみ出た部分は消滅させるのか、移動した分だけ画像サイズがでかくなるのか
動いた穴の部分は黒塗りでいいのか
とか
684682
2017/08/08(火) 12:04:02.43ID:OvVzYAy2 同じ大きさが良いです
はみ出た部分は消失です。
動いた部分、黒塗りしたいです。
はみ出た部分は消失です。
動いた部分、黒塗りしたいです。
685デフォルトの名無しさん
2017/08/08(火) 13:23:12.83ID:yWPGhfQU void hoge(Mat src, Mat &dst, int dx, int dy) {
Rect rect(max(0, -dx), max(0, -dy), src.cols-abs(dx), src.rows-abs(dy));
Mat sub = Mat(src, rect).clone();
dst = Mat::zeros(src.rows, src.cols, CV_8UC3);
Mat roi(dst, Rect(max(0, dx), max(0, dy), dst.cols-abs(dx), dst.rows-abs(dy)));
sub.copyTo(roi);
}
dxとdyが移動量、それぞれ画像の右方向、下方向が正ね
Rect rect(max(0, -dx), max(0, -dy), src.cols-abs(dx), src.rows-abs(dy));
Mat sub = Mat(src, rect).clone();
dst = Mat::zeros(src.rows, src.cols, CV_8UC3);
Mat roi(dst, Rect(max(0, dx), max(0, dy), dst.cols-abs(dx), dst.rows-abs(dy)));
sub.copyTo(roi);
}
dxとdyが移動量、それぞれ画像の右方向、下方向が正ね
686デフォルトの名無しさん
2017/08/08(火) 13:27:02.96ID:yWPGhfQU あ、CV_8UC3はsrc.type()の方がよかったね
まあエラーとかも含めてその辺適当に。。
要するに、生き残る範囲を選択した後、黒塗りの画像上の移動先に貼り付けるだけ。
まあエラーとかも含めてその辺適当に。。
要するに、生き残る範囲を選択した後、黒塗りの画像上の移動先に貼り付けるだけ。
687682
2017/08/08(火) 13:53:46.34ID:OvVzYAy2 上手くいきましたorz
688682
2017/08/08(火) 14:48:58.13ID:OvVzYAy2 意外だったのは、
>Matなんだから→行列計算で移動のアフィン変換
だと思っていたのに、
Rectで解決なんですね。
基本的な考え方がわかったような気がします。
次には、回転を自分で作る、もしくは、ネットから拾ってくる予定です。
>Matなんだから→行列計算で移動のアフィン変換
だと思っていたのに、
Rectで解決なんですね。
基本的な考え方がわかったような気がします。
次には、回転を自分で作る、もしくは、ネットから拾ってくる予定です。
689デフォルトの名無しさん
2017/08/08(火) 15:30:02.27ID:yWPGhfQU なんだよ実装の勉強じゃないのかよ!
それならopencv 平行移動 とかで何ぼでも出てくる気がする
てか回転まで必要なら最初からアフィン変換使えって話になってくるだろうしw
まあ頑張ってー
それならopencv 平行移動 とかで何ぼでも出てくる気がする
てか回転まで必要なら最初からアフィン変換使えって話になってくるだろうしw
まあ頑張ってー
690684
2017/08/08(火) 17:00:34.40ID:OvVzYAy2 >それならopencv 平行移動 とかで何ぼでも
出てこないです。
>アフィン変換使えって話
平行移動は、Rect処理にします。
void rot(Mat src, Mat &dst, double degree)
{
cv::Point2f center = cv::Point2f(
static_cast<float>(src.cols / 2),
static_cast<float>(src.rows / 2));
double scale = 1.0; // 拡大率
// アフィン変換行列
cv::Mat affine;
cv::getRotationMatrix2D(center, degree, scale).copyTo(affine);
cv::warpAffine(src, dst, affine, src.size(), cv::INTER_CUBIC);
}
回転が、反時計回転になるのが不思議ですね。
あと、degreeはラジアンじゃなくて、シータなんですね。
出てこないです。
>アフィン変換使えって話
平行移動は、Rect処理にします。
void rot(Mat src, Mat &dst, double degree)
{
cv::Point2f center = cv::Point2f(
static_cast<float>(src.cols / 2),
static_cast<float>(src.rows / 2));
double scale = 1.0; // 拡大率
// アフィン変換行列
cv::Mat affine;
cv::getRotationMatrix2D(center, degree, scale).copyTo(affine);
cv::warpAffine(src, dst, affine, src.size(), cv::INTER_CUBIC);
}
回転が、反時計回転になるのが不思議ですね。
あと、degreeはラジアンじゃなくて、シータなんですね。
691684
2017/08/08(火) 17:41:38.99ID:OvVzYAy2 反時計回転になる原因わかりました。
>GetRotationMatrix2D
>正の値は,反時計回りの回転を意味します
不思議な流儀ですね。
ラップする関数でも、
この流儀に従った方がよいのか、
関数内でマイナスするか、、、
一応、自分の書きたかったことはこれで終了ですが、レスは延々と読み続けます。
>GetRotationMatrix2D
>正の値は,反時計回りの回転を意味します
不思議な流儀ですね。
ラップする関数でも、
この流儀に従った方がよいのか、
関数内でマイナスするか、、、
一応、自分の書きたかったことはこれで終了ですが、レスは延々と読み続けます。
692デフォルトの名無しさん
2017/08/09(水) 00:23:06.07ID:XzB0Bln2 >>691
高校で三角関数やらなかった?数学では0度がx軸右方向で反時計回りに回ってって90度がy軸上方向ってのが一般的じゃない?
もちろん、なぜx軸を上方向にとってy軸を右方向にとったり、x軸を右方向にとってy軸を下方向にとらなかったのか?ということを言い出したら「不思議な流儀」になるかもしれないが
高校で三角関数やらなかった?数学では0度がx軸右方向で反時計回りに回ってって90度がy軸上方向ってのが一般的じゃない?
もちろん、なぜx軸を上方向にとってy軸を右方向にとったり、x軸を右方向にとってy軸を下方向にとらなかったのか?ということを言い出したら「不思議な流儀」になるかもしれないが
693デフォルトの名無しさん
2017/08/09(水) 03:53:55.23ID:GMdirX6E 滅茶苦茶初歩的な質問で申し訳ないんですが
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
をインクルードしてるのにcv::circle()が無いと言われるのはなぜでしょうか
imshow()やwaitkey()は使えます
OpenCVのバージョンは3.3.0です
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
をインクルードしてるのにcv::circle()が無いと言われるのはなぜでしょうか
imshow()やwaitkey()は使えます
OpenCVのバージョンは3.3.0です
694デフォルトの名無しさん
2017/08/09(水) 07:38:06.13ID:wpOQdQY0695デフォルトの名無しさん
2017/08/09(水) 10:03:31.22ID:Nar8iR46 #include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
何するか知らんが、チュートリアルレベルならだいたいこの3つで事足りる。
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
何するか知らんが、チュートリアルレベルならだいたいこの3つで事足りる。
696デフォルトの名無しさん
2017/08/09(水) 13:24:55.64ID:LtfCN5pR 再生動画(といっても、静止画の配列)のブレ補正処理は、
どういったメソッドでやられてますでしょうか?
どういったメソッドでやられてますでしょうか?
697デフォルトの名無しさん
2017/08/10(木) 09:01:05.14ID:xLSenUHW cv::Matの大きさを変える場合には、
>mt = cv::Mat(height, width, CV_8U).clone();
といった書き方でよいのでしょうか?
>mt = cv::Mat(height, width, CV_8U).clone();
といった書き方でよいのでしょうか?
698デフォルトの名無しさん
2017/08/10(木) 09:05:14.19ID:pkwCcRJu 大きさを変えるとは?
元画像があって、指定した大きさに拡大・縮小したいという意味?
元画像があって、指定した大きさに拡大・縮小したいという意味?
699デフォルトの名無しさん
2017/08/10(木) 09:31:23.08ID:xLSenUHW バッファの大きさを変えるだけです。
cv::Mat mt(height, width, CV_8U);
と宣言時に大きさかけますけど、
宣言後にバッファサイズを変える方法が分からなくて。
cv::Mat mt(height, width, CV_8U);
と宣言時に大きさかけますけど、
宣言後にバッファサイズを変える方法が分からなくて。
700デフォルトの名無しさん
2017/08/10(木) 13:26:58.12ID:Sraj3Va7 大きさ変えるってのがうーん
今のデータを残しつつ新しい部分を追加するってこと?
今のデータを残しつつ新しい部分を追加するってこと?
701デフォルトの名無しさん
2017/08/10(木) 13:51:49.93ID:CcnWoQiq mt = cv::Mat(height*2, width, CV_8U);
702デフォルトの名無しさん
2017/08/10(木) 14:21:25.23ID:xLSenUHW え、
>.clone
要らないんですね。
左辺と右辺でバッファの実態が共有されるのに、
次の行でメモリ解放されないんでしょうか。
>.clone
要らないんですね。
左辺と右辺でバッファの実態が共有されるのに、
次の行でメモリ解放されないんでしょうか。
703デフォルトの名無しさん
2017/08/11(金) 10:54:58.16ID:MAQPQwLn 新しい変数を使うのじゃダメなの??
既存の変数のサイズを変えないといけない場面が分からないんだけど
既存の変数のサイズを変えないといけない場面が分からないんだけど
704デフォルトの名無しさん
2017/08/11(金) 11:02:06.75ID:SqwigL4Y おまえもだと思うけど、そこまで難しい話しても理解できないでしょ
705デフォルトの名無しさん
2017/08/11(金) 15:26:52.99ID:Rv0iJ0O8 >>702
vector<int> vec(10);
vec = vector<int>(20);
というコードを書いたときに変数とオブジェクトの関係はどうなっているか、というレベルの話なので、C++をまずは勉強したほうがいい。
vector<int> vec(10);
vec = vector<int>(20);
というコードを書いたときに変数とオブジェクトの関係はどうなっているか、というレベルの話なので、C++をまずは勉強したほうがいい。
706デフォルトの名無しさん
2017/08/16(水) 10:23:21.36ID:GzC89dk5 C++の勉強では、newと書くことになってるでしょ?
いやだから、どうなっているか教えて?
いやだから、どうなっているか教えて?
707デフォルトの名無しさん
2017/08/16(水) 15:19:37.66ID:Ljo9giCK 頭悪いんだから大人しくpython使いなさい
708デフォルトの名無しさん
2017/08/17(木) 01:06:40.35ID:e+gexvbV >>706
newと書くことが必ずしも必要なわけではない。そして、コピーしたいときに=で済むか、cloneメソッド的なものを呼ばないといけないかは、クラスの作りによる。
続けるとスレチになるし、おそらく現状の理解からvectorの例までを理解するのにはそれなりにやりとりが必要になるような気がするので、詳しくはC/C++初心者スレッドみたいなところで質問してほしい。
newと書くことが必ずしも必要なわけではない。そして、コピーしたいときに=で済むか、cloneメソッド的なものを呼ばないといけないかは、クラスの作りによる。
続けるとスレチになるし、おそらく現状の理解からvectorの例までを理解するのにはそれなりにやりとりが必要になるような気がするので、詳しくはC/C++初心者スレッドみたいなところで質問してほしい。
709デフォルトの名無しさん
2017/08/17(木) 02:17:20.86ID:PTK6O3Ph つかマジでvectorのサイズ変えるくらいなら新しい変数作ればよくね?
710デフォルトの名無しさん
2017/08/17(木) 08:27:33.84ID:uDwfQQpB >>708
おまえ馬鹿じゃね?
おまえの書いてる時点で、vectorとのメモリ管理が違うことが明確になってるだろ。
それが分からないなんて、知能がたりない。
おまえ馬鹿じゃね?
おまえの書いてる時点で、vectorとのメモリ管理が違うことが明確になってるだろ。
それが分からないなんて、知能がたりない。
711デフォルトの名無しさん
2017/08/17(木) 08:38:10.08ID:Rjw/N7cG 2chのプログラム関連はそんなもんだろ
それが分からないなんて、知能がたりない
それが分からないなんて、知能がたりない
712デフォルトの名無しさん
2017/08/17(木) 08:58:46.16ID:uDwfQQpB 知能がたりないかどうかは、一旦保留にしておいて、、、
vectorのメモリ管理とMatのメモリ管理が明確に違うんだから、
cloneいるかいらないか、の判断の道筋を明確にして欲しいです。
>mt = cv::Mat(height*2, width, CV_8U);
みたいな書き方をvectorでやると、
スコープ抜けると、実態が吹っ飛ぶと思うんですが。
Matは参照カウントか何か細工してますか?
vectorのメモリ管理とMatのメモリ管理が明確に違うんだから、
cloneいるかいらないか、の判断の道筋を明確にして欲しいです。
>mt = cv::Mat(height*2, width, CV_8U);
みたいな書き方をvectorでやると、
スコープ抜けると、実態が吹っ飛ぶと思うんですが。
Matは参照カウントか何か細工してますか?
713デフォルトの名無しさん
2017/08/17(木) 09:00:17.65ID:uDwfQQpB714デフォルトの名無しさん
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);
メモリ管理連呼してるくせにメモリ管理まったくわかってないんじゃないか
これを分かりやすく展開したらこんな風に二度newした挙句memcpyまでするだろ
tmp = new byte[height*width*CV_8U];
ZeroMemory(tmp, sizeof(tmp));
mt = new byte[sizeof(tmp)];
memcpy(mt, tmp, sizeof(tmp);
メモリ管理連呼してるくせにメモリ管理まったくわかってないんじゃないか
715デフォルトの名無しさん
2017/08/17(木) 10:51:32.35ID:uDwfQQpB あ、そうなの?
.cloneしなかったら、
右辺はnewしないので、
スコープ抜けたら右辺の実態は消えるということ?
なら、.clone必要になるんですが。
.cloneしなかったら、
右辺はnewしないので、
スコープ抜けたら右辺の実態は消えるということ?
なら、.clone必要になるんですが。
716デフォルトの名無しさん
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();
これじゃダメなの??
Mat new_mt(new_height, new_width, CV_8U);
mt = new_mt.clone();
これじゃダメなの??
717デフォルトの名無しさん
2017/08/17(木) 11:07:08.77ID:Rjw/N7cG じゃ必要だな。使っとけ
718デフォルトの名無しさん
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の有る無しで、メモリ管理は、どうなりますでしょうか。
としたとき、
Mat new_mt(new_height, new_width, CV_8U);
mt = new_mt.clone();
で、cloneの有る無しで、メモリ管理は、どうなりますでしょうか。
719デフォルトの名無しさん
2017/08/17(木) 11:21:15.48ID:JrjUJCSV どうも質問者はC++とJavaをごっちゃにしてる感あるな
720デフォルトの名無しさん
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 には反映されない
Mat mat(h, w, CV_8U);
mat2 = mat; //mat2.data は mat.data と共有されてるので mat2 を変更すると mat も変更される
mat3 = mat.clone(); //この時点でmat3の内容は mat と全く同じだがmat3はmat から独立してるので
//mat3 に何をしてもmat には反映されない
721デフォルトの名無しさん
2017/08/17(木) 11:38:41.34ID:e+gexvbV >>710
vectorがどうしてcloneを呼ばなくていいか、Matでcloneを呼ばなきゃいけないときはどういうときか、そういうのを把握するためにC++のクラスの基礎的な理解が必要だって言ってるんだけど。
vectorがどうして呼ばなくていいか(どういう処理が実際に行われてるか)わかるようになればMatでどうすればいいかはソース読むか簡単な実験すればわかる
別に馬鹿にしてるわけでもないのに馬鹿だの知能が足りないだの短気なやつだな。
vectorがどうしてcloneを呼ばなくていいか、Matでcloneを呼ばなきゃいけないときはどういうときか、そういうのを把握するためにC++のクラスの基礎的な理解が必要だって言ってるんだけど。
vectorがどうして呼ばなくていいか(どういう処理が実際に行われてるか)わかるようになればMatでどうすればいいかはソース読むか簡単な実験すればわかる
別に馬鹿にしてるわけでもないのに馬鹿だの知能が足りないだの短気なやつだな。
722デフォルトの名無しさん
2017/08/17(木) 11:44:42.00ID:uUKVNIMC >>712
vectorでやってもおかしくならないよ。
vectorでやってもおかしくならないよ。
723デフォルトの名無しさん
2017/08/17(木) 12:02:48.59ID:uDwfQQpB724デフォルトの名無しさん
2017/08/17(木) 12:17:18.50ID:QOcYPa3W725デフォルトの名無しさん
2017/08/17(木) 13:33:11.05ID:uDwfQQpB726デフォルトの名無しさん
2017/08/17(木) 13:49:21.19ID:Rjw/N7cG 一連の流れで一番賢かったのは>>707だな。だめだコイツ
727デフォルトの名無しさん
2017/08/17(木) 13:53:18.54ID:uDwfQQpB Pythonで
import cv2
したら
SAMEプロブレムになるのでわ?
import cv2
したら
SAMEプロブレムになるのでわ?
728デフォルトの名無しさん
2017/08/17(木) 14:29:50.95ID:uDwfQQpB >mat2 = mat; //mat2.data は mat.data と共有されてるので mat2 を変更すると mat も変更される
ここで、matがローカル変数で、mat2がクラス変数(つまり永続)のとき、
matがスコープ抜けた時って、
共有されているので、mat2の中身も変更(この場合、実態が破棄)されるということでしょうか。
それとも、そうならないようにOpenCVの中で工夫してくれているので、考えなくて良いのでしょうか。
ここで、matがローカル変数で、mat2がクラス変数(つまり永続)のとき、
matがスコープ抜けた時って、
共有されているので、mat2の中身も変更(この場合、実態が破棄)されるということでしょうか。
それとも、そうならないようにOpenCVの中で工夫してくれているので、考えなくて良いのでしょうか。
729デフォルトの名無しさん
2017/08/17(木) 16:55:00.33ID:JrjUJCSV >>728
内部実装で参照カウンティングが使われていてれば問題なく mat2 を
使い続けられるだろうけどウィロウガレージの中の奴らを信頼するべきじゃない
(基本ゴミ)なので危なそうな使い方は最初から避けるのが無難
内部実装で参照カウンティングが使われていてれば問題なく mat2 を
使い続けられるだろうけどウィロウガレージの中の奴らを信頼するべきじゃない
(基本ゴミ)なので危なそうな使い方は最初から避けるのが無難
730デフォルトの名無しさん
2017/08/17(木) 17:02:48.62ID:uDwfQQpB 了解です。
無駄なステートメントになったとしても、.cloneを使うことにします。
参照カウンティング〜ということは、OpenCVのベース部分にガベコレが何らか実装されているということですね。
無駄なステートメントになったとしても、.cloneを使うことにします。
参照カウンティング〜ということは、OpenCVのベース部分にガベコレが何らか実装されているということですね。
731デフォルトの名無しさん
2017/08/17(木) 21:16:47.77ID:vpgYUhkf だから最初から大人しくclone使えばいいって言ったやんけ
少しくらい量が多くなっても大して変わらん、メモリ管理ガーとか言ってる時間の方が無駄
少しくらい量が多くなっても大して変わらん、メモリ管理ガーとか言ってる時間の方が無駄
732デフォルトの名無しさん
2017/08/18(金) 12:07:02.89ID:eIpnBeVf >>706
嫌なら new を再定義
嫌なら new を再定義
733デフォルトの名無しさん
2017/08/18(金) 15:39:27.28ID:EZSlBiH3 いや、そのりくつはおかしい。
動作が分かったうえで、
余分な処理を明示的に書くのならおkですが、
そうでなければ、
メモリリークだらけ!!!
で、かつ原因不明!!!!!
調べようもない。
動作が分かったうえで、
余分な処理を明示的に書くのならおkですが、
そうでなければ、
メモリリークだらけ!!!
で、かつ原因不明!!!!!
調べようもない。
734デフォルトの名無しさん
2017/08/18(金) 19:18:01.96ID:/zjZyZlS 基本的なことを押さえようとしないで最終的な方法だけショートカットして知ろうとしてるみたいだし、とりあえず1発なんとなく動けばいいレベルのプログラムが出来ればいいって考え方なんじゃないのかな
そういうことが必要な状況もあるだろうから、否定はしないが
そういうことが必要な状況もあるだろうから、否定はしないが
735デフォルトの名無しさん
2017/08/19(土) 15:22:28.74ID:vQyZjPpv いやならC使えよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★3 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★8 [蚤の市★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★3 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 神田沙也加さん元恋人で元俳優の前山剛久 六本木のメンズラウンジ勤務を報告「真叶(まなと)です。よろしく」 [muffin★]
- 【悲報】30代独身女性「結婚や成功してる友達との差は開く一方、このまま1人で生きて淘汰される人生だと気づいて絶望してる…406万いいね [483447288]
- VIPでパズドラ
- 【埼玉】34歳無職、置き配📦を盗みまくる!その数、400点!😱 [718678614]
- フリーレン「んっ///だ、ダメだよアウラ!ヒンメルが見てる」アウラ「何言ってるの?ヒンメルはもういないじゃない」クチュクチュペロペロ
- 月のスマホ代250円なんだが
- 米国株大暴落!!!NISA含み損www [252835186]
