OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
楼主: 流放荒帝

Java+Opencv 入门汇总

[复制链接]
发表于 2016-12-16 10:44:12 | 显示全部楼层
流放荒帝 发表于 2016-3-24 14:39
private Mat doBackgroundRemoval(Mat frame)
     {
             // init

java对透明底的支持在哪?,我需要去除背景后得到剩余图像,或者是打在透明底板上的,
c++的有
void createAlphaMat(Mat &mat)
{
    for (int i = 0; i < mat.rows; ++i) {
        for (int j = 0; j < mat.cols; ++j) {
            Vec4b& rgba = mat.at<Vec4b>(i, j);
            rgba[0] = UCHAR_MAX;
            rgba[1] = saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX);
            rgba[2] = saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX);
            rgba[3] = saturate_cast<uchar>(0.5 * (rgba[1] + rgba[2]));
        }
    }
}

int main(int argv, char **argc)
{
    // Create mat with alpha channel
    Mat mat(480, 640, CV_8UC4);
    createAlphaMat(mat);

    vector<int> compression_params;
    compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
    compression_params.push_back(9);

    try {
        imwrite("alpha.png", mat, compression_params);
    }
    catch (runtime_error& ex) {
        fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what());
        return 1;
    }

    fprintf(stdout, "Saved PNG file with alpha data.\n");
    return 0;
}
java还需要用JNI连吗?
求助!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-20 13:15:38 | 显示全部楼层
Zdzzdz 发表于 2016-12-16 10:44
java对透明底的支持在哪?,我需要去除背景后得到剩余图像,或者是打在透明底板上的,
c++的有
void crea ...

不需要,就像C++中一样在java中使用opencv。
回复 支持 反对

使用道具 举报

发表于 2016-12-29 17:21:42 | 显示全部楼层
本帖最后由 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);
             }
         }
     }
回复 支持 反对

使用道具 举报

发表于 2016-12-30 21:44:20 | 显示全部楼层
流放荒帝 发表于 2016-3-24 14:48
/**
         * Apply Canny
         *

我把这段代码放到eclipse中,显示报错,报错位置是
this.threshold.getValue();不清楚为啥这里要用this;就是this显示错误
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-3 10:41:51 | 显示全部楼层
shutu008 发表于 2016-12-30 21:44
我把这段代码放到eclipse中,显示报错,报错位置是
this.threshold.getValue();不清楚为啥这里要用this ...

Imgproc.Canny(detectedEdges, detectedEdges, vslue, vslue* 3);

value 是阈值
回复 支持 反对

使用道具 举报

发表于 2017-1-11 11:17:51 | 显示全部楼层
大神。OpenCV怎么做图片的缩小?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-11 17:42:00 | 显示全部楼层
y84858226 发表于 2017-1-11 11:17
大神。OpenCV怎么做图片的缩小?

resize()
回复 支持 反对

使用道具 举报

发表于 2017-1-24 21:37:12 | 显示全部楼层
有没有完整的范例分享一下呢?私信我,谢谢。
回复 支持 反对

使用道具 举报

发表于 2017-3-11 12:19:05 | 显示全部楼层
请问楼主如何使用java+opencv进行人脸训练
回复 支持 反对

使用道具 举报

发表于 2017-3-13 14:16:27 | 显示全部楼层
有opencv版本对应的Javacv版本么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-4 06:38 , Processed in 0.009423 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表