https://blog.csdn.net/zhangdongren/article/details/98941445?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_wei Mat img = imread(D:\\ Opencv Test\\test.jpg); Scalar color = img.at<Vec3b>(150, 150);//读取原图像(150, 150)的BGR 颜色 值,如果是灰度图像,将Vec3b改为uchar for (size_t row=0; row<5
OpenCV 学习 笔记( 提取 图像 特点 颜色 ) 我们经常需要 提取 图像 某种特殊 颜色 的区域,比如黄色或者红色区域。如果只是 提取 特点的 颜色 ,那么很简单,直接做 颜色 比较就可以了。如果要选取某个 颜色 范围,这个工作在 RGB 空间 就不是那么方便了。这时我们通常会选取 HSV 或类似的 颜色 空间。 关于 HSV 空间的介绍网上有很多,这里就不详细写了。但是可以认为 Hue 表示 颜色 ,Saturation 表示 颜色 的饱和度,Brightness 是亮度。选取 颜色 范围时我们通常用 Hue 和 Sat 两个维度。下面是在网上
我的代码读取的 图片 是下面这只猫 # ============================================================================= # 代码1 # 读取 图片 、保存 图片 以及计算运行所需要的时间 # ============================================================================= import numpy as np import cv2 start = cv2.getTic.
如果你使用的是C++,有些代码可能需要自行变更!   初学 opencv 的阶段,难免是从枯燥地啃文档和记函数开始。逐一而草率地“过”一遍函数用法,对于初学者而言,其实很难起到 学习 的进步。只有在具体的实例 ,才能更好地理解函数用法和搭配 的 妙用。   笔者在视觉库cvzone和halcon的启发下,总结了些 opencv 实现的 颜色 和轮廓的 提取 &筛选方法,能够方便地应用在不同的项目之上。   如果读友是小白,在这里也推荐个B站上的油管搬运教程: opencv 超实 下面从图像 提取 颜色 、形状和纹理特征的方法开始 1. 颜色 每次处理图像项目时,图像的色彩空间都会成为最先探索的地方,而我们最常用的就是RGB色彩空间。那么接下来使用 OpenCV ,我们可以将图像的 颜色 空间转换为HSV、LAB、灰度、YCrCb、CMYK等。 a. HSV(色相饱和度值) 色调H:描述主波长,是 指定 颜色 的通道 饱和度S:描述色调/ 颜色 的纯度/色调 值V:描述 颜色 的强度 import cv ret, frame = cap.read() # 读取每一帧 cv2.imshow('frame', frame) # 显示帧 if cv2.waitKey(1) == ord('q'): # 如果按下q键,退出循环 break 在窗口 显示的帧可以通过按下`q`键退出循环停止摄像头捕捉。 接下来,可以使用`cv2.imwrite()`函数来保存捕捉到的帧: ```python cv2.imwrite('photo.jpg', frame) # 保存捕捉到的帧 最后,可以使用`cv2.imread()`函数读取保存的 图片 ,并使用`cv2.cvtColor()`函数将 图片 转换为HSV 颜色 空间: ```python img = cv2.imread('photo.jpg') hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 现在,可以使用NumPy库来选择想要 提取 颜色 范围并创建掩码: ```python lower_range = np.array([0, 50, 50]) # 最低 颜色 范围 upper_range = np.array([10, 255, 255]) # 最高 颜色 范围 mask = cv2.inRange(hsv, lower_range, upper_range) # 创建掩码 最后,可以使用`cv2.bitwise_and()`函数将原始图像和掩码相乘, 提取 指定 颜色 范围的图像: ```python result = cv2.bitwise_and(img, img, mask=mask) # 提取 颜色 范围的图像 cv2.imshow('result', result) # 显示结果图像 cv2.waitKey(0) # 等待按下任意键 cv2.destroyAllWindows() # 销毁窗口 这样,就可以实现拍照并 提取 指定 颜色 范围的功能了。完整代码如下: ```python import cv2 import numpy as np cap = cv2.VideoCapture(0) # 打开第一个摄像头 while True: ret, frame = cap.read() # 读取每一帧 cv2.imshow('frame', frame) # 显示帧 if cv2.waitKey(1) == ord('q'): # 如果按下q键,退出循环 break cv2.imwrite('photo.jpg', frame) # 保存捕捉到的帧 img = cv2.imread('photo.jpg') hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) lower_range = np.array([0, 50, 50]) # 最低 颜色 范围 upper_range = np.array([10, 255, 255]) # 最高 颜色 范围 mask = cv2.inRange(hsv, lower_range, upper_range) # 创建掩码 result = cv2.bitwise_and(img, img, mask=mask) # 提取 颜色 范围的图像 cv2.imshow('result', result) # 显示结果图像 cv2.waitKey(0) # 等待按下任意键 cv2.destroyAllWindows() # 销毁窗口 cap.release() # 释放摄像头 傻根根呀: 在测试时,所有预测出来的框都是P(机器认为的正样本),与gt的iou高于iou阈值的为TP,反之为FP。没有预测出来的框都是N,目标检测一般不区分TN和FN。因为负样本根本没有显示出来,也不存在区分真假的问题。因此,目标检测中,TN和FN无意义。 目标检测常用的评估指标,precision=TP/TP+FP, recall=TP/GT(也就是recall=TP/TP+FN). ———————————————— DMPR-PS论文详解 还是不走寻常路: 作者自己重新在ps2.0上标的 DMPR-PS论文详解 shaoon: ps2.0这个数据集很多label都不对,标注的正确