teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

編集

2018/06/09 15:34

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -130,6 +130,6 @@
130
130
 
131
131
  ```
132
132
  インクルードしたヘッダファイルにheight、width、img_srcの定義は書いてあると思ったのですが、エラーが出るということは必要なヘッダファイルが入っていないのだと思います。
133
- 数height、widthimg_srcの定義が書いてあるgithubはないでしょうか?
133
+ 数height、widthと関数img_srcの定義が書いてあるgithubはないでしょうか?
134
134
  ヘッダファイルでも構いません。
135
135
  どうかよろしくお願いいたします。

2

編集

2018/06/09 15:34

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -60,4 +60,76 @@
60
60
  できれば使い方のわからない関数がそのままの形で載っていればいいのですが、そうでない今回のような場合どのように調べればよいか教えていただけないでしょうか?
61
61
 
62
62
  調べたサイトのようにPoint2f( m10/m00 , m01/m00 );と素直に座標だけ表せてくれればいいのですがなぜかmuが入ってPoint2f( mu.m10/mu.m00 , mu.m01/mu.m00 );となるので、どうやって座標のmuを考慮しながら計算のプログラムを入れるか悩みます。
63
- 多分muはPoint2f()より引数だと思うのですが、muが何を表しているのかわからず困り果てています。
63
+ 多分muはPoint2f()より引数だと思うのですが、muが何を表しているのかわからず困り果てています。
64
+
65
+
66
+
67
+
68
+ 編集6/10
69
+ <実行した環境>
70
+
71
+ - Windows10 64bit
72
+ - visual studio 2017
73
+ - opencv 3.4.1
74
+
75
+ ベストアンサー後に申し訳ありません。asm様からのプログラムを読んで学習のために自分なりにプログラムを作りました。
76
+
77
+ 以下のプログラムをVS2017でビルドしたところエラーが出ました。
78
+ ```
79
+ #include <stdio.h>
80
+ #include <opencv/cv.h>
81
+ #include <opencv2/highgui/highgui.hpp>
82
+ #include <opencv2/imgcodecs/imgcodecs.hpp>
83
+ #include <opencv2/imgproc/imgproc.hpp>
84
+ #include <opencv2/core/core.hpp>
85
+ using namespace cv;
86
+
87
+ int main() {
88
+
89
+ Mat img = imread("sample.jpg", IMREAD_GRAYSCALE);
90
+
91
+ int count = 0;
92
+ int conut = 0;
93
+ double x_g = 0.0, y_g = 0.0;
94
+ for (int y = 0; y<height; y++) {
95
+ for (int x = 0; x<width; x++) {
96
+ if (img_src[y*width + x] == 255) {
97
+ count++;
98
+ x_g += x;
99
+ y_g += y;
100
+ }
101
+ }
102
+ }
103
+ int a;
104
+ int b;
105
+ a= x_g / conut;
106
+ b= y_g / conut;
107
+
108
+ Point2f mc = Point2f(a, b);//x_g / conutとy_g / conutをaとbと置いた。
109
+ circle(img, mc, 4, Scalar(100), 2, 4);
110
+
111
+ printf("x: %f y: %f", mc.x, mc.y);
112
+
113
+ imshow("img", img);
114
+ waitKey(0);
115
+ return 0;
116
+ }
117
+ ```
118
+
119
+ こちらがエラーなのですが
120
+ ```
121
+ 1>------ ビルド開始: プロジェクト: Project18, 構成: Release x64 ------
122
+ 1>Source.cpp
123
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(16): error C2065: 'height': 定義されていない識別子です。
124
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(17): error C2065: 'width': 定義されていない識別子です。
125
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(18): error C2065: 'img_src': 定義されていない識別子です。
126
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(18): error C2065: 'width': 定義されていない識別子です。
127
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(30): warning C4244: '引数': 'double' から 'float' への変換です。データが失われる可能性があります。
128
+ 1>プロジェクト "Project18.vcxproj" のビルドが終了しました -- 失敗。
129
+ ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
130
+
131
+ ```
132
+ インクルードしたヘッダファイルにheight、width、img_srcの定義は書いてあると思ったのですが、エラーが出るということは必要なヘッダファイルが入っていないのだと思います。
133
+ 関数height、width、img_srcの定義が書いてあるgithubはないでしょうか?
134
+ ヘッダファイルでも構いません。
135
+ どうかよろしくお願いいたします。

1

編集

2018/06/09 15:28

投稿

carnage0216
carnage0216

スコア194

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,13 @@
51
51
  また、Point2f( mu.m10/mu.m00 , mu.m01/mu.m00 ); と circle( img, mc, 4, Scalar(100), 2, 4);にmu、mcが入っていることからただ計算式を置き換えるだけでは意味がないと考えています。
52
52
  しかし、どうやってmuとmcを考慮しながら計算式を置き換えてよいかわかりません。
53
53
  どうか助言を頂けないでしょうか?
54
- どうかよろしくお願いいたします。
54
+ どうかよろしくお願いいたします。
55
+
56
+
57
+ <編集>
58
+ 関数Point2fの使い方を調べようと本家の方で検索したのですが、例題としてPoint2f a(0.3f, 0.f), b(0.f, 0.4f);となり少なくともaとbの座標を二次元で表していることはわかるのですが、mcがなにを言っているのかわかりません。
59
+ 調べたサイトは[http://opencv.jp/opencv-2.1/cpp/basic_structures.html](http://opencv.jp/opencv-2.1/cpp/basic_structures.html)です。
60
+ できれば使い方のわからない関数がそのままの形で載っていればいいのですが、そうでない今回のような場合どのように調べればよいか教えていただけないでしょうか?
61
+
62
+ 調べたサイトのようにPoint2f( m10/m00 , m01/m00 );と素直に座標だけ表せてくれればいいのですがなぜかmuが入ってPoint2f( mu.m10/mu.m00 , mu.m01/mu.m00 );となるので、どうやって座標のmuを考慮しながら計算のプログラムを入れるか悩みます。
63
+ 多分muはPoint2f()より引数だと思うのですが、muが何を表しているのかわからず困り果てています。