2015-03-11 14 views
7

Tôi mới dùng xử lý hình ảnh và ngôn ngữ python. Tôi muốn biết cách lặp qua tất cả các điểm ảnh của một hình ảnh. Tôi đã thử điều này:Làm cách nào để tôi truy cập các pixel của hình ảnh bằng cách sử dụng opencv-python?

import cv2 
import numpy as np 

x = np.random.randint(0,5,(500,500)) 
img = cv2.imread('D:\Project\Capture1.jpg',0) 
p = img.shape 
print p 
rows,cols = img.shape 

for i in range(rows): 
    for j in range(cols): 
     k = x[i,j] 
     print k 

nó in một tập hợp dọc các số không ở dạng mảng. Tôi cũng nhận được một mảng ngoài giới hạn ngoại lệ.Vui lòng đề xuất một phương pháp.

Trả lời

0

Mảng dọc là giá trị kênh RGB (Reg, Green, Blue) cho hình ảnh. Nếu bạn muốn một giá trị duy nhất cho pixel, bạn có thể muốn chuyển đổi hình ảnh thành màu xám trước tiên. Nó thực sự phụ thuộc vào ứng dụng của bạn và những gì bạn muốn làm với hình ảnh, chuyển đổi sang màu xám chỉ là một cách tiếp cận.

Để chuyển đổi sang dạng grayscale

grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

Một số thao tác cơ bản được trình bày trong pixel cụ thể documentation

7

truy cập bằng Python

import cv2 
image = cv2.imread("sample.jpg") 
pixel= image[200, 550] 
print pixel 

đầu ra: [73 89 102]

3

Tôi không thấy mục đích của biến x của bạn là gì. Bạn không cần nó.

Đơn giản chỉ cần sử dụng:

for i in range(rows): 
for j in range(cols): 
    k = img[i,j] 
    print k 

mà sẽ in có một bộ dọc các con số. Nếu bạn muốn thay đổi sửa đổi giá trị của các pixel, hãy sử dụng img.itemset(). http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html

Nếu bạn muốn in toàn bộ mảng sau đó sử dụng print(img)

1

Hãy thử điều này:

import numpy as np 
import Image 

image = Image.open("example.png") 
image_data = np.asarray(image) 

for i in range(len(image_data)): 
    for j in range(len(image_data[0])): 
     print(image_data[i][j]) # this row prints an array of RGB color for each pixel in the image 
0
import cv2 
    import numpy as np 

    image = cv2.imread('C:/Users/Asus/Desktop/test.jpg', cv2.IMREAD_COLOR) 

    for x in range (1,480): 
     for y in range (1,640): 

      pixel = image[x,y] 
      print pixel 
+0

Bạn có thể giải thích tại sao đây là giải pháp? những gì đã làm các OP bỏ lỡ, và những gì ông cần biết để hiểu giải pháp này? –

0

bạn đang đọc hình ảnh về quy mô xám

img = cv2.imread ('D: \ Project \ Capture1.jpg', 0)

tại đây bạn sẽ chỉ nhận được intencity

0

Mã này sẽ cung cấp cho bạn giá trị pixel trong một mảng 'k' bằng cách trải qua vòng lặp.

import cv2 
import numpy as np 

img = cv2.imread('sample.jpg',0) 
rows,cols = img.shape 
k = [] 
for i in range(rows): 
    for j in range(cols): 
     k.append(img[i,j]) 
print k 
Các vấn đề liên quan