需求
在物联网和智能家居的制作方面,物体的识别是一个很重要的方面。我们都知道,物联网主要分为感知识别、网络传输、综合运用等方面。而感知识别最重要的就是识别出是什么物体。我们平时主要是根据各种电子标签提前标识出物体的序号,从而让中央处理单元以前知道是什么物体。而我们在生活中,还常常利用图像识别技术进行识别,感测出是什么物体。
技术
本文中制作的图像识别软件是由python和pyqt5制作而成,使用LBP+SVM技术,训练识别给定的测试图像,从而进行物体识别。
一般SVM有下面三种:
实现
训练文件
在项目中建立training文件夹,在其中存放你想要训练的图像,其中的小文件夹就是你训练生成的图像名称,可自行更改。
识别图像
建立testing文件夹,在其中存放你想要识别的图像。
LocalBinrayPatterns
class LocalBinrayPatterns:
def __init__(self,numPoints,radius):
self.numPoints = numPoints
self.radius = radius
def describle(self,image,esp=1e-7):
lbp = feature.local_binary_pattern(image,self.numPoints,self.radius,method="uniform")
(hist,_) = np.histogram(lbp.ravel(),bins=np.arange(0,self.numPoints + 3),range=(0,self.numPoints + 2))
hist = hist.astype("float")
hist /= (hist.sum() + esp)
return hist
ap = argparse.ArgumentParser()
ap.add_argument("-t","--training",default="./training",help="path to the training images")
ap.add_argument("-e","--testing",default="./testing",help="path to the testing images")
args = vars(ap.parse_args())
desc = LocalBinrayPatterns(24,8)
data = []
labels = []
for imagePath in paths.list_images(args["training"]):
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
hist = desc.describle(gray)
labels.append(imagePath.split(os.path.sep)[-2])
data.append(hist)
model = LinearSVC(C=100.0,random_state=42)
model.fit(data, labels)
for imagePath in paths.list_images(args["testing"]):
可以很明显的看出,提前存放的文件夹的图像训练成了相关文件夹名字的素材,而当检测到相关图片时,显示相关的名称。
如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。 或者关注公众号。
编写不易,感谢支持。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。