Python-OpenCV图像处理基础——木材鬃眼识别(数量检测与面积计算)

本文介绍了如何在Windows环境下安装Python3.11和PyCharm社区版,以及如何使用清华镜像安装图像处理所需第三方库,如OpenCV、Scipy等。重点讲解了基础的图像二值化、腐蚀膨胀操作和轮廓分析,适合初学者熟悉PyCharm和Python图像处理的基本流程。
摘要由CSDN通过智能技术生成

1、环境安装

1、官网下载并安装Python(我的是3.11。不用太新版本,往前几个版本就可,太新可能有些不兼容的问题。)

2、下载并安装pycharm——社区版(免费的),当然有能力搞到专业版那更好,没能力建议别去试,太浪费时间。

3、要进行图像处理,还需要安装一些第三方库。

这里提供清华的镜像网址:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xxx
             xxx为要下载的三方库名字。

具体操作如下:

(1):桌面搜索,输入cmd,进入之后:
         

(2): 直接复制粘贴下面这些到后面就行:

            pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Scipy
            pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
            pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn
            pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python
            pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Numpy
            pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sklearn
            pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-image

            按下回车,等待安装好。
            看见successfully installed xxx 即可

(3):新建好项目进入pycharm之后。

点击设置:

          

点击你创建的项目Project,再点进右侧的“Python Interpreter”一项:

点击框右的“Add Interpreter”

进入“Add Local Interpreter”

进入“Virtualenv Environment ”界面后,点击Existing,在框右的省略号点击后进入如下界面:

开始选择你安装Python的路径,找到python.exe。

之后一路OK即可,等待它自己加载好。

2、开始编程

待处理的图片最好复制到项目里,更方便些。

直接复制图片,然后右键你的项目粘贴“Paste”

后面再点击你粘贴过来的图片,右键点击"Copy path/Reference..."复制路径即可。

直接贴代码:

import cv2
import numpy as np
from skimage import morphology
from skimage import measure

wood=cv2.imread("venv/Wood.png")
wood_gauss=cv2.GaussianBlur(wood,(5,5),0)#高斯滤波
wood_gray=cv2.cvtColor(wood_gauss,cv2.COLOR_BGR2GRAY)#灰度图
thre,wood_bw=cv2.threshold(wood_gray,95,255,cv2.THRESH_BINARY_INV)#二值化
#修改thresh那里的值,在二值化的时候就可以初步调试出不错的效果

#腐蚀
k=np.ones((4,4),np.uint8)#括号里的数列越小,腐蚀越精细,反之越粗糙
dst=cv2.erode(wood_bw,k)
#膨胀。闭运算,数列越大膨胀越粗糙(越大)反之越小
k2=np.ones((28,28),np.uint8)
dst2=cv2.dilate(dst,k2)
dst2=cv2.erode(dst2,k2)
#二次腐蚀。开运算,不断调整数列数值,直到图像完美输出
k3=np.ones((8,8),np.uint8)
dst3 = cv2.erode(dst2,k3)
dst3=cv2.dilate(dst3,k3)

#划区域,计算数量
#下面一句,最开头不必加image这一参数,否则会报错。wood_count和hir两个参数就行了。
wood_count,hir=cv2.findContours(dst3,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)#检测所有轮廓,所有轮廓建立一个等级树结构。
print(len(wood_count))
wood_read=cv2.imread('venv/Wood.png')#在原图上把框画出来
result = cv2.drawContours(wood_read, wood_count, -1 ,(0, 255, 0), 1)

#计算面积
merge_threshold = 3
area_threshold = 50
connected_image = morphology.closing(dst3, morphology.disk(merge_threshold))
labeled_image = measure.label(connected_image, connectivity=2)
region_props = measure.regionprops(labeled_image)
area = {}
circle_label = ord('A')
for region in region_props:
    area_value = region.area
    if area_value >= area_threshold:
        if circle_label <= ord('Z'):
            area[chr(circle_label)] = area_value
            circle_label += 1
print(area)

cv2.imshow('circle',result)
cv2.waitKey(0)#紧跟在imshow后面

运行结果:

很基础的一次作业,能够让人熟悉一下pycharm的一些操作,找找Python的一些感觉。

主要还是对图片的二值处理那一块需要多调调数值来让图像更“好看一些”,其他的计算面积和数量都很简单。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值