视美泰
直播中

筑梦者与梦同行

9年用户 201经验值
擅长:嵌入式技术
私信 关注

【GM-3568JHF开发板免费体验】OpenCV开发环境安装和计数程序开发

一、远程访问

  1. 网络连接

使用网线或者wifi连接与PC电脑连接到一个网络。

  1. 获取板子IP地址

整成在板子终端使用命令行ifconfig查看网络地址,但此板子默认是debian系统需要使用ip a命令查看ip

  1. SSH链接

远程登录账号和密码是linaro
图片1.png

二、安装Pip管理工具

Sudo apt-get install python3-pip
图片2.png

三、安装cv2环境

cv2支持图像处理(如滤波、边缘检测、色彩转换)、视频分析(如运动检测、目标跟踪)、特征提取(如 SIFT 、 ORB 算法)、机器学习(如 SVM 、 决策树 )等。其跨平台特性使其能在 Linux 、 Windows 、 Android 等系统上运行,并通过Python接口简化操作。

sudo apt install libopencv-dev python3-opencv
图片3.png

四、OpenCV图像识别测试

使用python3 count3.py

运行事先准备好的图像识别程序,运行结果如图所示
图片4.png

五、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图像识别是否准确跟图像的色差有绝对的关系,所以程序中 要先将彩色图像转成灰度图像,是图像中的物品更为明显,从而根据色差识别轮廓区域,有几个轮廓区域就代表有几个物品或动物。
图片5.png

图片6.png

图片7.png

更多回帖

发帖
×
20
完善资料,
赚取积分