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() # 释放摄像头
傻根根呀:
DMPR-PS论文详解
还是不走寻常路:
DMPR-PS论文详解
shaoon: