前提・実現したいこと
画像処理を用いてイチゴのカラー画像からめしべの画素を抽出し、抽出されためしべに外接する円を表示させようとしています。
こちらのcv::minEnclosingCircle
を使って外接円表示を試みていますがうまくいきません。
上記のopencv2.0のリファレンスによると第一引数が二次元点の集合となっていますのでMat型のめしべ抽出画像を二次元点の集合にする必要があります。この変換がよくわからず困っています。
何か解決策がありましたら教えていただきたいです。
該当のソースコード
こちらがソースコード及び入力画像となります。
c++
1#include <opencv2/core/core.hpp> 2#include <opencv2/imgproc/imgproc.hpp> 3#include <opencv2/highgui/highgui.hpp> 4 5int 6main(int argc, char *argv[]) 7{ 8 //画像の読み込み 9 cv::Mat img_input = cv::imread("input.jpg"); 10 11 // CV_*C2型のMatに変換してから,外接円を計算 12 cv::Point2f center; 13 float radius; 14 cv::minEnclosingCircle(cv::Mat(img_input).reshape(2), center, radius); 15 // 外接円を描画 16 cv::circle(img_input, center, radius, cv::Scalar(100,100,200), 2, CV_AA); 17 18 cv::namedWindow("image", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO); 19 cv::imshow("image", img_input); 20 cv::waitKey(0); 21}
補足情報(FW/ツールのバージョンなど)
Windows 10
Opencv 3.4.0
Visual Studio Community 2015
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/03 08:14
2019/12/03 08:22 編集
2019/12/03 10:02