【发布时间】:2016-10-04 23:24:06
【问题描述】:
我已经使用 openCV 的 imread 函数导入了一张彩色图像。
im = cv2.imread('test.jpg')
我正在寻找像素值为 [255, 255, 255] 的白色像素的索引。我知道 im 实际上是一个 3D 数组。但奇怪的是 im[0,0] 的值是 [255 255 255],而不是 [255, 255, 255]。而 im[0,0,0] 是 255。所以 [255 255 255] 看起来像一个列表或其他东西,但实际上并不等于 [255, 255, 255]。
>>> print im[0,0]
[255 255 255]
>>> print im[0,0,0]
255
所以我的问题是:
- [255 255 255] 和 [255, 255, 255] 有什么区别?
- 如何获取所有像素的索引?我应该使用什么搜索算法?
【问题讨论】:
-
在 C++ 中,您将在白色像素的掩码上使用
cv::findNonZero:cv::Mat1b mask; cv::inRange(img, cv::Scalar(255,255,255), cv::Scalar(255,255,255), mask); std::vector<cv::Point> pts; cv::findNonZero(mask, pts);。 Python 包装器中也应该有类似的东西。或者可能是一些使用 Numpy 设施的快捷方式......
标签: python image opencv image-processing