批量获取图片中的某个点的像素值

现在有一个任务需要获取几千张图片中的指定位置的像素值(每个图片的位置不一样,需要手动标注),写了一个程序循环文件夹中的所有图片,每次会显示一张图然后手动点击图片中需要提取像素的位置,按Enter键切换到下一张,每张图的文件名和像素会被记录到color.txt文件中

import cv2
import os
import numpy as np
from PIL import Image

# 定义鼠标点击事件并将点击坐标输入数组
def mouse_img_cod(event, cod_x, cod_y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        xy = "%d,%d" % (cod_x,cod_y)
        cv2.circle(img, (cod_x,cod_y), 1, (255, 0, 0), thickness = -1)
        cv2.putText(img, xy, (cod_x,cod_y), cv2.FONT_HERSHEY_PLAIN,1.0, (0,0,0), thickness = 1)  # 将坐标值放在图片内
        cv2.imshow("image", img)
        pro_x.append(cod_x)
        pro_y.append(cod_y)

path = r"E:\doc\traindatasets\img_rec"
for name in os.listdir(path):
    img_path = os.path.join(path, name)
    img = cv2.imread(img_path)[:,:,:3]
    pro_x = []
    pro_y = [] 
    cv2.namedWindow('image', cv2.WINDOW_AUTOSIZE)  # 创建一个名为image的窗口
    cv2.setMouseCallback("image", mouse_img_cod)   # 鼠标事件回调
    cv2.imshow('image',img)                        # 显示图片
    cv2.waitKey(0)                                 # 按下任意键退出窗口
    cv2.destroyAllWindows()
    print(pro_y[0], pro_x[0])                       # 打印坐标
    img = cv2.imread(img_path)[:,:,:3]
    B,G,R = img[pro_y[0], pro_x[0], :]
    print("file: {} RGB: {} {} {}".format(name, R, G, B))
    file = open("color3.txt", "a+")
    file.write("file: {} RGB: {} {} {}\n".format(name, R, G, B))
file.close()

# img = np.ones((256, 256, 3)) * np.array([140, 142, 149])
# img = img.astype(np.uint8)
# color = Image.fromarray(img)
# color.show()
# print()


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值