本帖最后由 syncml 于 2017-1-11 14:58 编辑
楼主,我想做车牌区域识别,并将车牌位置马赛克这样一个功能
目前,使用easypr能得到车牌位置的RotatedRect,然后想对这个RotatedRect区域的图像马赛克,我使用的javacpp里面的opencv包,例子太少,能指点一下吗
自己一下资料,搞定马赛克了
如下:
public static void mosaic(Mat mat,Rect area){
int neightbourHood = 8; //马赛克上每个方框的像素大小
Point ptL = area.tl();
Point ptR = area.br();
int width = mat.cols();
int height = mat.rows();
if(ptL.x()<0) ptL.x(0);if(ptL.y()<0) ptL.y(0);
if(ptR.x()<0) ptR.x(0);if(ptR.y()<0) ptR.y(0);
Point pt = ptR;
//ptR.x() < ptL.x() ? ptR = ptL, ptL = pt : ptR = ptR;
if(ptR.x() < ptL.x()){
ptR = ptL;
ptL = pt;
}
for (int i = 0; i < ptR.y() - ptL.y(); i += neightbourHood)
{
for (int j = 0; j < ptR.x() - ptL.x(); j += neightbourHood)
{
Rect rect = new Rect(j + ptL.x(), i + ptL.y(), neightbourHood, neightbourHood);
if(j + ptL.x() + neightbourHood>width || i + ptL.y() + neightbourHood>height) continue;
Mat roi = new Mat();
roi = mat.apply(rect);
Scalar sca = mean(roi);
Mat roiCopy = new Mat(rect.size(), CV_8UC3, sca);
roiCopy.copyTo(roi);
}
}
}
|