openCv 4 Java HighGui.imshow

时间:2019-01-09 05:36:19

标签: opencv computer-vision javacv

以python方式,加载和显示图像非常简单。

import functools
import itertools
import operator
import random
import string

import numpy as np
import pandas as pd
import perfplot # see https://github.com/nschloe/perfplot for this awesome library


def gen_data(n):
    return pd.DataFrame(data={0: [
        [random.choice(string.ascii_lowercase) for _ in range(random.randint(10, 20))]
        for _ in range(n)
    ]})

def pd_sum(df):
    return df[0].sum()

def np_sum(df):
    return np.sum(df[0].values)

def np_concat(df):
    return np.concatenate(df[0]).tolist()

def functools_reduce_add(df):
    return functools.reduce(operator.add, df[0].values)

def functools_reduce_iadd(df):
    return functools.reduce(operator.iadd, df[0], [])

def itertools_chain(df):
    return list(itertools.chain(*(df[0])))

def itertools_chain_from_iterable(df):
    return list(itertools.chain.from_iterable(df[0]))

perfplot.show(
    setup=gen_data,
    kernels=[
        pd_sum,
        np_sum,
        np_concat,
        functools_reduce_add,
        functools_reduce_iadd,
        itertools_chain,
        itertools_chain_from_iterable
    ],
    n_range=[10, 50, 100, 500, 1000, 1500, 2000, 2500, 3000, 4000, 5000],
    equality_check=None
)

在Java中,它看起来像这样。

import cv2 




image = cv2.imread("path/to/image")
cv2.imshow("test window", image)
cv2.waitKey(0) # any key press will close the window and stop the program

我正在使用opencv 4,但在Java的opencv中实现相同的功能却没有成功。

HighGui.waitKey(0)与python相比无法正常工作(任何按键都会关闭python中的窗口),我必须手动关闭“测试窗口”以使程序停止。

我在某处读到说Java中的opencv无法显示图像。但是HighGui不提供此功能吗?我从Java opencv api

读取了所有API

关于api文档的详细信息无法帮助我理解该函数的确切功能,我只能从python中猜测它的功能。

2 个答案:

答案 0 :(得分:0)

您是否尝试过明确调用:

   HighGui.destroyAllWindows();

答案 1 :(得分:0)

System.exit(0);之后添加waitkey()