我正在尝试从具有一个硬币或一个钞票的图像中删除背景 .
我试试这段代码:
BackgroundSubtractorMOG BGS = new BackgroundSubtractorMOG(); BGS.apply(src, dest,0.1);
结果是一个黑色的图像 .
我如何使用opencv在java中做到这一点?
图像将从相机捕获,因此它可能有背景,我想删除背景,图像可能是这样的:
这是分割账单的简单程序 . 基本上,由于背景是均匀的,您只需计算边的边界框 .
此代码在C中,但应该很容易移植到Java . 请注意,您的jpeg图像有许多压缩工件 . 如果你有一个非压缩图像(png),结果会更好 .
#include <opencv2\opencv.hpp> using namespace cv; using namespace std; int main() { Mat3b img = imread("path_to_image"); Mat1b gray; cvtColor(img, gray, COLOR_BGR2GRAY); Mat1b edges; Canny(gray, edges, 400, 100); vector<Point> points; findNonZero(edges, points); Rect box = boundingRect(points); Mat3b bill(img(box)); return 0; }
bill 图片:
bill
1 回答
这是分割账单的简单程序 . 基本上,由于背景是均匀的,您只需计算边的边界框 .
此代码在C中,但应该很容易移植到Java . 请注意,您的jpeg图像有许多压缩工件 . 如果你有一个非压缩图像(png),结果会更好 .
bill
图片: