質問編集履歴

3

編集

2018/06/09 15:34

投稿

carnage0216
carnage0216

スコア194

test CHANGED
File without changes
test CHANGED
@@ -262,7 +262,7 @@
262
262
 
263
263
  インクルードしたヘッダファイルにheight、width、img_srcの定義は書いてあると思ったのですが、エラーが出るということは必要なヘッダファイルが入っていないのだと思います。
264
264
 
265
- 数height、widthimg_srcの定義が書いてあるgithubはないでしょうか?
265
+ 数height、widthと関数img_srcの定義が書いてあるgithubはないでしょうか?
266
266
 
267
267
  ヘッダファイルでも構いません。
268
268
 

2

編集

2018/06/09 15:34

投稿

carnage0216
carnage0216

スコア194

test CHANGED
File without changes
test CHANGED
@@ -123,3 +123,147 @@
123
123
  調べたサイトのようにPoint2f( m10/m00 , m01/m00 );と素直に座標だけ表せてくれればいいのですがなぜかmuが入ってPoint2f( mu.m10/mu.m00 , mu.m01/mu.m00 );となるので、どうやって座標のmuを考慮しながら計算のプログラムを入れるか悩みます。
124
124
 
125
125
  多分muはPoint2f()より引数だと思うのですが、muが何を表しているのかわからず困り果てています。
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+ 編集6/10
136
+
137
+ <実行した環境>
138
+
139
+
140
+
141
+ - Windows10 64bit
142
+
143
+ - visual studio 2017
144
+
145
+ - opencv 3.4.1
146
+
147
+
148
+
149
+ ベストアンサー後に申し訳ありません。asm様からのプログラムを読んで学習のために自分なりにプログラムを作りました。
150
+
151
+
152
+
153
+ 以下のプログラムをVS2017でビルドしたところエラーが出ました。
154
+
155
+ ```
156
+
157
+ #include <stdio.h>
158
+
159
+ #include <opencv/cv.h>
160
+
161
+ #include <opencv2/highgui/highgui.hpp>
162
+
163
+ #include <opencv2/imgcodecs/imgcodecs.hpp>
164
+
165
+ #include <opencv2/imgproc/imgproc.hpp>
166
+
167
+ #include <opencv2/core/core.hpp>
168
+
169
+ using namespace cv;
170
+
171
+
172
+
173
+ int main() {
174
+
175
+
176
+
177
+ Mat img = imread("sample.jpg", IMREAD_GRAYSCALE);
178
+
179
+
180
+
181
+ int count = 0;
182
+
183
+ int conut = 0;
184
+
185
+ double x_g = 0.0, y_g = 0.0;
186
+
187
+ for (int y = 0; y<height; y++) {
188
+
189
+ for (int x = 0; x<width; x++) {
190
+
191
+ if (img_src[y*width + x] == 255) {
192
+
193
+ count++;
194
+
195
+ x_g += x;
196
+
197
+ y_g += y;
198
+
199
+ }
200
+
201
+ }
202
+
203
+ }
204
+
205
+ int a;
206
+
207
+ int b;
208
+
209
+ a= x_g / conut;
210
+
211
+ b= y_g / conut;
212
+
213
+
214
+
215
+ Point2f mc = Point2f(a, b);//x_g / conutとy_g / conutをaとbと置いた。
216
+
217
+ circle(img, mc, 4, Scalar(100), 2, 4);
218
+
219
+
220
+
221
+ printf("x: %f y: %f", mc.x, mc.y);
222
+
223
+
224
+
225
+ imshow("img", img);
226
+
227
+ waitKey(0);
228
+
229
+ return 0;
230
+
231
+ }
232
+
233
+ ```
234
+
235
+
236
+
237
+ こちらがエラーなのですが
238
+
239
+ ```
240
+
241
+ 1>------ ビルド開始: プロジェクト: Project18, 構成: Release x64 ------
242
+
243
+ 1>Source.cpp
244
+
245
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(16): error C2065: 'height': 定義されていない識別子です。
246
+
247
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(17): error C2065: 'width': 定義されていない識別子です。
248
+
249
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(18): error C2065: 'img_src': 定義されていない識別子です。
250
+
251
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(18): error C2065: 'width': 定義されていない識別子です。
252
+
253
+ 1>c:\users\daito\source\repos\project18\project18\source.cpp(30): warning C4244: '引数': 'double' から 'float' への変換です。データが失われる可能性があります。
254
+
255
+ 1>プロジェクト "Project18.vcxproj" のビルドが終了しました -- 失敗。
256
+
257
+ ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
258
+
259
+
260
+
261
+ ```
262
+
263
+ インクルードしたヘッダファイルにheight、width、img_srcの定義は書いてあると思ったのですが、エラーが出るということは必要なヘッダファイルが入っていないのだと思います。
264
+
265
+ 関数height、width、img_srcの定義が書いてあるgithubはないでしょうか?
266
+
267
+ ヘッダファイルでも構いません。
268
+
269
+ どうかよろしくお願いいたします。

1

編集

2018/06/09 15:28

投稿

carnage0216
carnage0216

スコア194

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,21 @@
105
105
  どうか助言を頂けないでしょうか?
106
106
 
107
107
  どうかよろしくお願いいたします。
108
+
109
+
110
+
111
+
112
+
113
+ <編集>
114
+
115
+ 関数Point2fの使い方を調べようと本家の方で検索したのですが、例題としてPoint2f a(0.3f, 0.f), b(0.f, 0.4f);となり少なくともaとbの座標を二次元で表していることはわかるのですが、mcがなにを言っているのかわかりません。
116
+
117
+ 調べたサイトは[http://opencv.jp/opencv-2.1/cpp/basic_structures.html](http://opencv.jp/opencv-2.1/cpp/basic_structures.html)です。
118
+
119
+ できれば使い方のわからない関数がそのままの形で載っていればいいのですが、そうでない今回のような場合どのように調べればよいか教えていただけないでしょうか?
120
+
121
+
122
+
123
+ 調べたサイトのようにPoint2f( m10/m00 , m01/m00 );と素直に座標だけ表せてくれればいいのですがなぜかmuが入ってPoint2f( mu.m10/mu.m00 , mu.m01/mu.m00 );となるので、どうやって座標のmuを考慮しながら計算のプログラムを入れるか悩みます。
124
+
125
+ 多分muはPoint2f()より引数だと思うのですが、muが何を表しているのかわからず困り果てています。