gpt4 book ai didi

java - 安卓、OpenCv : crop fails when crop occurs within function

转载 作者:行者123 更新时间:2023-12-02 11:46:34 28 4
gpt4 key购买 nike

我有一个类,它接收用相机拍摄的帧。然后,它将帧传递给相机计算器,后者根据相机计算器的宽高比设置进行一些处理和裁剪。

当我有...

@Override
public void receivePicture(Mat frame) {
mCameraCalculator.processFrameForResult(frame);
//the image is then saved
}

//in camera calculator...
public void processFrameForResult(Mat frame){
processFrame(frame);
frame = frame.submat(getCenterByAspectRatio(frame)); //crop
}

裁剪失败(保存的图像未裁剪)。然而,当我...

@Override
public void receivePicture(Mat frame) {
mCameraCalculator.processFrameForResult(frame);
frame = frame.submat(mCameraCalculator.getCenterByAspectRatio(frame)); //crop
//the image is then saved
}

//in camera calculator...
public void processFrameForResult(Mat frame){
processFrame(frame);
}

它工作得很好。这根本不符合逻辑。这两段代码不等价吗?

最佳答案

从外观上看,receivePictureprocessFrameForResult 属于两个不同的类。在顶部代码块中,您正在 CameraCalculator 类中进行裁剪。问题在于分配Frame 时的processFrameForResult 方法。这行代码实际上并没有将裁剪后的 Frame 分配回 Frame 变量,因为一旦该方法返回,输入的 Mat Frame 变量就不再是范围更长。有关原因的更多详细信息,please see this post详细介绍了按引用传递和按值传递之间的差异。

如果您希望顶部代码块正常工作,则顶部代码块中的 processFrameForResult 方法必须返回 Mat Frame 对象而不是 void。

关于java - 安卓、OpenCv : crop fails when crop occurs within function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48159195/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com