ブログトップ 記事一覧 ログイン 無料ブログ開設

nursの日記 このページをアンテナに追加 RSSフィード Twitter

日々の自分用の備忘録を綴っています。

2018-09-25 画像形式PNGへの変換(C++で簡単に)

画像形式PNGへの変換(C++で簡単に)

あれ?ここは?電脳意識の中か?。。(ザザッ、、)やあ、俺だよ。
任意の画像形式をPNG形式に変換するツールをC++でお手軽に作りたくなったので、OpenCVで何も考えずに、imreadとimwriteを使って作ったのでそのための最低限のソースを以下にメモってみる。まさにPowered By OpenCV。
(OpenCV 3.4.1使用)

(以下、ヘッダーやライブラリのリンクは、あなたのOpenCV環境による話ですので臨機応変に対応ください。)

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <shlwapi.h>
#include "opencv2/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgcodecs.hpp"
#pragma comment(lib, "shlwapi.lib")
#ifdef _DEBUG
#define CV_EXT "d.lib"
#else
#define CV_EXT ".lib"
#endif
#pragma comment(lib, "opencv_core340" CV_EXT)
#pragma comment(lib, "opencv_highgui340" CV_EXT)
#pragma comment(lib, "opencv_imgcodecs340" CV_EXT)

using namespace std;

int main(int argc, char* argv[])
{
  if (argc < 2)
  {
    cout << "usage a.exe <image_file_path>" << endl;
    return 0;
  }
  if (PathFileExists(argv[1])==FALSE)
  {
    cout << "could not open file. abort.\n" << endl;
    return 0;
  }
  cv::Mat image;
  // 任意形式の画像を読み込みます。
  image = cv::imread(argv[1], CV_LOAD_IMAGE_COLOR);
  //cv::imshow("hi", image);
  char fn[234];//←まここはお好みで(笑)
  strcpy(fn, argv[1]);
  *PathFindExtension(fn) = '\0';
  strcat(fn, ".png");
  // 元画像と同じ場所にPNG形式として出力します。
  cv::imwrite(fn, image);
  return 0;
}

PNGへの変換目的のためだけに、作ってるプログラムをOpenCV依存アプリにするのも嫌だったので、こういう別個独立お簡単ツールとして作ってみました。

まこれで作ったEXEを起動するBATを書いて、そのショートカットに、変換したい画像をドロップするもよし、そのショートカット(.lnkファイル)を、
for %%i 文の中で呼び出して、全画像ファイル一括バッチ変換!みたいなことしてもいいし。夢も広がるってもんだ。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/nurs/20180925/1537901320