gpt4 book ai didi

java - 找到最亮的轮廓opencv java

转载 作者:行者123 更新时间:2023-12-01 10:14:33 25 4
gpt4 key购买 nike

我正在尝试用相机捕捉最亮的区域。

我使用 opencv 和 android studio (JAVA)。到目前为止,opencv 上有关 java 的资源和文档有限。

我是一名新手程序员,所以任何建议都会有所帮助。

尝试调试我的代码,但似乎无法超越这样的代码

Core.MinMaxLocResult max = minMaxLoc(wrapper);

有谁知道如何在JAVA中正确使用MinMaxLocResult函数吗?

还有没有更有效的方法来找到帧中最亮的区域?

我的代码`公共(public) Mat onCameraFrame(CvCameraViewFrame inputFrame) {

    Log.e(TAG, "on camera frame ");
Mat mHierarchy = new Mat();
mGrey = inputFrame.gray();
mRgba = inputFrame.rgba();
//find contour

Imgproc.findContours(mGrey,Mcontours,mHierarchy,Imgproc.RETR_EXTERNAL,Imgproc.CHAIN_APPROX_NONE);

    double maxMax=0;
int num=0;

for(int x = 0; x < Mcontours.size();x++){
Mat wrapper = Mcontours.get(x);

Core.MinMaxLocResult max = minMaxLoc(wrapper); **//error line**

if(max.maxVal > maxMax){
maxMax = max.maxVal;
num = x;
}
if(x == Mcontours.size()){
Imgproc.circle(mGrey,max.maxLoc,5,CONTOUR_COLOR);
Imgproc.drawContours(mGrey,Mcontours,num,CONTOUR_COLOR);
}

}

返回mGrey}`

最佳答案

如果你想找到最大的轮廓,请查看我的代码:

mContours = new ArrayList<MatOfPoint>();
mObjectContours = new ArrayList<MatOfPoint>();

private void findObjectContour(Mat src) {
mContours.clear();
Imgproc.findContours(src, mContours, mHierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
filterContoursArea(mContours);
}

private void filterContoursArea(List<MatOfPoint> mContours) {
double maxArea = getMaxContourArea(mContours);
mObjectContours.clear();

for (int i = 0; i < mContours.size(); i++) {
MatOfPoint contour = mContours.get(i);
if (Imgproc.contourArea(contour) > mMinContourArea * maxArea) {
mObjectContours.add(contour);
}
}
}

private double getMaxContourArea(List<MatOfPoint> contours) {
double maxArea = 0;
double area;
for (int i = 0; i < contours.size(); i++) {
area = Math.abs(Imgproc.contourArea(contours.get(i)));
if (area > maxArea) {
maxArea = area;
}
}
return maxArea;
}

private int calculateMaxContourAreaIdx(List<MatOfPoint> contours) {
double maxArea = 0;
int maxHandContourAreaIdx = 0;
double area;
for (int i = 0; i < contours.size(); i++) {
area = Math.abs(Imgproc.contourArea(contours.get(i)));
if (area > maxArea) {
maxArea = area;
maxHandContourAreaIdx = i;
}
}
return maxHandContourAreaIdx;
}

关于java - 找到最亮的轮廓opencv java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35975655/

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