gpt4 book ai didi

Android 应用程序在调用 OpenCV accumulateWeighted 函数时崩溃

转载 作者:搜寻专家 更新时间:2023-11-01 08:43:48 28 4
gpt4 key购买 nike

我有以下代码(尝试端口 this )

    VideoCapture sequence = new VideoCapture(fp + "%02d" + ".jpg");
if (!sequence.isOpened())
dbg("Failed to open images!");
}

Mat outImg = null;
Mat curImg = null;
while (sequence.read(curImg)) {
Imgproc.accumulateWeighted(curImg, outImg, 0.01);

}

imwrite(fp + "median" + "-" + curTime + ".jpg", outImg);

当它到达这一点时,所有图像都在 fp/01.jpg、02.jpg 等中。当它到达 sequence.read(curImg) 行时崩溃,所以我不确定是什么问题,因为它已经检查以确保序列已正确打开。

编辑:更具体地说,我从 Android 调试器得到的错误是

CvException [org.opencv.core.CvException: cv::Exception: /builds/master_pack-android/opencv/modules/imgproc/src/accum.cpp:1108: error: (-215) _src.sameSize(_dst) && dcn == scn in function void cv::accumulateWeighted(cv::InputArray, cv::InputOutputArray, double, cv::InputArray)]

关于 accumulateWeighted 方法调用。

最佳答案

熬夜终于找到了可行的解决方案。首先,我的输入图像类型是 CV_8UC1 和 CV_8UC4。所以我需要根据这些规则对我的图像进行颜色转换:

if mat == grayscale == CV_8UC1 then convert to CV_32F
if mat == color == CV_8UC4 then convert to CV_32FC4

示例实现:

private Mat accuImg;
public Mat accumulateImageBG(Mat img, int type){
if (accuImg==null){//code snipit from berak's answer
accuImg = Mat.zeros(img.size(), type);
}
img.convertTo(img, type);
Imgproc.accumulateWeighted(img, accuImg, 0.1);
Core.convertScaleAbs(accuImg, img);
return img;
}
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {//new frame from camera
Mat col = inputFrame.rgba();//in:CV_8UC4 out:CV_32FC4
Mat gray = inputFrame.gray();//in:CV_8UC1 out:CV_32F

//be sure to specify conversion type with matching # of channels as input image!
Mat img = accumulateImageBG(gray,CvType.CV_32F);
return img;
}

关于Android 应用程序在调用 OpenCV accumulateWeighted 函数时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30346329/

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