cv2(cv2.cv2)内部未解决的引用“ cv2”

时间:2018-07-08 15:28:41

标签: python opencv package python-import cv2

我环顾四周,人们似乎也遇到了类似的问题,但是没有一个人能准确描述我的情况,为他们解决的解决方案似乎对我不起作用(或者根本没有答案)。 / p>

使用pycharm,在安装public static String infix2postfix(String infix) throws IOException, SyntaxError { Stack<String> operators = new Stack<>(); Queue<String> output = new LinkedList<>(); ArrayList<String> tokens = tokenize(infix); final String ARGSEP = ","; for (String tok : tokens) { if (tok.equals("Ans") || tok.equals("π") || isNumeric(tok)) output.offer(tok); else if (isUnaryPostfix(tok)) output.offer(tok); else if (isUnaryPrefix(tok)) operators.push(tok); else if (isFunc(tok)) operators.push(tok); else if (tok.equals(ARGSEP)) { while (!operators.empty() && !operators.peek().equals(LPAREN)) output.offer(operators.pop()); } else if (isBinary(tok)) { String a = tok; if (assocLeft(a)) { while (!operators.empty() && getOpPrec(operators.peek()) >= getOpPrec(a) && !operators.peek().equals(LPAREN)) output.offer(operators.pop()); } else { while (!operators.empty() && getOpPrec(operators.peek()) > getOpPrec(a) && !operators.peek().equals(LPAREN)) output.offer(operators.pop()); } operators.push(a); } else if (tok.equals(LPAREN)) operators.push(tok); else if (tok.equals(RPAREN)) { while (!operators.empty() && !operators.peek().equals(LPAREN)) output.offer(operators.pop()); if (operators.empty() || !operators.peek().equals(LPAREN)) throw new ParenthesesMismatch(); else operators.pop(); if (!operators.empty() && isFunc(operators.peek())) output.offer(operators.pop()); } } while (!operators.empty()) { if (operators.peek().equals(LPAREN) || operators.peek().equals(RPAREN)) throw new ParenthesesMismatch(); output.add(operators.pop()); } return queue2str(output); } public static boolean isOperator(String str) { switch (str) { case "^": case "/": case "*": case "+": case SUB: case NEG: case "Mod": case "!": case "E": case "²": return true; default: return false; } } public static boolean isBinary(String str) { switch (str) { case "^": case "/": case "*": case "+": case SUB: case "Mod": case "E": return true; default: return false; } } public static boolean isUnaryPostfix(String str) { return str.equals("!") || str.equals("²"); } public static boolean isUnaryPrefix(String str) { return str.equals(NEG); } private static int getOpPrec(String str) { switch (str) { case "(": case ")": return 7; case "E": case "!": return 5; case "^": case "²": return 4; case "/": case "*": case "Mod": case NEG: return 3; case "+": case SUB: return 2; default: return 8; /* give functions higher precedence, so they may be added to the queue */ } } private static boolean assocLeft(String str) { switch (str) { case "^": case "²": case "E": case NEG: return false; case "/": case "*": case "+": case SUB: case "Mod": case "!": return true; case "(": case ")": return true; } return true; } $.ajax({ type:'get', url: '{{URL::asset('dashboard/Grafias-Domain-Search')}}', data:{ id : a }, . . . 之后,我注意到opencv-python可以工作,但是当我尝试访问opencv-contrib-python时,pycharm抱怨找不到它。

所以我转到了cv2初始化文件,它看起来像这样:

import cv2

Pycharm在cv2.imread()行上检测到未解析的引用,并且我想在最后一行上会发生相同的问题-我尝试在python控制台中执行以下操作:

import importlib

from .cv2 import *
from .data import *

# wildcard import above does not import "private" variables like __version__
# this makes them available
globals().update(importlib.import_module('cv2.cv2').__dict__)

但是我遇到了NameError,这似乎证实了我的怀疑。

正如我写的那样,我曾尝试安装from .cv2 import *,但似乎没有任何作用,坦率地说,我已经没有想法了。

注意:  -我使用的是Windows 10 x64。  -我使用的是Python 3.6 x64。  -我在Pycharm项目上设置了虚拟环境。

4 个答案:

答案 0 :(得分:1)

我发现问题出在cv2的__init__.py如何导入所有内容,即globals().update()行。

从本质上讲,一切都可以正常工作,但是由于Pycharm不会索引这种调用,因此它不会检测到名称空间已正确导入。因此,解决方案将是忽略“错误”,并且不进行自动补全。

答案 1 :(得分:0)

您是否通过终端安装了opencv?

例如,像这样。

$ pip install opencv-python
$ pip install opencv-contrib-python

我也遇到了同样的问题。

如果使用pycharm,则应通过pycharm安装opencv。

File-> Settings...-> Project interpreter-> +

答案 2 :(得分:0)

我不是专家,但以下几行对我有用:

import cv2.cv2 as cv2

之后一切似乎都可以进行。自动补全功能又回来了

答案 3 :(得分:0)

我遇到了同样的问题。你需要尝试一些事情。

  1. 您只需导入 cv2 而不是 cv2.cv2。只需写“import cv2”
  2. 如果您之前安装了任何其他库,例如 cv,请先将其卸载。
  3. 我们需要安装的库是opencv-python
  4. 您需要通过 IDE 而不是终端来安装它。步骤如下: 文件 -> 设置 -> (点击你的项目) -> 项目解释器 -> + -> (输入opencv-python) -> 下载并安装 -> 现在应该可以工作了。