マウス行動解析用画像処理ソフトとArduinoを連携させるプログラムのサンプルコード

マウス行動解析用画像処理ソフトとArduinoを連携させるプログラムのサンプルコード

山椒魚
山椒魚 (ID3679) 2017/08/17
0

前回の投稿
・動物用ビデオ・トラッキング・ソフトウェア 試作品 配布 フリー motion tracking software prototype
https://media.dmm-make.com/item/4288/

前回作った画像処理プログラムとArduinoによるハードウェア制御をしたい。

参考HP
・Arduino Serial Communication With C++
http://webtutsdepot.com/2010/05/01/arduino-visual-c-plus-plus-tutorial/

上記参考サイトのソースコードを削り、OpenCVのimshow関数で画像を表示できるか確かめた。
Arduino基板は後日用意する。

// cell counter filter change.cpp main project file.


#include "stdafx.h"
#include <opencv2/opencv_lib.hpp> // 静的リンクライブラリの指定
#include <opencv2/opencv.hpp> // インクルードファイル指定
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <time.h>
#include <opencv2/core/cuda.hpp>
#include <iostream>

#include <stdio.h>
#include <stdlib.h>

//#include <omp.h>
#include <iomanip>

#include <opencv2/core.hpp>

#include <opencv2/core/cuda.hpp>

using namespace System;
using namespace System::IO::Ports;

int main(array<System::String ^> ^args)
{



	int display_width = 1920, display_height = 1080;

	//Port Initialization
	String^ answer;
	String^ portName;
	int baudRate = 9600;
	//Console::WriteLine("Type in a port name and hit ENTER");
	//portName = Console::ReadLine();
	portName = "COM3";
	// arduino settings
	SerialPort^ arduino;
	arduino = gcnew SerialPort(portName, baudRate);

	//open port
	try{
		arduino->Open();
	}
	catch (IO::IOException^ e)
	{
		Console::WriteLine(e->GetType()->Name + ": Port is not ready");
	}
	catch (ArgumentException^ e)
	{
		Console::WriteLine(e->GetType()->Name + ": incorrect port name syntax, must start with COM/com");
	}

	arduino->WriteLine("1"); // send 1 to arduino LED点灯 点灯=TTL送信
	cv::namedWindow("0", CV_WINDOW_OPENGL);

	
	cv::Mat dst(display_height, display_width, CV_8UC1, cv::Scalar(255, 0, 0));
	cv::imshow("0",dst);

	arduino->WriteLine("0"); // send 0 to arduino LED消灯
	



	return 0;
	arduino->Close();
}

Arduino基板無いままの実行結果

Visual Studio 2013 のC++/CLRプロジェクトを作り、上記のソースコードをビルドした。

ビルドは正常に終了。
OpenCVのライブラリも連携できているので、
画像解析の結果に基づいてArduino基板に信号を送り、何らかのハードウェアを制御することができそう。

Arduino接続していない状態だと、上記画像のようなエラーが出ます。
imshow関数も機能していたので、C++/CLRプロジェクトでOpenCVが使えた。

参考にしてくれた記事

記事が登録されていません。
この記事を参考にして、新しく記事を投稿しよう!

違反について