我想知道如何遍历图像的所有像素。我试过这个:
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
它打印一组垂直数字,不是数组形式。我也得到一个超出范围的数组异常。请建议一种方法。
答案 0 :(得分:10)
访问Python中的特定像素
import cv2
image = cv2.imread("sample.jpg")
pixel= image[200, 550]
print pixel
输出: [73 89 102]
答案 1 :(得分:7)
我不知道x变量的用途是什么。你不需要它。
只需使用:
foreach($optiondata as $key=>$value)
{
echo $value;
}
将打印一组垂直数字。如果要修改像素的值,请使用for i in range(rows):
for j in range(cols):
k = img[i,j]
print k
。 http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html
如果要打印整个阵列,请使用img.itemset()
答案 2 :(得分:3)
使用numpy数组访问使用数组索引会很慢。
您可以使用item()
方法进行访问,使用itemset
进行更改。
例如
for i in range(0,img.shape[0]):
for j in range(0,img.shape[1]):
pixel = img.item(i, j)
print pixel
答案 3 :(得分:2)
试试这个:
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
答案 4 :(得分:1)
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
答案 5 :(得分:1)
您可以做到
for (int y = 0; y<im.rows; y++)
{
for (int x = 0; x<im.cols; x++)
{
Vec3b color = im.at<Vec3b>(Point(x, y));
//you can print color this has the pixel value
}
}
答案 6 :(得分:0)
垂直数组是图像的RGB(Reg,Green,Blue)通道值。如果您想要像素的单个值,则可能需要先将图像转换为灰度。这实际上取决于您的应用以及您想要对图像做什么,转换为灰度只是一种方法。
转换为灰度
grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
中显示了一些基本操作
答案 7 :(得分:0)
您正在以灰度读取图像
img = cv2.imread('D:\ Project \ Capture1.jpg',0)
在这里你只会得到强烈的
答案 8 :(得分:0)
此代码将通过循环为您提供数组&#39; k&#39; 中的像素值。
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
答案 9 :(得分:0)
import cv2
import numpy as np
imagename = "capure.jpg"
img = cv2.imread(imagename, 0) # 0 params, for gray image
height, width = img.shape[:2] # image height and width
print(img) # all image pixels value in array
print(img[10, 10]) # one pixel value in 10,10 coordinate
for y in range(height):
for x in range(width):
print(img[y,x], end = "\t")
print("\t")