我正在使用: -
key=cv2.waitKey(1) #& 0xFF
if key== ord('q'):
....................
但我需要用户的输入为ctrl + q
由于
答案 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中对它进行了测试。因此,对于不同的操作系统,代码可能会有所不同。