OpenCV2升级到OpenCV3遇到“未定义的标识符”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV2升级到OpenCV3遇到“未定义的标识符”相关的知识,希望对你有一定的参考价值。

参考技术A

原因: OpenCV3中取消了Opencv1中残留的CV_式的宏定义前缀,使用新的命名规范
解决方法: 直接去掉CV_前缀
A.namedWindow()函数中,CV_WINDOW_AUTOSIZE改为WINDOW_AUTOSIZE
B.threshold()函数中,CV_THRESH_BINARY改为THRESH_BINARY
C.line函数中,CV_FILED改为FILLED
D.remap()函数中CV_INTER_LINEAR改为INTER_LINEAR

A.line()函数中,CV_AA改为LINE_AA
B.cvtColoar()函数中,CV_BGR2HSV改为COLOR_BGR2HSV
C.morphologyEx()函数中,CV_MOP_OPEN改为MORPH_OPEN,CV_MOP_CLOSE改为MORPH_CLOSE

A.TermCriteria()函数中,CV_TERMCRIT_EPS改为TermCriteria::EPS
B.CascadeClassifer::detectMultScale()函数中,CV_HAAR_SACLE_IMAGE改为CASCADE_SCALE_IMAGE

备注:vector要加using namespace std;

使用 imshow + waitKey 显示图像 opencv+python 时出现问题

【中文标题】使用 imshow + waitKey 显示图像 opencv+python 时出现问题【英文标题】:Problem displaying image opencv+python using imshow + waitKey 【发布时间】:2020-07-08 09:08:17 【问题描述】:

我最近将一个项目的 python/opencv 升级到 python 3.7 + opencv 4.3.0,现在我遇到了 opencvs imshow 的问题。我正在运行 Ubuntu 18.04 并且正在使用 conda venvs。

我尝试多次重新运行这段代码,一半时间正确显示白色图像,一半时间显示下面的图像 (1)。打印输出 (2) 始终相同。我尝试将其从 waitKey(0) 更改为 waitKey(1000) 但这并没有什么不同。仍然有大约一半的时间,我看到的只是一张小小的黑色图像。

有人知道如何调试吗?我尝试查看 Pycharms 日志文件,但它们没有更多详细信息。我也尝试直接从命令行运行它,但这给出了同样的问题。还尝试删除环境并创建一个新环境,重新安装 opencv 并遇到相同的问题。当我创建 3.6 环境时,我没有问题,但这不再是一种选择。对于不支持 3.6 中某些功能的其他一些包,我需要 python3.7。

我收到一条警告说 libcanberra gtk 丢失,并在另一篇文章中发现它可能会导致问题。所以我使用sudo apt install libcanberra-gtk-module libcanberra-gtk3-module 安装了它,警告就消失了。可悲的是,这个问题没有......

import numpy as np
import cv2
if __name__ == '__main__':
     img = np.ones((255, 255, 3), dtype=np.uint8)*255
     print(img.shape)
     print(img.dtype)
     print(img.min())
     print(img.max())
     cv2.imshow("i", img)
     cv2.waitKey(0)

screenshot of the code + result

console output

【问题讨论】:

我将我的 opencv 版本降级到 4.2.0,这似乎奏效了! img = np.zeros([100,100,3],dtype=np.uint8) img.fill(255)你也可以试试这个 可能是 Open CV python 4.3.0 中的一个错误,我在显示图像时仅在 Linux 上遇到了类似的问题。图像数组将是相同的......您可以通过将图像保存在文件系统中来验证。 【参考方案1】:

我认为没有问题。图像的左上部分是白色的,因为它应该是。其余的未定义。我建议将绿色和蓝色通道设为 0,仅将红色通道设为 255,以确保确实如此。

【讨论】:

【参考方案2】:

opencv 4.3.0.36 也有这个问题。它在重新启动我的代码 3-5 次后工作。 Opencv 和 opencv-conrib 4.3.0.36。 在 4.2 版中运行良好,但我需要 opencv 4.3.0.36。 它是一些错误!!???

code

【讨论】:

【参考方案3】:

我是这样解决的:

if cv2.waitKey(0):
    pass

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于OpenCV2升级到OpenCV3遇到“未定义的标识符”的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu14下opencv2和opencv3共存

OpenCV 3 最新模块一次看个够

在Ubuntu1604上安装OpenCV3.2遇到问题求助

opencv3.3 CUDA 初学实例

opencv2已有的情况下,安装opencv3以及对应的opencv_contrib

转载:Ubuntu14.04与opencv2.4.8opencv3.0版本共存