GrabCut python实现
Grabcut
- 仓库地址
- 用到的库
- 代码略述
- 代码使用说明:
- 调试过程
- 复现体悟
- 推荐博客
仓库地址
https://github.com/Leevan001/Grab_cut
click here!
用到的库
import numpy as np
import cv2
import maxflow
代码略述
一共写了两个版本的迭代
Gbv1是只迭代一轮的代码
Gbv2的迭代是每次都用kmeans重新聚类
Gbv2的迭代是严格按照原论文的迭代,运行速度较慢
Gbv3是打算加快运行速度的,但并没有实现,目前运行速度可提升的方向是constructGCGraph函数
及构建图速度较慢,可以考虑numpy的向量化或多线程,但多线程效果好像并不理想(一次迭代需要6~10s,一半迭代1次效果就比较理想了)
代码使用说明:
运行代码首先人为给定框,按下enter或space键确认
运行效果图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-onz8kJYg-1681897512599)(https://fastly.jsdelivr.net/gh/Leevan001/pictureBed@main/utools/1681877296937feb07b7032b61814a0b9e53e68756ac.png)]
调试过程
首先是无符号整型数溢出不会报错
calcBeta,在这个函数中遇到了越界的情况,要将uint8转成astype(np.float32)
其次,因为参数gamma 设置地不好,源码中设置为50,我10~50地测试效果都不理想,心态破防,后来设为2,code奇迹般的work了。
换了几个最大流的库,发现pymaxflow最快
聚类直接用opencv的接口最快
能用numpy向量操作的尽量用numpy向量操作,for循环运行速度慢
复现体悟
第一次将数学知识运用起来,觉得还是挺神奇的。经典算法。
kmeans+GMM+最小割
概率论+图论
其实也可以不用kmeans,但kmeans算法比em快很多,权衡之下用的kmeans。
以后不用pycharm全面投入vsc了。vsc真的界面很清爽。
从论文理解到复现一共花了三天,本来要用c++的,但配环境花了很久最后虽然配好了,但兴趣索然全失,毕竟opencv就是C++写的,再把code重敲一遍意义不大。
但C++还是挺重要的,它运行速度很快,有空再重拾一下C++,尽管用C++刷力扣,但用C++做项目的经历还是很少,第一次下载Clion这个ide,第一次用msys2配环境,第一次了解Cmake。怀疑以前学了个假C++课。
做这个的时候面临两个期中考试,一次非限课ppt汇报,扁桃体发炎+咳嗽+角膜炎,xs人有时很脆弱有时又很强大。
不管结果如何,就当一次切磋吧,我也是有收获的。人生也只是一场没有终点的修行罢了。
最后感谢chatgpt的帮助!
推荐博客
opencv源码
csdn
GrabCut python实现相关推荐
- Python OpenCV GrabCut进行前景分割和提取
Python OpenCV GrabCut进行前景分割和提取 1. 效果图 1.1 边界框GrabCut效果图 1.2 Mask GrabCut效果图 2. GrabCut原理 2.1 GrabCut ...
- python 黑白tif提取边界像素坐标_OpenCV GrabCut算法:前景分割和提取
点击上方"蓝色小字"关注我呀 文章翻译自光头哥哥的博客,原文链接: https://www.pyimagesearch.com/2020/07/27/opencv-grabcut- ...
- Python+OpenCV:交互式图像前景提取(Interactive Foreground Extraction using GrabCut Algorithm)
Python+OpenCV:交互式图像前景提取(Interactive Foreground Extraction using GrabCut Algorithm) ################# ...
- Python:实现GrabCut算法(附完整源码)
Python:实现GrabCut算法 img = cv2.imread('data.jpg')img = cv2.resize(img, (224, 224), interpolation=cv2.I ...
- OpenCV python GrabCut算法提取前景背景图片
OpenCV python GrabCut算法提取前景背景图片 处理图片:[lena_color.jpg] 手动mask[mask.jpg] import numpy as np import cv2 ...
- python实现grabcut算法进行物体分割
GrabCut算法进行物体分割 GrabCut算法原理 python实现GrabCut算法 GrabCut算法原理 (1)在图片中定义含有(一个或多个)物体的矩形. (2)矩形外外的区域被自动认为是背 ...
- Python OpenCV学习笔记之:使用Grabcut算法进行图像背景和前景分割
为什么80%的码农都做不了架构师?>>> # -*- coding: utf-8 -*- """ 图像分割 """i ...
- 用GrabCut进行前景检测(对书中代码进行改进)Python
GrabCut 该算法,在opencv中很容易就可以使用. 通过对于一开始取定的矩阵来做来模拟. (这个我们可以通过调整这个点的以及对应的矩阵大小来调整效果) 下面就是算法提取出来的图像,以及原图 下 ...
- python opencv 利用 GrabCut 算法(opencv已经实现)从图像中分离出前景
# 利用GrabCut算法从图像中分离出前景 import numpy as np import cv2 as cv from matplotlib import pyplot as pltimg = ...
最新文章
- 图像配准----SIFT
- Linux常用软件和安装方法,Linux软件安装与卸载常用方法(转)
- 设置跳转到新的actvity之后不可返回
- 如何在Linux中使用sFTP上传或下载文件与文件夹
- 利用PHP的VLD查询OPCODE
- 软件项目管理复习题库(学生自制非官方)
- Unity 导航网格生成碰撞体
- 【f1c200s/f1c100s】不带中断引脚采用扫描的方式实现通用gpio-keys
- 美团外卖数据采集接口
- 一张对数字图像处理贡献最大的花花公子人体照
- python编程猫下载_编程猫下载_编程猫安卓版下载_编程猫 2.0.2手机版免费下载- AppChina应用汇...
- 月之暗面(树形dp)
- web前端的网页优化
- 整数与浮点数比较-汇编码分析
- Xshell入门必看
- C语言数组的初始化总结
- 微信公众号客服功能如何开通?
- 每日新闻 丨新突破:AI能提前十年预测心脏病,准确率高达90%
- CMMI视频推荐(2)CMMI的五个级别
- 计算机专业专科毕业设计题目,计算机专业毕业设计题目