查找范围内的特定坐标像素,该范围内的像素强度也

问题描述 投票:-2回答:1

例如,

对于坐标图像(X,Y),即(576,0)直到(726,1371),我想知道哪个坐标的像素强度在红色[165至225]绿色[176至200]和蓝色[186至198]。

输出代码为坐标。

python opencv image-processing pixel
1个回答
1
投票

这是使用Python / OpenCV / Numpy做到这一点的一种方法。

  • 为该区域创建遮罩
  • 根据颜色创建遮罩
  • 联合口罩
  • 获取组合蒙版不是黑色的坐标

输入:

enter image description here

import cv2
import numpy as np

# load image
img = cv2.imread("monet2.jpg")

# create region mask
mask1 = np.zeros_like(img)[:,:,0]
mask1[0:0+75, 90:90+75] = 255

# create color mask
lower =(0,100,150) # lower bound for each channel
upper = (40,160,2100) # upper bound for each channel
mask2 = cv2.inRange(img, lower, upper)

# combine masks
mask3 = cv2.bitwise_and(mask1, mask2)

# get coordinates
coords = np.argwhere(mask3)
for p in coords:
    px = (p[0],p[1])
    print (px)


# apply mask to image (to see where data is obtained)
mask3 = cv2.merge([mask3,mask3,mask3])
img_masked = cv2.bitwise_and(img, mask3)


# display images
cv2.imshow("mask1", mask1)
cv2.imshow("mask2", mask2)
cv2.imshow("mask3", mask3)
cv2.imshow("img_masked", img_masked)
cv2.waitKey(0)

# write results to disk
cv2.imwrite("monet2_mask1.jpg", mask1)
cv2.imwrite("monet2_mask2.jpg", mask2)
cv2.imwrite("monet2_mask3.jpg", mask3)
cv2.imwrite("monet2_masked.jpg", img_masked)

区域遮罩:

enter image description here

颜色蒙版:

enter image description here

组合面膜:

enter image description here

蒙版图像:

enter image description here

坐标列表:

(6, 128)
(7, 122)
(7, 125)
...
(63, 125)
(63, 126)
(63, 134)
(63, 135)
© www.soinside.com 2019 - 2024. All rights reserved.