forループが継続しない
OpenCVを利用して画像から特徴点の抽出をおこなうプログラムを作成しています.利用する画像サンプルが多いので,stringを利用して上手く自動化できればと考えていましたが,うまく動作できませんでした.
発生している問題・エラーメッセージ
想定している分のforループが実行されない.画像の読み込み,特徴抽出,書き出しといった動作はしてくれるものの,ループ自体が7回目の段階で終了してしまう.
ソースコード
C++
1#include <string.h> 2#include <iostream> 3#include <fstream> 4#include <opencv2/opencv.hpp> 5#include <opencv2/core.hpp> 6#include <opencv2/features2d/features2d.hpp> 7#include <opencv2/highgui/highgui.hpp> 8#include <opencv2/xfeatures2d/nonfree.hpp> 9#include <opencv2/imgcodecs.hpp> 10 11using namespace cv; 12using namespace std; 13 14int main() { 15 16 auto algorithm = KAZE::create();//auto型:変数の型を推測? 17 18 vector<KeyPoint> keypoint1; 19 Mat color_image, gray_image, descriptor1, dest1; 20 string filename, exportname, writename; 21 int count = 0; 22 23 for (int j = 1; j < 6; j++) { 24 for (int i = 1; i < 9; i++) { 25 26 filename = "./true/test" + to_string(j) + "-" + to_string(i) + ".bmp"; 27 exportname = "./true_res/test" + to_string(j) + "-" + to_string(i) + "_result.bmp"; 28 29 30 //画像指定 31 color_image = imread(filename, 1); 32 if (color_image.empty()) { 33 return -1; 34 } 35 36 //resize(color_image, color_image, Size(), 0.5, 0.5); 37 38 cvtColor(color_image, gray_image, COLOR_RGB2GRAY); 39 normalize(gray_image, gray_image, 0, 255, NORM_MINMAX); 40 41 42 algorithm->detect(gray_image, keypoint1); 43 algorithm->compute(gray_image, keypoint1, descriptor1); 44 45 drawKeypoints(color_image, keypoint1, dest1); 46 47 imshow("result2", dest1); 48 imwrite(exportname, dest1); 49 waitKey(50); 50 51 writename = "./true_kp_res/test" + to_string(j) + "-" + to_string(i) + "_kp.csv"; 52 ofstream ofs(writename); 53 54 for (const auto& p : keypoint1) { 55 ofs << p.pt.x << "," << p.pt.y << "," << p.angle << endl; 56 count++; 57 } 58 59 60 } 61 } 62 return 0; 63}
回答2件
あなたの回答
tips
プレビュー