2
3

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 3 years have passed since last update.

NO.1 カメラ起動+BGR取得

Last updated at Posted at 2021-06-09

ルービックキューブの色を取得していきます

複数の記事になります。 
ルービックキューブの色を取得して kociembaを利用して
最後は回転記号を取得します。

NO.2 画面に取得したBGRを表示
NO.3取得したいろが 何色なのか 区別する
NO.4ルービックキューブの回転記号をえる
[NO.5 最終コード 参考程度に,,,,]
(https://qiita.com/otoboke162/private/c8b5417cb8a8c5af12f8)

カメラ起動

cv2.VideoCapture(0)

( )の中身の数字を変えて 起動するカメラを指定する。
0が スタート 複数カメラ接続がある場合 1,2など試す。


if cv2.waitKey(1) & 0xFF == ord('q'):

キーボードのQボタンで  ブレイク 終了します。
(ウィンドウが閉じる)

サンプルコード(カメラ)
import cv2

capture = cv2.VideoCapture(2)

while True:
    ret, frame = capture.read()


    cv2.imshow('camra',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

capture.release()
cv2.destroyAllWindows()


サンプルコード(カメラ)を実行

サンプル1.PNG
ウィンドウをクリックして 'Q'ボタンを押せば終了できます。
*右上の _ □ x ボタンは使えません







四角い枠で囲む

opencv
cv2.rectangleを使用して 四角い枠を表示する


左上が(X0, Y0) 
左右が X方向:
上下が Y方向:
サンプル1-1.png



サンプルコード(四角い枠を表示)

import cv2

capture = cv2.VideoCapture(2)
# capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) # 横幅
# capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 720) # 縦幅

x_s = 100
y_s = 100
x_e = 400
y_e = 400
# Y縦 X横

while True:
    ret, frame = capture.read()

    colorBGR = cv2.rectangle(frame, 
         (x_s, y_s), (x_e, y_e), (255, 255, 255), 2)


    cv2.imshow('camra',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

capture.release()
cv2.destroyAllWindows()
# 追加したコード
    colorBGR = cv2.rectangle(frame, 
         (x_s, y_s), (x_e, y_e), (255, 255, 255), 2)


*** 今回は使っていませんが 自分で  ウィンドウの大きさを指定してあげることができる
# capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) # 横幅
# capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 730) # 縦幅


ret, frame = capture.read()
この frameを使う

-----------コーーーーード----------------------
# Y縦軸 X横軸
x_s = 100
y_s = 100
x_e = 400
y_e = 400

colorBGR = cv2.rectangle(frame, (x_s, y_s), (x_e, y_e), (255, 255, 255), 2)
-------------------------------------------------

------以下説明-------


”””
cv2.rectangleは四角を表示する


(frame  最初のフレームは 上の赤文字のやつ

(x_s, y_s) 開始地点を指定します
(x_e, y_e)  終了地点を指定します

(255, 255, 255) B,G,Rの順番で指定する 今回は白色
(0, 0, 255) なら 赤色


, 2) 最後の 2は 線の太さ 0にした場合 線ではなく 指定した範囲
全部塗りつぶします 
0の場合 ■ このように 真っ白になる
”””

#x_s, y_s スタートの s
#x_e, y_s エンドの e



サンプルコード(四角い枠を表示)を実行

下の白い線が したのコードで表示される

colorBGR = cv2.rectangle(frame, (x_s, y_s), (x_e, y_e), (255, 255, 255), 2)

サンプル2-2.png

このように 範囲を指定してあげればいいじゃん。





指定したところのBGRを取得

サンプルコード(BGR取得)

import cv2

capture = cv2.VideoCapture(2)

x_s = 280
y_s = 280
x_e = 320
y_e = 320
# Y縦 X横

while True:
    ret, frame = capture.read()

    colorBGR = cv2.rectangle(frame, (x_s, y_s), (x_e, y_e), (255, 255, 255), 2)
    pixel = frame[300, 300]
    print(pixel)

    cv2.imshow('camra',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

capture.release()
cv2.destroyAllWindows()
# 追加したコード
    pixel = frame[300, 300]
    print(pixel)

frame[Y, X]で指定すれば その座標のBGRを取得することができる

今回は fram[300,300]

四角い枠は 280~320でかこんでおり

その 中心 300の座標を取得しているので 四角い枠の中心部分の
BGRを取得している。



#### サンプルコード(BGR取得)の実行 ![サンプル3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1126388/96903945-62c2-21a9-d1b9-e47e9c4d59a6.png) 取得したBGRを リアルタイムで ターミナルに表示しています

先の話、、、この枠を 9個用意してしまえば
ルービックキューブ色を9個取得できる。


参考サイト

カメラ起動方法
カメラの起動や台数が確認できます。
opencvの座標
x、yどっちが横軸、縦軸?? まよったらここで 



ちょっと おまけ

カメラ接続確認
接続されてる カメラが不明な場合ここで確認できる (マイク・スピーカも可能)


Mac Bookで起動すると エラーがでる可能性ある。
パソコン側がカメラの使用拒否をしてるかもしれない。
カメラの使用許可をする必要がありる

パソコン側で設定はできない(はず)

abort trap6:  PYthonが、、、、終了しました。

もし このエラーがでたら
こちらへどうぞ

ターミナルから VS CODEを起動するとMAC からカメラの許可を 聞いてくるはず
(自分はそうでした、ほかの方はしりません)


次回取得した色を 画面左上に表示させます

NO.2 画面に取得したBGRを表示

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?