月別アーカイブ: 2024年3月

Copilotでプログラム開発

↓続きの続き

 今やAIあるからプログラム余裕っしょという風潮にある。しかし,ChatGPT3.5でBFプログラム開発で散々な目にあったため,有料版だけの話でしょと思ってた時期もあった…しかし,前回に引き続きCopilot君の成長が著しく高くなったため,試しにProcessingでプログラム開発してみた。

========================================================================

プログラム1:「現在時刻・経過時間を表示+任意の.mp4動画を表示」

  • Processing3.5.4の環境で,mp4形式の動画を映し,更に画面右上に現在時刻と経過時間を赤文字で表示するプログラムを書いて。文字サイズは2.5倍のサイズにして。
  • 上記プログラムで,実行後のウィンドウを拡大・縮小を調整できるように変更して。
import processing.video.*;

Movie movie;
int startTime;

void setup() {
  size(640, 360);
  surface.setResizable(true); // ウィンドウのサイズを動的に変更できるように設定
  frameRate(30);
  movie = new Movie(this, "/Users/Nn50g/Desktop/a.mp4");
  movie.loop();
  startTime = millis();
}

void draw() {
  if (movie.available()) {
    movie.read();
  }
  image(movie, 0, 0, width, height);
  
  int elapsedTime = millis() - startTime;
  String currentTime = hour() + ":" + nf(minute(), 2) + ":" + nf(second(), 2);
  String displayText = "現在時刻: " + currentTime + "\n経過時間: " + nf(elapsedTime / 60000, 2) + "分" + nf((elapsedTime / 1000) % 60, 2) + "秒";
  
  fill(255, 0, 0); // 赤色に設定
  textSize(12 * 2.5); // 文字サイズを2.5倍に設定
  textAlign(RIGHT);
  text(displayText, width - 10, 20);
}

void movieEvent(Movie m) {
  m.read();
}

できてるじゃん!ライブラリの問題もあったが,ほぼ初見で,クリアした。

プログラム2:パソコンの内カメラで取得した映像を表示

import processing.video.*;

Capture cam;

void setup() {
  size(640, 480);

  String[] cameras = Capture.list();

  if (cameras.length == 0) {
    println("カメラが見つかりませんでした。");
    exit();
  } else {
    cam = new Capture(this, cameras[0]);
    cam.start();
  }
}

void draw() {
  if (cam.available() == true) {
    cam.read();
  }
  image(cam, 0, 0);
}

プログラム3:「内カメラ+(粗)モーションキャプチャ」

import gab.opencv.*;

import gab.opencv.*;
import processing.video.*;
import java.awt.*;

Capture video;
OpenCV opencv;

void setup() {
  size(640, 480);
  video = new Capture(this, 640/2, 480/2);
  opencv = new OpenCV(this, 640/2, 480/2);
  opencv.startBackgroundSubtraction(5, 3, 0.5);

  video.start();
}

void draw() {
  scale(2);
  opencv.loadImage(video);

  image(video, 0, 0 );

  opencv.updateBackground();
  opencv.dilate();
  opencv.erode();

  noFill();
  stroke(255, 0, 0);
  strokeWeight(3);
  for (Contour contour : opencv.findContours()) {
    contour.draw();
  }
}

void captureEvent(Capture c) {
  c.read();
}

プログラム4:画像を読み取り,描くプログラム

うーん…特徴的 これは,ちゃんとしたものをGit Hubから持ってくれば書けそうだな。疑似スキャナーの役割を果たしそう。Githubリンク

=====================================================================

もうなんか,こういうことができるってことを知っていれば,プログラム知識がなくてもできるじゃないですか!そして,発想力があればほぼなんでもできるな。これは,知らなかったり,偏見ある人は損だな。