前提・実現したいこと
opencv4.1とvisualstudio2015を使用してテンプレートマッチングを行いたいです。(c言語)
発生している問題・エラーメッセージ
コンパイルが通ってしまいます。 プログラムを再生するとmatchTemplateでエラーが発生する。
該当のソースコード
#include <stdio.h> #include <DxLib.h> #include <math.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <time.h> #include <string> #include <windows.h> #include <tchar.h> #include <locale.h> #include <atlstr.h> #include "C:\opencv\build\include\opencv2\opencv.hpp" //↑highgui.hppとimgproc.hppが含まれています int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { opencvtest05(); } int opencvtest05(void) // { //PCのスクリーンを読み込む cv::Mat screen_image = opencvtest04().clone(); cv::imwrite("abcde.png", screen_image); //フレーム画像を保存する. cv::namedWindow("test1"); cv::imshow("test1", screen_image); //グレイ化 //cv::Mat gray_image; //cvtColor(screen_image, gray_image, cv::COLOR_BGR2GRAY); //cv::namedWindow("test2"); //cv::imshow("test2", gray_image); //テンプレートを読み込む cv::Mat temp_image = cv::imread("abc.PNG"); cv::namedWindow("test3"); cv::imshow("test3", temp_image); //テンプレートマッチング cv::Mat result_image; cv::matchTemplate(screen_image, temp_image, result_image, cv::TM_CCORR_NORMED); //マッチした点の座標を求める //cv::Point maxPoint; //double maxVal; //minMaxLoc(result_image, NULL, &maxVal, NULL, &maxPoint, cv::Mat()); //double threshould_bar = 0.85; //スレッショルド //if (maxVal > threshould_bar) //{ // cv::rectangle(screen_image, maxPoint, cv::Point(maxPoint.x + temp_image.cols, maxPoint.y + temp_image.rows),cv::Scalar(0,255,255) ,2 ,8 ,0 ); //} //cv::namedWindow("test"); //cv::imshow("test", screen_image); return 0; }
試したこと
http://ishidate.my.coocan.jp/opencv_12/opencv_12.htm
のサイトのコードほぼそのままです。
cv::matchTemplateの行を飛ばすと画面のスクショ(1920x1080px,ビットの深さ32)とテンプレート画像(153x132px,ビットの深さ32)が表示されるため、
画像の読み込みは成功していると思われる。
cv::Mat screen_image = opencvtest04().clone();を
cv::imreadで読み込むようにしても、コンパイルが通り再生時にmatchTemplateで失敗する。
cv::TM_CCORR_NORMEDをCV_TM_CCORR_NORMEDにするとコンパイルエラーとなる。(識別子が定義されていません)
cv::matchTemplateをmatchTemplateにしても再生時に引っかかる。
コードのコメントアウトしている部分を解除してもコンパイルは通るが、再生時にmatchTemplateで引っかかる。
補足情報(FW/ツールのバージョンなど)
x64のReleaseでビルド
opencvのバージョンは4.1
使用pcはwindows10
あなたの回答
tips
プレビュー