如何从低质量的图像中检测出小的弹孔-OpenCV Python

时间:2019-04-11 13:56:25

标签: python opencv image-processing

对于项目的概述,我正在为真实的项目符号模拟器创建一个项目。一个人正在用真枪射击屏幕(用于投影仪的白色塑料片),屏幕后面有一个摄像头 从屏幕图像中检测出每个新的弹孔。 为此,我尝试了很多方法,除非我能准确检测出子弹,否则我将不胜感激。

这是我尝试过的主要代码。

以下是相机在屏幕后面捕获的原始图像 sample_plate.png

这是另一个可操作的图像,用于指定我期望的结果。 Click here

我想检测这些原始的弹孔并在其上画一个圆 这就是我尝试使用开放cv2.threshold方法

import cv2
import numpy as np 

## getting bullet shots images
image = cv2.imread("sample_plate.png")

## applying threshold
retval, threshold_image = cv2.threshold(image, 10, 255, cv2.THRESH_BINARY)
cv2.imwrite("thres_binary_result.png",threshold_image)

retval, threshold_image = cv2.threshold(image, 10, 255, cv2.THRESH_TRUNC)
cv2.imwrite("thres_trunc_result.png",threshold_image)

retval, threshold_image = cv2.threshold(image, 10, 255, cv2.THRESH_TOZERO)
cv2.imwrite("thres_tozero_result.png",threshold_image)

这是我得到的结果图像。

cv2.THRESH_BINARY: thres_binary_result.png

cv2.THRESH_TRUNC: thres_trunc_result

cv2.THRESH_TOZERO: thres_tozero_result.png

请提出任何新方法,并尝试使用我的图片, 我已经尝试了许多答案,但他们无济于事,因为在屏幕上(放映机的白色塑料板)上有视频正在播放,我必须检测出真正的子弹孔,因此没有机会从以前检测出之后,因为无论是否有新镜头,每一帧都会有所不同。 预先谢谢你。

0 个答案:

没有答案