###実現したいこと
クラス分けをする
opencvを利用し、BGRをHSVに変換したい。
###利用している環境
opencv3.1.0,visualstudio2015
###原因と思われる箇所
main文
1int main(int argc, char** argv[]) 2{ 3 char imgname[400]; 4 5 ImgInfo imginfo; 6 ImgProcess imgprocess; 7 8 std::ofstream LValueFile("BValueFile.csv"); 9 10 for (int i = 0; i < 125; i++) { 11 12 sprintf_s(imgname, "img_%d.jpg", i); 13 14 imginfo.SetImg(cv::imread(imgname, CV_LOAD_IMAGE_COLOR)); 15 if (imginfo.GetImg().empty()) return -1; 16 17 imgprocess.ImgInput(imginfo.GetImg()); //←ここが原因だと思われる 18 19 cv::namedWindow("hsvimg", cv::WINDOW_AUTOSIZE); 20 cv::imshow("hsvimg",imginfo.GetHsvImg()); 21 cv::waitKey(30); 22 } 23 return 0; 24}
###関連ソースコード
ImgInfo
1class ImgInfo 2{ 3public: 4 //Ctor/Dtor 5 ImgInfo(); 6 ~ImgInfo(); 7 8 //Setter/Getter 9 cv::Mat GetImg(); 10 void SetImg(cv::Mat _img); 11 12 cv::Mat GetHsvImg(); 13 void SetHsvImg(cv::Mat _hsv_img); 14 15private: 16 cv::Mat img; 17 cv::Mat hsvImg; 18}; 19 20 21cv::Mat ImgInfo::GetImg() { 22 return this->img; 23} 24void ImgInfo::SetImg(cv::Mat _img) { 25 this->img = _img; 26} 27 28cv::Mat ImgInfo::GetHsvImg() { 29 return this->hsvImg; 30} 31void ImgInfo::SetHsvImg(cv::Mat _hsv_img) { 32 this->hsvImg = _hsv_img; 33}
ImgProcess
1class ImgProcess 2{ 3public: 4 //Ctor/Dtor 5 ImgProcess(); 6 ~ImgProcess(); 7 8 //public method 9 void ImgInput(cv::Mat img); 10 11private: 12 ImgInfo imginfo; 13}; 14 15void ImgProcess::ImgInput(cv::Mat img) { 16 cv::Mat hsv_img; 17 cv::cvtColor(img, hsv_img, CV_BGR2HSV); 18 imginfo.SetHsvImg(hsv_img); 19} 20
###追記
試した見たところ、以下の状態では正常に動きました。
int main(int argc, char** argv[]) { char imgname[400]; ImgInfo imginfo; ImgProcess imgprocess; std::ofstream LValueFile("BValueFile.csv"); for (int i = 0; i < 125; i++) { sprintf_s(imgname, "c:\Users\osumi\Documents\Yuki Tsuchiya\programs\ObjectHeight\ObjectHeight\img_%d.jpg", i); imginfo.SetImg(cv::imread(imgname, CV_LOAD_IMAGE_COLOR)); if (imginfo.GetImg().empty()) return -1; imgprocess.ImgInput(imginfo.GetImg()); cv::namedWindow("hsvimg", cv::WINDOW_AUTOSIZE); cv::imshow("hsvimg",imginfo.GetImg()); ///←GetHsvImg()を変更 cv::waitKey(30); } return 0; }
int main(int argc, char** argv[]) { char imgname[400]; ImgInfo imginfo; ImgProcess imgprocess; std::ofstream LValueFile("BValueFile.csv"); for (int i = 0; i < 125; i++) { sprintf_s(imgname, "c:\Users\osumi\Documents\Yuki Tsuchiya\programs\ObjectHeight\ObjectHeight\img_%d.jpg", i); imginfo.SetImg(cv::imread(imgname, CV_LOAD_IMAGE_COLOR)); if (imginfo.GetImg().empty()) return -1; cv::Mat hsvimg; cvtColor(imginfo.GetImg(), hsvimg, CV_BGR2HSV); ///←imgperocess.Imginput(imginfo.GetImg())の内容を表示 cv::namedWindow("hsvimg", cv::WINDOW_AUTOSIZE); cv::imshow("hsvimg",hsvimg); cv::waitKey(30); } return 0; }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/17 09:38
2019/06/17 10:45
2019/06/17 11:29
2019/06/18 00:57