簡體   English   中英

如何將C ++運算符轉換為Java

[英]How to convert c++ operator to Java

我正在嘗試使用OpenCV庫( Java版本)。 我找到了一些用C++編寫的代碼,並試圖將其重寫為Java 但是,我無法理解一種構造。

這是C++代碼:

void scaleDownImage(cv::Mat &originalImg,cv::Mat &scaledDownImage )
{      
    for(int x=0;x<16;x++)
    {  
        for(int y=0;y<16 ;y++)
        {
            int yd =ceil((float)(y*originalImg.cols/16));
            int xd = ceil((float)(x*originalImg.rows/16));
            scaledDownImage.at<uchar>(x,y) = originalImg.at<uchar>(xd,yd);

        }
    }
}

我不明白如何翻譯這一行:

scaledDownImage.at<uchar>(x,y) = originalImg.at<uchar>(xd,yd);

在這里查看Mat訪問器函數: http : //docs.opencv.org/java/org/opencv/core/Mat.html#get(int,%20int)

因此,請翻譯您的示例:

scaledDownImage.at<uchar>(r,c) = originalImg.at<uchar>(rd,cd); // c++

將會 :

byte [] pixel = new byte[1]; // byte[3] for rgb
originalImg.get( rd, cd, pixel );
scaledDownImage.put( r,c, pixel );

請注意,它是(row,col),而不是(x,y)!

uchar =無符號字符。

這個說法:

scaledDownImage.at<uchar>(x,y)

返回在位置(x,y)的無符號字符(我猜想,指針)。

因此,在Java中它將類似於:

unsigned char scaledDownImageChar = scaledDownImage.charAt(x, y);
scaledDownImageChar = originalImg.charAt(x, y);

這不是真實的代碼,僅是示例。

它稱為模板,搜索Java的泛型。

基本上,“ at”方法的代碼使用某種類型T
(不知道它是否稱為T或其他名稱)
可以是int,float,char,任何類...
只是目前還沒有指定的東西

在這種情況下,您以T為uchar調用方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM