Python+OpenCV边学边做-机器视觉检测之贝类含砂量X射线影像

本项目介绍了一种基于X射线的蛤类水产品含砂量自动检测方法,利用Python和OpenCV库进行图像处理,包括干扰性文字移除和沙子特征点标记。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目说明

此项目在GitHub上开源,点击跳转至GitHub。如转载,请标明转载并写入原文链接。

项目中关于python+opencv的知识点主要参考opencv的官网

作者还拥有个人公众号,会写一些感悟文章,知圈,二维码如下,欢迎扫描关注:
知圈二维码

背景

本设计基于X射线对蛤类水产品进行含砂量自动检测。基于python和opencv库。

建立工程

如下,新建项目。
在这里插入图片描述
为方便版本控制,建立GitHub。PyCharm嵌入了GitHub的模块,可以直接在内部使用。如下图。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打开该文件所在的文件夹,放入一张图片:
在这里插入图片描述
写入以下测试代码,图片名字为刚才放入的图片。

import numpy as np
import cv2

img = cv2.imread('WeChat Image_20200221164050.jpg', 0)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在此默认opencv已经装好。如果没有安装,上述代码是无法运行的。请先安装。
写的时候发现提示说Interpreter缺失。大概是因为我后来换过一次硬盘,打开提示,找到interpreter并手动添加Python
在这里插入图片描述
运行后弹出来刚才添加的图片,由于是测试的,弹出来是原像素,巨大,仅仅用来验证前期安装成功。
在这里插入图片描述
测试通过后将最适合用来研究的素材图片放到文件夹里备用。

图像太过不顺眼,添加窗口调用的命令,使图像与窗口自适应以全部显示,添加后代码如下:

import numpy as np
import cv2

img = cv2.imread('WeChat Image_20200221164050.jpg', 0)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行后图像如下:
在这里插入图片描述

图像处理

干扰性文字移除

移除原理:通过threshold函数将高亮的文字识别并将其它区域涂成全黑作为mask,然后将mask通过inpaint函数标识消除文字信息。

ret, mask = cv2.threshold(img, 210, 255, cv2.THRESH_BINARY)
cv2.namedWindow('mask of characters', cv2.WINDOW_NORMAL)
cv2.imshow('mask of characters', mask)

dst = cv2.inpaint(img, mask, 3, cv2.INPAINT_NS)
cv2.namedWindow('Characters removed', cv2.WINDOW_NORMAL)
cv2.imshow('Characters removed', dst)

处理生成的mask图像如下:
在这里插入图片描述
inpaint后图像如下:
在这里插入图片描述
添加了cv2.xfeatures2d.SIFT_create()函数来标记沙子,结果弹出了如下错误提示:

    sift = cv2.xfeatures2d.SIFT_create()
AttributeError: module 'cv2' has no attribute 'xfeatures2d'

发现是安装的问题,要安装contrib版本的opencv,关掉Pycharm,打开Anaconda用如下命令安装:

pip install opencv-contrib-python

由于网不稳定,挂载VPN后多次下载失败后终于安装成功。如果由于网络原因始终下载失败,将后面的whl文件名复制去网上下载,下载后本地命令安装。
在这里插入图片描述
安装后重新运行,提示:

    sift = cv2.xfeatures2d.SIFT_create()
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1210: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'cv::xfeatures2d::SIFT::create'

再次发现问题,由于sift不再免费,装上的最新版4.2.0无法使用其库,要重新编译或降级,在此为了快速方便使用,选择降级,再次将contrib降级为3.4.2.17版本。使用如下命令:

pip install opencv-contrib-python==3.4.2.17

几次网络原因中断后终于安装成功:
在这里插入图片描述
使用的sift测试代码如下:

sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(dst,None)
img=cv2.drawKeypoints(dst,kp,img)
cv2.imwrite('sift_keypoints.jpg',img)
cv2.imshow('image', img)
cv2.waitKey(0)

测试结果:
在这里插入图片描述

Todo(sift识别沙子)
项目进行中,未完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值