一、远程访问
使用网线或者wifi连接与PC电脑连接到一个网络。
整成在板子终端使用命令行ifconfig查看网络地址,但此板子默认是debian系统需要使用ip a命令查看ip
远程登录账号和密码是linaro
二、安装Pip管理工具
Sudo apt-get install python3-pip
三、安装cv2环境
cv2支持图像处理(如滤波、边缘检测、色彩转换)、视频分析(如运动检测、目标跟踪)、特征提取(如 SIFT 、 ORB 算法)、机器学习(如 SVM 、 决策树 )等。其跨平台特性使其能在 Linux 、 Windows 、 Android 等系统上运行,并通过Python接口简化操作。
sudo apt install libopencv-dev python3-opencv
四、OpenCV图像识别测试
使用python3 count3.py
运行事先准备好的图像识别程序,运行结果如图所示
五、OpenCV图像识别计数
5.1、代码程序
# -*- coding: utf-8 -*-
#===================导入库==================
import cv2
#===================读取原始图像==================
img=cv2.imread('img.png',1)
#====================图像预处理===========================
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #色彩空间转换:彩色-->灰度图片
ret, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV) # 阈值处理二值反色
kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(1,1))#核
erosion=cv2.erode(binary,kernel,iterations=1) #腐蚀操作
dilation=cv2.dilate(erosion,kernel,iterations=1) #膨胀操作
gaussian = cv2.GaussianBlur(dilation,(1,3),0)# 高斯滤波
#================查找所有轮廓=======================
contours,hirearchy=cv2.findContours(gaussian, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 找出轮廓
#==============筛选出符合要求的轮廓=============
contoursOK=[] #放置符合要求的轮廓
for i in contours:
if cv2.contourArea(i)>30: # 筛选出面积大于30的轮廓
contoursOK.append(i)
#==============绘制出符合要求的轮廓=============
draw=cv2.drawContours(img,contoursOK,-1,(0,255,0),1) #绘制轮廓
#===========计算每一个细胞中心,并绘制数字序号===============
for i,j in zip(contoursOK,range(len(contoursOK))):
M = cv2.moments(i)
cX=int(M["m10"]/M["m00"])
cY=int(M["m01"]/M["m00"])
cv2.putText(draw, str(j), (cX, cY), cv2.FONT_HERSHEY_PLAIN,1.5, (0, 0, 255), 2) #在中心坐标点上描绘数字
#=============显示图片==================
cv2.imshow("gaussian",gaussian)
cv2.imshow("draw",draw)
#============释放窗口====================
cv2.waitKey()
cv2.destroyAllWindows()
5.2、图像识别
经过多种场景的验证,大家能看出来OpenCV图像识别是否准确跟图像的色差有绝对的关系,所以程序中 要先将彩色图像转成灰度图像,是图像中的物品更为明显,从而根据色差识别轮廓区域,有几个轮廓区域就代表有几个物品或动物。


更多回帖