如何使用opencv和Python读取用户的“ctrl + q”输入?

时间:2017-06-04 00:47:16

标签: python opencv

我正在使用: -

key=cv2.waitKey(1) #& 0xFF 
    if key== ord('q'):
        ....................

但我需要用户的输入为ctrl + q

由于

2 个答案:

答案 0 :(得分:1)

CTRL + Q ASCII control key table中编码为17。下面是一个示例代码。

cv2.imshow('frame', frame)
key = cv2.waitKey(1)
if key == 17:        # Ctrl+Q or ^Q
    break

答案 1 :(得分:0)

@WalidAhmed,如果您使用import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; public class Test { public static void main(String[] args) { int[] A = { 1, 8, 7, 8, 9, 2, 1, 9, 6, 4, 3, 5, 4, 4, 4, 4, 4 }; Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>(); for (int i : A) { if (map.containsKey(i)) { map.put(i, map.get(i) + 1); } else { map.put(i, 1); } } System.out.println(sortByValue(map)); List<Integer> keys = new ArrayList<Integer>(sortByValue(map).keySet()); int maximumPossibleFrequency = map.get(keys.get(keys.size() - 1)); for (int i = keys.size() - 1; i >= 0; i--) { if (map.get(keys.get(i)) < maximumPossibleFrequency) { break; } else { System.out.println(keys.get(i) + " => " + map.get(keys.get(i))); } } } public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> unsortMap) { List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(unsortMap.entrySet()); Collections.sort(list, new Comparator<Map.Entry<K, V>>() { public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) { return (o1.getValue()).compareTo(o2.getValue()); } }); Map<K, V> result = new LinkedHashMap<K, V>(); for (Map.Entry<K, V> entry : list) { result.put(entry.getKey(), entry.getValue()); } return result; } } Ctrl + Anykey会将其解释为单个密钥。例如,

cv::waitKeyEx()

在组合中提供std::cout << cv::waitKey() << std::endl; std::cout << cv::waitKey() << std::endl; 227, 113代码,Ctrl代码),如果他们分别按下。但

q
当单独按下时,

会产生std::cout << cv::waitKeyEx() << std::endl; std::cout << cv::waitKeyEx() << std::endl; ,而在组合的情况下会产生65507, 113

对不起C ++代码,我希望你能用Python重现它。请注意,这种方法对键盘的语言布局很敏感(即我的英语 - 俄语和65507, 262257键具有俄语布局中的Q字符,其Й代码为{{1} +} + 263882组合)。我也在Ubuntu中对它进行了测试。因此,对于不同的操作系统,代码可能会有所不同。