我已经能够读取图像,然后使用可以正常工作的坐标位置(pixel = img[801,600]
)读取特定像素。
我的下一步是遍历每个像素,并尝试使用像素数据查找位置(在此示例中为[801,600])。
我通过“ img”进行的迭代找不到像素。
我将不胜感激任何帮助或指导。
import cv2
import numpy as np
img = cv2.imread('one.jpg')
pixel = img[801,600]
print (pixel) # pixel value i am searching for
for i in img:
for x in i:
if x.sort == pixel.sort:
print ("SUCCESS")
参考方案
内置的enumerate
迭代功能将为您提供帮助。它将提供一个迭代索引,在您的情况下,将提供一个像素索引:
import cv2
import numpy as np
img = cv2.imread('one.jpg')
pixel = img[801,600]
print (pixel) # pixel value i am searching for
def search_for():
for iidx, i in enumerate(img):
for xidx, x in enumerate(i):
if (x == pixel).all():
print (f"SUCCESS - [{iidx} {xidx}]")
if __name__ == "__main__":
print("Search using for loops...")
search_for()
话虽这么说,for循环在python中运行缓慢,并且代码需要花费一些时间才能在适当的大图像上运行。相反,首选使用np.array
方法,因为它们已针对此类应用程序进行了优化:
import cv2
import numpy as np
img = cv2.imread('one.jpg')
pixel = img[801,600]
print (pixel) # pixel value i am searching for
def search_array():
# create an image of just the pixel, having the same size of
pixel_tile = np.tile(pixel, (*img.shape[:2], 1))
# absolute difference of the two images
diff = np.sum(np.abs(img - pixel_tile), axis=2)
# print indices
print("\n".join([f"SUCCESS - {idx}" for idx in np.argwhere(diff == 0)]))
if __name__ == "__main__":
print("Search using numpy methods...")
search_array()
Python-crontab模块 - python我正在尝试在Linux OS(CentOS 7)上使用Python-crontab模块我的配置文件如下:{ "ossConfigurationData": { "work1": [ { "cronInterval": "0 0 0 1 1 ?", "attribute&…
Python sqlite3数据库已锁定 - python我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…
Python Pandas导出数据 - python我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…
Python:在不更改段落顺序的情况下在文件的每个段落中反向单词? - python我想通过反转text_in.txt文件中的单词来生成text_out.txt文件,如下所示:text_in.txt具有两段,如下所示:Hello world, I am Here. I am eighteen years old. text_out.txt应该是这样的:Here. am I world, Hello old. years eighteen a…
python-docx应该在空单元格已满时返回空单元格 - python我试图遍历文档中的所有表并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。我在类似的帖子中已经看过scanny提供的其他代码,但是由于某种原因,它并没有提供我正在解析的文档的预期输出可以在https://www.ontario.ca/laws/regulation/140300中找到该文档from docx import Document from…