opencv +python 提取roi目标区域全部像素的值 得出上下限 均匀值

cv2.imread后返回的值是一个矩阵,而我需要全部像素的值,不需要矩阵排布

所以:

利用

h, w, _ = img3.shape

得到区域的长宽,也就是像素的行数和列数

再用 for 循环,逐个打印

for a in range(h):
    for b in range(w):
        print(img3[a,b])
        jihe.append(list(img3[a,b]))
        num +=1

就可以得到整齐的一字排开的像素值

[ 98 125 255]
[ 97 124 255]
[ 96 123 254]
[ 94 121 252]
[ 93 120 251]
[ 92 119 250]
[ 91 118 249]
[ 90 117 248]
[ 98 125 255]
[ 97 124 255]
[ 95 122 253]
[ 93 120 251]
[ 92 119 250]
[ 91 118 249]
[ 89 116 247]
[ 87 114 245]
[ 97 124 255]
[ 96 123 254]
[ 94 121 252]
[ 94 121 252]
[ 93 120 251]
[ 92 119 250]
[ 90 117 248]
[ 88 115 246]
[ 93 120 251]
[ 92 119 250]
[ 92 119 250]
[ 93 120 251]
[ 94 121 252]
[ 93 120 251]
[ 91 118 249]
[ 90 117 248]
[ 93 120 251]
[ 93 120 251]
[ 95 122 253]
[ 96 123 254]
[ 97 124 255]
[ 95 122 253]
[ 95 122 253]
[ 95 122 253]
[ 95 122 255]
[ 94 121 254]
[ 95 122 255]
[ 97 124 255]
[ 97 124 255]
[ 96 123 255]
[ 95 122 255]
[ 95 122 255]
[ 92 119 252]
[ 90 117 250]
[ 89 116 249]
[ 92 119 252]
[ 93 120 253]
[ 92 119 252]
[ 90 117 250]
[ 90 117 250]
[ 92 119 252]
[ 88 115 248]
[ 88 115 248]
[ 91 118 251]
[ 94 121 254]
[ 93 120 253]
[ 91 118 251]
[ 90 117 250]
[ 92 119 252]
[ 90 117 250]
[ 89 116 249]
[ 91 118 251]
[ 92 119 252]
[ 92 119 252]
[ 92 119 252]
[ 93 120 253]
[ 89 116 249]
[ 89 116 249]
[ 90 117 250]
[ 93 120 253]
[ 94 121 254]
[ 93 120 253]
[ 93 120 253]
[ 93 120 253]
[ 84 110 246]
[ 86 112 248]
[ 88 114 250]
[ 90 116 252]
[ 90 116 252]
[ 90 116 252]
[ 90 116 252]
[ 91 117 253]
[ 83 109 245]
[ 85 111 247]
[ 87 113 249]
[ 86 112 248]
[ 85 111 247]
[ 85 111 247]
[ 87 113 249]
[ 89 115 251]
[ 86 112 248]
[ 87 113 249]
[ 87 113 249]
[ 86 112 248]
[ 83 109 245]
[ 83 109 245]
[ 86 112 248]
[ 88 114 250]
[ 85 111 247]

再求RGB均值

sumx = sumy = sumz = 0
for i in range(num):
[x, y, z] = jihe[i]
sumx = sumx + x
sumy = sumy + y
sumz = sumz + z

r=int(sumx/num)
g=int(sumy/num)
b=int(sumz/num)
print(r, g, b)
print(num)
print(jihe)
print('集合长度%d' % (len(jihe)))

colors_change = np.uint8([[[b,g,r]]])
hsv_change = cv2.cvtColor(colors_change,cv2.COLOR_BGR2HSV)
print(hsv_change)

得出HSV平均值

这里的HSV是opencv下的,与别处不同

For HSV, Hue range is [0,179], Saturation range is [0,255] and Value range is [0,255]. Different softwares use different scales. So if you are comparing OpenCV values with them, you need to normalize these ranges.

H:0-179

S: 0-255

V:0-255

但其他软件经常见H也是两百多的

转载于:https://www.cnblogs.com/mrfri/p/8651957.html

### OpenCV-Python 视觉巡线常用库及资源 #### 使用的Python库 对于视觉巡线项目,主要依赖于`opencv-python`库来处理图像数据。此库提供了丰富的函数用于图像变换、颜色空间转换以及形态学操作等功能[^1]。 ```python import cv2 ``` 为了简化某些特定任务的操作流程,还可以引入辅助性的第三方包如`numpy`来进行矩阵运算支持: ```python import numpy as np ``` 当涉及到机器人操作系统(ROS)集成时,则需额外安装并配置`rclpy`(Robot Operating System 2 Python client library),以便实现传感器数据订阅与执行器指令发布功能。 ```bash pip install rclpy ``` #### 关键技术点概述 - **色彩阈设定**:通过调整HSV范围参数筛选目标路径的颜色特征,从而区分背景和其他干扰物。例如,在获取RGB格式图片后将其转化为HSV模式,并设置合理的上下限提取感兴趣区域内的像素。 ```python rgb_img, hsv_range = color.Roi_hsv(rgb_img, Roi_init) ``` - **二化处理**:采用自适应或固定阈方法将灰度图转换成黑白两色表示形式,便于后续轮廓检测等步骤实施。Otsu算法能够自动确定最佳分割界限,适用于光照条件变化较大的场景[^2]。 ```python retval, dst = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU) ``` - **边缘跟踪与拐点定位**:通过对连续帧间差异分析捕捉物体运动轨迹;同时利用逻辑判断机制识别出边界突变位置作为转向依据之一[^4]。 ```python # 记录是否存在拐点及其坐标 has_upper_left_corner = False upper_left_x, upper_left_y = None, None for y in range(height): for x in range(width): if not has_upper_left_corner and img[y][x] != 0: has_upper_left_corner = True upper_left_x, upper_left_y = x, y break if has_upper_left_corner: break ``` #### 开发环境搭建建议 针对嵌入式平台比如Raspberry Pi而言,除了必要的软件栈之外,还应考虑硬件加速选项提升性能表现。可以通过XDRP工具实现在PC端远程操控开发板完成调试工作,减少实际部署过程中的不便之处[^3]。 ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install xrdp ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值