5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenCV:拡張GUI(Qt5)動作確認サンプル

Last updated at Posted at 2016-11-03

1. 概要

Mac:OpenCV(+Qt5)最新版インストール方法で導入したOpenCV(highguiモジュールをQt5で拡張)の動作確認サンプル。
(GitHub)

2. 実行結果

put_text_sample_01.png
put_text_sample_02.png

3. ソースコード

main.cpp
/**
 * OpenCV3 描画サンプル: フォントとテキスト
*/

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>


int main( int argc, char** argv )
{
    // 表示する文字列
    cv::String text = "Hi Hello World!";

    // フォントの指定
    int fontFace = cv::FONT_HERSHEY_SCRIPT_COMPLEX;

    // 文字の大きさ
    double fontScale = 3;

    // 文字の太さ
    int thickness = 5;

    // 画像マトリックス構造体の作成
    cv::Mat img(600, 800, CV_8UC3, cv::Scalar(200, 150, 100));

    // 文字列表示のベースライン(y座標)
    int baseline = 0;

    // 表示文字列のサイズを取得
    cv::Size textSize = cv::getTextSize(text, fontFace,
                                fontScale, thickness, &baseline);

    // 中央表示位置の計算
    cv::Point textOrg((img.cols - textSize.width)/2,
                  (img.rows + textSize.height)/2);

    // 文字列をBOXで囲む
    baseline += thickness;
    int margin = 10;
    cv::rectangle(img, textOrg + cv::Point(-margin, margin),
              textOrg + cv::Point(textSize.width + margin, -textSize.height - margin),
              cv::Scalar::all(50));

    // 表示ベースラインに下線を引く
    cv::line(img, textOrg + cv::Point(0, thickness),
         textOrg + cv::Point(textSize.width, thickness),
         cv::Scalar(250, 190, 140));

    // 画像マトリックスにテキストを追加
    cv::putText(img, text, textOrg, fontFace, fontScale,
            cv::Scalar::all(250), thickness, 8);

    // ウィンドウの生成
    cv::namedWindow("TestWindow", cv::WINDOW_AUTOSIZE);

    // ウィンドウに画像マトリックスを表示
    cv::imshow("TestWindow", img);

    // ユーザが入力するまで待機
    cv::waitKey(0);

    // ウィンドウの破棄(関連するメモリの解放)
    cv::destroyAllWindows();

    // 終了
    return 0;
}

4. Make設定ファイル

CMakeLists.txt
#----- cMakeのバージョン ----
cmake_minimum_required(VERSION 3.6)

#----- プロジェクト情報 ----
# プロジェクト名
set(PROJECT_NAME put_text_sample)
# ビルドターゲットのソースを指定
set(SOURCE_FILES main.cpp)

#----- ビルド設定 -----
# プロジェクトの言語を指定
project(${PROJECT_NAME} CXX)
# コンパイルオプション
set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")

#----- OpenCVの設定 ----
# OpenCVConfig.cmakeがあるディレクトリを指定(環境に合わせて変更)
SET(OpenCV_DIR "/usr/local/Cellar/opencv3/HEAD-6c12533_4/share/OpenCV")
# OpenCvのincludeディレクトリを指定(環境に合わせて変更)
INCLUDE_DIRECTORIES("/usr/local/Cellar/opencv3/HEAD-6c12533_4/include")
# [Package]_DIRに指定されたディレクトリを使い検索
FIND_PACKAGE( OpenCV REQUIRED )

#----- ビルド ----
# 対象のソースファイルを設定
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
# OpenCVの動的ライブラリをビルドターゲットにリンク
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})

5.ビルド

cmake .
make

6.実行

./put_text_sample

上の画像のウィンドウが表示されます。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?