2017-05-29 4 views
0

MacOSでOpenCV 3を使用していますが、すべて画像のピクセルのRGB値を取得しようとしています。 I画像におけるユーザのクリックを検出してX、Y座標を用いてRGB色を出力するプログラムを作った正しいピクセルカラー画像を得ることができませんpython

enter image description here

例えば、私は、次の画像を使用していクリックの回数は増えましたが、サークルの一部の地域をクリックしたときに間違った値が表示されていました。例:青い円の内側をクリックすると、画像のポイント(177,340)で、値(255,255,255)が出力されますが、これは間違いです。

しかし、右または左にビットをクリックすると、正しい値(17、51、225)が出力されます。

import cv2 
import numpy as np 

img = cv2.imread('circles.jpg', 1) 
print(img[177,340]) 

:これは、私はそれがスケールに関連するものだった疑った、そして私はただのpython上の画像を開き、次のコードを使用してピクセルの値を得た

、画像全体のために起こりますしかし、私が得るのはこれです:

array([255, 255, 255], dtype=uint8) 

私が気づいていない座標系に関係するものと思われます。誰かがそれについて私に手を差し伸べることができますか?

ありがとうございます。

+1

OpenCVでは、Xは左から始まり、Yは上から始まることに注意してください。 – Divakar

+3

RGB値はimg [row、col]、行は上から下、colは左から右に移動します。しかし、イメージ上でマウスクリックを登録すると、それは(x、y)ポイントです.xは左から右に、yは上から下に移動します。行と列のどちらか、またはxとyのどちらかを交換すると、ものを修正する必要があります。 – Headcrab

+3

実際に実物の写真とは対照的に、実在の写真の形をアプリケーションで使用している場合は、JPEGではなくPNGまたはGIF形式を使用することを検討してください。 –

答えて

2

[177,340]点をマゼンタの(255,0,255)に、以下のコードで描画しました。

image[175:179,338:342] = (255,0,255) # enlarge a bit for easy viewing

明確点は白背景に位置している画像で示します。

enter image description here

多分、あなたはあなたが「青丸」である代わりに[244,70,18]のあなたのイメージでは「オレンジと最大の円」である色[17,51,225]を得ること(col,row)として(row,col)間違ってコード化されました。

+0

それは、私は列で行を変更していた。 –

関連する問題