Visual Studio 2013 Express Visual C++( アンマネージドコード ) OpenCV 3.1 |
■240.OpenCV グレースケール変換 | Prev Top Next | |
|
今回は画像ファイルを読み込んでグレースケールに変換して画像ファイルを書き出します。
参考にしたサイトは初めてのOpenCV開発 ― highguiモジュール【OpenCV 2.4.9】です。
#include <iostream> #include <opencv2/highgui/highgui.hpp> #pragma comment( lib, "opencv_world300d.lib" ) cv::Mat createGrayScale(std::string readPath, std::string writePath) { // グレースケールとして画像読み込む cv::Mat img = cv::imread(readPath, cv::IMREAD_GRAYSCALE); if (img.empty()) { CV_Error(CV_StsObjectNotFound, "cv::imread() Failed"); } // 画像をファイルに出力 bool ret = cv::imwrite(writePath, img); if ( ret == false ) { CV_Error(CV_StsError, "cv::imwrite() Failed"); } // 出力した画像の cv::Mat を返す return cv::imread(writePath, cv::IMREAD_COLOR); } void createWindow(cv::Mat& img, std::string winname) { // ウィンドウを生成する cv::namedWindow(winname, cv::WINDOW_AUTOSIZE); // ウィンドウに画像を表示する cv::imshow(winname, img); // キー入力待機 cv::waitKey(0); // ウィンドウの破棄 cv::destroyAllWindows(); } int main(int argc, const char* argv[]) { int hr = -1; try { cv::Mat img = createGrayScale("D:/TEMP/MaverickProj/Image/OpenCV/02/Texture.png", "D:/TEMP/MaverickProj/Image/OpenCV/02/Texture2.png"); createWindow(img, "gray scale"); std::cout << "Successed" << std::endl; hr = 0; } catch (cv::Exception ex) { std::cout << ex.err << std::endl; } // ウィンドウの破棄 cv::destroyAllWindows(); return hr; }