I am loading an image into python e.g.
image = cv2.imread("new_image.jpg")
How can i acccess the RGB values of image
?
I am loading an image into python e.g.
image = cv2.imread("new_image.jpg")
How can i acccess the RGB values of image
?
You can do
image[y, x, c]
or equivalently image[y][x][c]
.
and it will return the value of the pixel in the x,y,c
coordinates. Notice that indexing begins at 0
. So, if you want to access the third BGR (note: not RGB) component, you must do image[y, x, 2]
where y
and x
are the line and column desired.
Also, you can get the methods available in Python for a given object by typing dir(<variable>)
. For example, after loading image
, run dir(image)
and you will get some usefull commands:
'cumprod', 'cumsum', 'data', 'diagonal', 'dot', 'dtype', 'dump', 'dumps', 'fill', 'flags', 'flat', 'flatten', 'getfield', 'imag', 'item', 'itemset', 'itemsize', 'max', 'mean', 'min', ...
Usage: image.mean()
image[x, y, z]
also works, since this is just a numpy array. –
Femme dot(a,b)
. Instead of accessing each element, maybe you could use it. –
Torrent image[y][x]
. –
Esophagus x
and y
was very misleading... Thank you for pointing that out! –
Torrent Get B G R color value of pixel in Python using opencv
import cv2
image = cv2.imread("sample.jpg")
color = int(image[300, 300])
# if image type is b g r, then b g r value will be displayed.
# if image is gray then color intensity will be displayed.
print color
output:
[ 73 89 102]
TypeError: only size-1 arrays can be converted to Python scalars
–
Aldus This code will print the red , green and blue value of pixel 300, 300:
img1 = cv2.imread('Image.png', cv2.IMREAD_UNCHANGED)
b,g,r = (img1[300, 300])
print (r)
print (g)
print (b)
Below works.
import cv2
image = cv2.imread("new_image.jpg")
color = image[y, x]
blue = int(color[0])
green = int(color[1])
red = int(color[2])
It worked for me well :
import cv2
import numpy as np
cap = cv2.imread('/home/PATH/TO/IMAGE/IMG_0835.jpg')
#You're free to do a resize or not, just for the example
cap = cv2.resize(cap, (340,480))
for x in range (0,340,1):
for y in range(0,480,1):
color = cap[y,x]
print color
I think the most easiest way to get RGB of an image is use cv2.imshow("windowName",image)
.
The image would display with window, and the little information bar also display coordinate (x,y) and RGB below image. Like this picture. You are allowed to use mouse to see the RGB of any pixel you want.
Code example:
import cv2
image = cv2.imread("new_image.jpg")
try:
cv2.imshow("windowName",image)
cv2.waitKey(0)
except:
print("No this image")
© 2022 - 2024 — McMap. All rights reserved.
cv2.cvtColor(image, cv2.COLOR_BGR2YCbCr)
to convert your image easily, and it's probably more efficient. – Blinnie