1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

画像を表示する【道具としての OpenCV 画像認識】

Last updated at Posted at 2024-03-25

本記事でできること

ロボットの手先にカメラを搭載したハンドアイ構成でカメラ画像を取得して表示することもできます。
image.png

想定シーン

ロボットをビジュアルフィードバック制御する

カメラを使ったロボットアームの制御方法を、ビジュアルフィードバック制御といいます。ここでは、ビジュアルフィードバック制御を使った自動化システムを開発する際に必要となる画像認識プログラムをまとめています。

画像を表示する

OpenCVの画像表示では、cv::waitKeyのたびに描画が更新されるという仕様があります。ここでは備忘録的な感じで、画像をただ表示するだけのプログラムを掲載します。読み込んだ静止画の場合に加え、カメラ画像を取得して更新表示する場合のプログラムを掲載します。

実行環境

  • OS:Ubuntu 22.04 LTS
  • 言語:C++
  • クルーボ:v5.1.0

クルーボについて

ロボットアプリケーション開発には、株式会社チトセロボティクスのロボット制御ソフトウェア「クルーボ」を使用します。本記事のプログラムは、クルーボがインストールされた制御コンピュータ上で動作します。

静止画を表示する場合のプログラム

#include <iostream>
#include <opencv2/opencv.hpp>

cv::Mat load_image(const std::string file_path) {
    cv::Mat loaded_image = cv::imread(file_path, 1);
    if (loaded_image.empty()) {
        throw std::runtime_error("画像を正常に読み込めませんでした。");
    }
    return loaded_image;
}

int main(void) {
    std::string file_path = "../data/fuji.jpg";
    const cv::Mat loaded_image = load_image(file_path);

    cv::imshow("window", loaded_image);
    cv::waitKey(0);
}

カメラで撮像した動画を表示する場合のプログラム

このプログラムは、クルーボ スタートアップガイド4章のサンプルプログラムです。

#include <iostream>
#include <opencv2/opencv.hpp>
#include "crewbo/crewbo.h"

int main() {
    // デバイス ID, 横解像度 , 縦解像度を設定する。
    crewbo::camera::UsbCamera camera(0, 1280, 720);
    std::cout << "q キー押下で終了します。 " << std::endl;

    while (cv::waitKey(1) != 'q') {
        // カメラ画像を取得する。
        const cv::Mat camera_image = camera.fetchSingleFrame_();

        // 取得画像を表⽰する。
        cv::imshow("camera_image", camera_image);
    }
}

おわりに

人手作業をロボットアームで自動化するために、カメラを使ったロボット制御=ビジュアルフィードバック制御が大切です。
ロボット制御用の画像認識でも中身のひとつひとつはシンプルなので、要素に分解して解説していきたいと思います。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?