その別のOpenCVの質問。私はこれが大好きですが、それはあなたを真剣に狂わせる可能性があります.
問題: 私は、iPhone 用の iOS で、はい、OpenCV を使用してプロジェクトに取り組んでいます。フレームワークが悪いのか、それとも何なのかわかりません。
これは機能します:
cv::Canney()
cv::adaptiveThreshold()
でも、やってみると
"cvGet2D()" (without previous "cv::")
「cvGet2D」の呼び出しに一致する関数がありませんというエラーが表示されます
「cvGet2D()」と入力すると、コードヒントに表示され、ヘッダーを見つけるのが最も少ないことを示唆していますか? 「cv::get2D」または「cv::cvGet2D」と入力しようとしても、何も表示されません。インストールした OpenCV フレームワークがまだ理解できないブラックボックスのように感じられてイライラしています。
具体的には、適切なライブラリの開発とそうでないこと、およびリンクに関係があると思いますか? そこに物を捨てるだけです。
皆様、どうもありがとうございました。私は本当に感謝しており、いくらかお返しできるほど賢くなるまで待ちきれません.
編集:
だから、明確にするための最新の試み。
cv::cvGet2D(results,0,0);
新しいエラー: 「名前空間 'cv' に "cvGet2D" という名前のメンバーがありません。
ここに何かアイデアはありますか?
その他の編集:
回答ありがとうございます... 4 時間後、コーヒーを数杯飲みましたが、まだ困惑しています。名前空間を台無しにしている場合、cv::adaptiveThreshold のようなものが機能するのに cv::get2D が表示されないのはなぜですか? 深刻な脳出血を引き起こしています。
したがって、このソリューションの C または C++ バージョンのいずれかを使用する必要があるようです。あらゆるヒントが提案されます。インターフェイスにあることを追加します: #import <OpenCV/opencv2/opencv.hpp>
. 次に、cvGet2D の構造を確認できるコア ライブラリをインポートします。再度、感謝します。
進捗!!
これらは私の新しい考えです。
cv::Mat tempMat = [self.imageView.image CVMat];
cv::Mat testMat = tempMat(cv::Rect(0,0,2591, 1));
cv::Mat templateMat = tempMat(cv::Rect(0,0,100,1));
cv::Mat results;
cv::matchTemplate(testMat, templateMat, results, CV_TM_CCOEFF_NORMED);
typedef Vec<float, 2> Vec2f;
Vec2f& elem = results.at<Vec2f>( 0 , 35 );
float value1 = elem[0];
float value2 = elem[1];
では、おそらく .at を使用する必要がありますか? 正接?かもしれませんが、何かをしているようです。新しい質問です。wtf は matchTemplate を出力しますか? その 1 行、この場合は 2492 列です。私の質問は、(0,35) の値は複数の数値であるべきですか? elem[0] と elem[1] は何を表していますか? お分かりかもしれませんが、私は単純に写真から 1 行を取り出し、その小さなチャンクをテンプレートとして使用しています。写真には縦線が含まれているので、線同士の距離を特定したいと考えています。はい、複雑です。しかし、この議論の目的のために、実際には 1 つの行だけが必要であり、一連の列は正しいシフトとして各比較の相関係数を出力しますか?
男、仲間、若者、お嬢様、そしてすべての賢い大衆に感謝します!