要求,使用 python3.10以上
使用 opencv / 其他图片识别库 (不能用 yolo之类的 因为我懒得准备训练数据,而且效果不一定能保证,且占用还高)
目前效果,有六张图,其中图4 和 图 6 无法被匹配
使用的是简单的灰度匹配,相似度要达到 5或以上 二极化也试过了
def save_img(index: int):
for item in methods:
me = eval(item)
img_rgb = cv.imread(imgs[index])
img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
template = cv.imread(target_img, 0)
w, h = template.shape[::-1]
res = cv.matchTemplate(img_gray, template, cv.TM_CCOEFF_NORMED)
threshold = 0.45
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]):
cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
cv.imwrite(f"res${index}.png", img_rgb)
有意者可以联系我 ,先提供部分思路,然后我感觉可行了,发你图片你做demo
招聘类型:
外包零活
职业:
开发
工作方式:
线上兼职
我觉得这种需求你可以开一个讨论帖,把图片、具体要求也一并发出来,大家应该会免费提供思路的,然后你再去实现它。
如果opencv不太好的话,我这边一些方法不知道妥否:
小缺陷是:如果图片很多的话,CLIP这块提取特征需要一些计算资源。
我最终的目的肯定是用来实时匹配的,不是做静态的处理大量数据的情况
至于放出来图吧emm 我晚上回去了吧 在公司不方便上传
可以考虑使用自适应阈值来进行二值化。OpenCV 中提供了
cv.adaptiveThreshold
函数。使用其他颜色空间转换,例如HSV(色相、饱和度、亮度)或者LAB(色彩亮度),看看是否能够更好地区分目标物体与背景。尝试不同类型的滤波器,如高斯滤波、中值滤波等。考虑使用直方图均衡化。使用SIFT、SURF、ORB等算法,对光照和背景变化更具鲁棒性。楼主可以发图给我试试吗
可以试试
模板我已经扣成了带有透明通道的png,只不过似乎图片格式有点问题,拿来识图可以,但是导入到 ps后再导出背景就是黑色的了,且会模糊,因为当时我拿 在线PS做的
有尝试过 二极化,滤波器,效果都不理想,可能是我使用的有问题?
大概无法识别的原因是,一个背景是深色,一个背景是亮色