def get_lbp(self, image): """ 获取给定图片的LBP,划分成几个区域后 :param rgb: :return: """ gridx = 6 gridy = 6 widx = 8 widy = 8 hists = [] for i in range(gridx): for j in range(gridy): mat = image[i * widx: (i + 1) * widx, j * widy: (j + 1) * widy] lbp = skif.local_binary_pattern(mat, 8, 1, 'uniform') max_bins = 10 hist, _ = np.histogram(lbp, normed=True, bins=max_bins, range=(0, max_bins)) hists.append(hist) out = np.array(hists).reshape(-1, 1) return out
时间: 2024-02-10 15:32:39 浏览: 28
这是一个函数,用于获取给定图片的局部二值模式(Local Binary Pattern,LBP)特征。函数需要一个参数image,表示要提取特征的图片。
该函数将图片划分为gridx*gridy个区域,每个区域的大小为widx*widy,然后对每个区域提取LBP特征。LBP是一种常用的图像特征提取方法,它通过对每个像素与周围8个像素的灰度进行比较,得到一个二进制数,将这些二进制数连起来形成一个LBP图像。然后,将LBP图像中的像素值分为若干个区间,统计每个区间中像素的数量,得到一个直方图。该直方图即为该区域的LBP特征。
最终,将所有区域的LBP特征组合成一个向量,并返回该向量。
相关问题
TypeError: ImageClassifier: RASFF: get_lbp() missing 1 required positional argument: 'img'
这个错误提示表明在调用 ImageClassifier 类的 get_lbp() 方法时,漏掉了一个必需的参数 img。可能是因为该方法需要一个名为 img 的参数,但是在调用时没有传递该参数或者传递的参数数量不正确。以下是一些可能的解决方法:
1.检查代码中调用 get_lbp() 方法的地方,确保传递了正确数量的参数,并且 img 参数已经正确传递。
2.检查 ImageClassifier 类的定义,确保 get_lbp() 方法的参数列表中包含 img 参数,并且该参数没有被定义为可选参数或默认参数。
3.如果 img 参数是必需的,但是在某些情况下可能不可用,可以考虑在方法内部添加一些逻辑来处理这种情况,例如抛出一个异常或者返回一个默认值。
AttributeError: module 'cv2' has no attribute 'LBP_create'
这个错误通常意味着你正在尝试使用OpenCV的LBP特征提取方法,但是你的OpenCV版本可能太老了,不支持该方法。请尝试升级你的OpenCV版本或使用其他的特征提取方法。你可以尝试使用以下代码来检查你的OpenCV版本:
```python
import cv2
print(cv2.__version__)
```
如果你的版本低于3.3,那么你需要升级OpenCV。你可以使用以下命令来更新OpenCV:
```python
pip install --upgrade opencv-python
```
如果你还是遇到问题,请提供更多的详细信息,让我能够更好地帮助你。