Rect roi(1024, 400, 256, 130); # 感兴趣的框(x, y, w, h) Mat mask = Mat::zeros(src.size(), CV_8UC1);# // mask初始化全为0 mask(roi).setTo(255);# // 将非roi区域置为255 # 角点检测,参数:输入图像,角点最大数量,品质因子,距离 p0 = cv2.goodFeaturesToTrack(gray_one, mask=mask, maxCorners=100, qualityLevel=0.3, minDistance=7) python实现
时间: 2024-03-08 13:50:43 浏览: 106
这段代码似乎是 C++ 代码,下面是 Python 实现:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 定义感兴趣的区域
x, y, w, h = 1024, 400, 256, 130
roi = (x, y, w, h)
# 初始化一个与输入图像大小相同的掩膜,所有像素值初始为 0
mask = np.zeros(img.shape[:2], dtype=np.uint8)
# 将 ROI 区域的像素值设置为 255,即将 ROI 区域的掩膜设为 1
mask[y:y+h, x:x+w] = 255
# 进行角点检测,参数包括输入图像,掩膜,最大角点数,品质因子和距离
corners = cv2.goodFeaturesToTrack(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), maxCorners=100, qualityLevel=0.3, minDistance=7, mask=mask)
# 绘制角点
for corner in corners:
x, y = corner.ravel()
cv2.circle(img, (x, y), 3, (0, 0, 255), -1)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先读入一张图像,然后定义了一个感兴趣的区域(ROI),接着初始化了一个与输入图像大小相同的掩膜,所有像素值初始为 0,然后将ROI区域的像素值设置为 255,即将 ROI 区域的掩膜设为 1。最后,我们使用了 OpenCV 中的 goodFeaturesToTrack() 函数进行角点检测,得到的结果保存在 corners 变量中。其中,我们将掩膜作为参数传入,这样就只会在 ROI 区域内进行检测。最后,我们绘制了检测到的角点并显示图像。
阅读全文