Opencv获取图像上的像素值(Ubuntu版)

前言:当需要制作自己的训练集的时候,标注图片上的检测目标,是一件比较耗时费力的事情。下面记录的就是其中一种方法。

1.代码:

import argparse
import cv2

refPt=[]
cropping=False

def click_and_crop(event,x,y,flags,param):
    global refPt,cropping
    if event == cv2.EVENT_LBUTTONDOWN:
        refPt=[(x,y)]
        print(x,y)
        cropping=True
    elif event == cv2.EVENT_LBUTTONUP:
        refPt.append((x,y))
        print(x,y)
        cropping=False
        
        cv2.rectangle(image,refPt[0],refPt[1],(0,255,0),2)
        cv2.imshow("image",image)
        
# 构造参数解析器并解析参数
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True, help="Path to the image")
args = vars(ap.parse_args())
 
# 加载图像,复制它,并设置鼠标回调函数
image = cv2.imread(args["image"])
clone = image.copy()
cv2.namedWindow("image")
cv2.setMouseCallback("image", click_and_crop)
 
# 保持循环,直到按下“q”键
while True:
	# 显示图像并等待按键
	cv2.imshow("image", image)
	key = cv2.waitKey(0) & 0xFF
 
	# 如果按下“r”键,则重置裁剪区域
	if key == ord("r"):
		image = clone.copy()
 
	# 如果按下“c”键,则从循环中断开
	elif key == ord("c"):
		break
 
# 如果有两个参考点,则从图像裁剪感兴趣的区域并显示它
if len(refPt) == 2:
	roi = clone[refPt[0][1]:refPt[1][1], refPt[0][0]:refPt[1][0]]
	cv2.imshow("ROI", roi)
	cv2.waitKey(0)
 
# 关闭所有打开的窗口
cv2.destroyAllWindows()  
2.在Ubuntu系统下打开命令提示符,cd到你的图片及代码路径下:

3.输入:python 0005.py --image 01.jpg

(其中,0005.py为python代码名称,01.jpg为需要标定的图片)

4.在打开的image窗口中点选你需要标记的目标,最终结果如下:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值