本文将带您了解关于OpenCV和Python-图片太大而无法显示的新内容,同时我们还将为您解释opencv图片显示的太大的相关知识,另外,我们还将为您提供关于Anaconda:即使已安装opencv,
本文将带您了解关于OpenCV和Python-图片太大而无法显示的新内容,同时我们还将为您解释opencv图片显示的太大的相关知识,另外,我们还将为您提供关于Anaconda:即使已安装opencv,也无法导入cv2(如何为python3安装opencv3)、OpenCV imshow 无法显示图片、OpenCV-Python 学习(一) OPENCV 中的GUI 特性之图片、opencv-python学习【1】图片的显示与保存的实用信息。
本文目录一览:- OpenCV和Python-图片太大而无法显示(opencv图片显示的太大)
- Anaconda:即使已安装opencv,也无法导入cv2(如何为python3安装opencv3)
- OpenCV imshow 无法显示图片
- OpenCV-Python 学习(一) OPENCV 中的GUI 特性之图片
- opencv-python学习【1】图片的显示与保存
OpenCV和Python-图片太大而无法显示(opencv图片显示的太大)
我有一个6400×3200的图像,而我的屏幕是1280 x800。因此,该图像需要调整大小以仅用于显示。我正在使用Python和OpenCV
2.4.9。根据OpenCV文档,
如果需要显示大于屏幕分辨率的图像,则需要在imshow之前调用namedWindow(“”,WINDOW_NORMAL)。
那就是我正在做的,但是图像没有适合屏幕,只显示了一部分,因为它太大了。我也尝试了cv2.resizeWindow,但没有任何区别。
import cv2
cv2.namedWindow("output",cv2.WINDOW_NORMAL) # Create window with freedom of dimensions
# cv2.resizeWindow("output",400,300) # Resize window to specified dimensions
im = cv2.imread("earth.jpg") # Read image
cv2.imshow("output",im) # Show image
cv2.waitKey(0) # Display the image infinitely until any keypress
Anaconda:即使已安装opencv,也无法导入cv2(如何为python3安装opencv3)
我安装了Anaconda(版本:conda 4.2.9,python3),并import cv2
在遇到以下错误时尝试这样做:
ImportError: No module named ''cv2''
随着conda search cv2
我得到这个:
opencv 2.4.2 np15py26_0 defaults 2.4.2 np15py27_0 defaults 2.4.2 np16py26_0 defaults 2.4.2 np16py27_0 defaults 2.4.2 np17py26_0 defaults 2.4.2 np17py27_0 defaults 2.4.2 np15py26_1 defaults 2.4.2 np15py27_1 defaults 2.4.2 np16py26_1 defaults 2.4.2 np16py27_1 defaults 2.4.2 np17py26_1 defaults 2.4.2 np17py27_1 defaults 2.4.6 np16py26_0 defaults 2.4.6 np16py27_0 defaults 2.4.6 np17py26_0 defaults 2.4.6 np17py27_0 defaults 2.4.6 np18py26_0 defaults 2.4.6 np18py27_0 defaults 2.4.9 np18py27_0 defaults 2.4.10 np19py26_0 defaults 2.4.10 np19py27_0 defaults 2.4.10 np110py27_1 defaults 2.4.10 np19py26_1 defaults 2.4.10 np19py27_1 defaults
我需要做些什么才能导入cv2模块?
我正在使用Ubuntu 16.04。
答案1
小编典典opencv与python 3不兼容。我必须为python
3安装opencv3。在我们如何在anaconda上安装opencv的明显答案?解释了如何为蟒蛇安装opencv(3):
运行以下命令:
conda install -c https://conda.binstar.org/menpo opencv
我意识到opencv3现在也可用,运行以下命令:
conda install -c https://conda.binstar.org/menpo opencv3
编辑于2016年8月18日: 您可以通过以下方式永久添加“ menpo”频道:
conda config --add channels menpo
然后可以通过以下方式安装opencv:
conda install opencv (or opencv3)
2017年8月14日编辑: “ Clinicalgraphics ”频道为最近的python3提供了相对较新的vtk版本
conda install -c clinicalgraphics vtk
于2020年4月16日进行编辑(基于@AMC的评论): 可以通过以下方式安装OpenCV
conda-forge
(详细信息请参见此处)
conda install -c conda-forge opencv
OpenCV imshow 无法显示图片
问题:imshow 图片无法显示
症状:
解决方案,将 cv2.waitKey (0) 与 cv.imshow (''imgage'', img) 写到一起
1 import numpy as np
2 import cv2
3
4 img = cv2.imread(''F:/team.jpg'', 0)
5 cv2.imshow(''image'', img)
6 # waitKey, represent the Keyboard function
7 k = cv2.waitKey(0)
8 if k == 27: # wait for ESC key to exit
9 cv2.destroyAllWindows()
10 elif k == ord(''s''): # wait for ''s'' key to save and exit
11 cv2.imwrite(''messigray.png'',img)
12 cv2.destroyAllWindows()
13
OpenCV-Python 学习(一) OPENCV 中的GUI 特性之图片
1,读入图像
import numpy as np
import cv2
img = cv2.imread(''messi5.jpg'',0)
0:cv2.IMREAD_GRAYSCALE:以灰度模式读入图像
1:cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,这是默认参数
cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的 alpha 通道
2,显示图像
cv2.imshow(''image'',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey() 是一个键盘绑定函数。函数等待特定的几毫秒,看是否有键盘输入。有输入则继续,0代表无限等待
cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口
cv2.destroyWindow(),在括号内输入你想删除的窗口名 cv2.destroyWindow(''img'')
另一种方法先创建窗口再加载图像
cv2.namedWindow(''image'', cv2.WINDOW_NORMAL)
cv2.imshow(''image'',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
初 始 设 定 函 数标 签 是 cv2.WINDOW_AUTOSIZE。 但 是 如 果 你 把 标 签 改 成cv2.WINDOW_NORMAL,你就可以调整窗口大小了
3,保存图像
cv2.imwrite(''messigray.png'',img)
4,实例(esc 退出27 ord(''s'')获得s的键值)
import numpy as np
import cv2
img = cv2.imread(''messi5.jpg'',0)
cv2.imshow(''image'',img)
k = cv2.waitKey(0)
if k == 27:
# wait for ESC key to exit
cv2.destroyAllWindows()
elif k == ord(''s''): # wait for ''s'' key to save and exit
cv2.imwrite(''messigray.png'',img)
cv2.destroyAllWindows()
警告:如果你用的是 64 位系统,你需要将 k = cv2.waitKey(0) 这行改成
k = cv2.waitKey(0)&0xFF
5,使用matplotlib
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread(''messi5.jpg'',0)
plt.imshow(img, cmap = ''gray'', interpolation = ''bicubic'')
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
彩色图像使用 OpenCV 加载时是 BGR 模式。但是 Matplotib 是 RGB模式。所以彩色图像如果已经被 OpenCV 读取,那它将不会被 Matplotib 正确显示。
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread(''messi4.jpg'')
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.subplot(121);plt.imshow(img) # expects distorted color
plt.subplot(122);plt.imshow(img2) # expect true color
plt.show()
cv2.imshow(''bgr image'',img) # expects true color
cv2.imshow(''rgb image'',img2) # expects distorted color
cv2.waitKey(0)
cv2.destroyAllWindows()
6,OpenCV 中的绘图函数
cv2.line(), cv2.circle(), cv2.rectangle(),cv2.ellipse(),cv2.putText()
上面所有的这些绘图函数需要设置下面这些参数:
• img:你想要绘制图形的那幅图像。
• color:形状的颜色。以 RGB 为例,需要传入一个元组,例如:
(255,0,0)
代表蓝色。对于灰度图只需要传入灰度值。
• thickness:线条的粗细。如果给一个闭合图形设置为 -1,那么这个图形
就会被填充。默认值是 1.
• linetype:线条的类型, 8 连接,抗锯齿等。默认情况是 8 连接。 cv2.LINE_AA为抗锯齿,这样看起来会非常平滑。
cv2.line(img,(0,0),(511,511),(255,0,0),5)
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
cv2.circle(img,(447,63), 63, (0,0,255), -1)
cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts=pts.reshape((-1,1,2))
# 这里 reshape 的第一个参数为 -1, 表明这一维的长度是根据后面的维度的计算出来的。
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,''OpenCV'',(10,500), font, 4,(255,255,255),2)
opencv-python学习【1】图片的显示与保存
一.安装与导入
安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
导入 import cv2
注意:
p y c h a r m pycharm pycharm 中安装 cv2 后可能出现 cv2 不提示方法的问题,如果你的 cv2 安装路径为 ‘…\venv\Lib\site-packages\cv2’,在 cv2 该文件夹下有一个 cv2.pyd 文件,复制这个文件到 ‘…\venv\Lib\site-packages’ 下,然后重启 p y c h a r m pycharm pycharm 即可。
二.读取图像
1.相关API
-
retval = cv2.imread(filename[, flags])
读取图片- 返回值:
- retval:读取到的图像,未读取到时返回 None
- 输入参数:
- filename:要读取图像的完整文件名
- flags:读取标记,以何种形式来读取文件 。flag 具体值如下,输入时既可以输入值,也可以输入数值
- 返回值:
值 | 数值 | 含义 |
---|---|---|
cv2.IMREAD_UNCHANGED | -1 | 保持原格式不变(依然是BGR格式) |
cv2.IMREAD_GRAYSCALE | 0 | 将图像调整为单通道的灰度图 |
cv2.IMREAD_COLOR | 1 | 将图像调整为3通道的BGR格式(默认) |
cv2.IMREAD_ANYDEPTH | 2 | 当载入的图像深度为16或32位时返回其对应的深度图像,否则转换为8位图像 |
cv2.IMREAD_ANYCOLOR | 4 | 以任何可能的颜色格式读取图像 |
cv2.IMREAD_LOAD_GDAL | 8 | 使用gdal驱动程序加载图像 |
cv2.IMREAD_REDUCED_COLOR_2 | 将图像转为3通道的BGR彩色图像,并将图像尺寸减小为原来的 1/2 | |
cv2.IMREAD_REDUCED_COLOR_4 | 将图像转为3通道的BGR彩色图像,并将图像尺寸减小为原来的 1/4 | |
cv2.IMREAD_REDUCED_COLOR_8 | 将图像转为3通道的BGR彩色图像,并将图像尺寸减小为原来的 1/8 | |
cv2.IMREAD_REDUCED_GRAYSCALE_2 | 将图像转为单通道灰度图像,并将图像尺寸减小为原来的 1/2 | |
cv2.IMREAD_REDUCED_GRAYSCALE_4 | 将图像转为单通道灰度图像,并将图像尺寸减小为原来的 1/4 | |
cv2.IMREAD_REDUCED_GRAYSCALE_8 | 将图像转为单通道灰度图像,并将图像尺寸减小为原来的 1/8 |
2.示例
import cv2
bgr = cv2.imread('dog.jpg')
print(bgr)
三.显示图像
1.相关API
-
cv2.namedWindow(winname)
----创建指定名称的窗口,窗口用于显示图片- winname:窗口名称
-
cv2.imshow(winname, img)
----显示图像- winname:窗口名称
- img:要显示的图片
-
retval = cv2.waitkey([delay])
----等待按钮,当用户按下键盘后该语句执行,并返回获取值- retval:返回值。如果有按键被按下,就返回按键的 ASCII 码,没有则返回-1
- delay:等待键盘触发的时间,单位ms。当 d e l a y ≤ 0 delay\leq0 delay≤0 时无限等待, d e l a y delay delay 默认为0。
-
cv2.destroyWindow(winname)
----销毁指定窗口- winname:窗口名称
-
cv2.destroyAllWindows()
----销毁所有窗口
2.示例
(1).显示图片
import cv2
bgr = cv2.imread('dog.jpg')
cv2.namedWindow('dog') # 创建窗口的这一步可以省略,省略时cv2.imshow('dog',bgr)会自己执行这一步
cv2.imshow('dog',bgr)
cv2.waitKey()
注意:opencv 读取到的图片默认情况下是 bgr 格式,但是使用 cv2.imshow 显示图片时它又会把 bgr 格式转回为 rgb 格式去显示。所以在读取图片后如果不进行格式转换,用 matplotlib 去显示图片时,图片将会是如下图的 bgr 格式。
cv2显示RGB格式 | matplotlib显示BGR格式 |
---|---|
(2).waitKey显示不同图片
import cv2
dog = cv2.imread('dog.jpg')
cat = cv2.imread('cat.jpg')
cv2.imshow('dog',dog)
key = cv2.waitKey()
if key == ord('A'):
cv2.imshow('another_dog',dog)
if key == ord('B'):
cv2.imshow('cat',cat)
cv2.waitKey()
程序会先显示一张狗的图片,按下A后显示 ‘dog’ 与 ‘another_dog’ 两个窗口,而按下B后显示 ‘dog’ 与 ‘cat’ 两个窗口。
(3).destroyWindow销毁指定窗口
import cv2
dog = cv2.imread('dog.jpg')
cv2.imshow('dog',dog)
cv2.waitKey()
cv2.destroyWindow('dog')
按下任意按键销毁 ‘dog’ 窗口。
(4).destroyAllWindows销毁所有窗口
import cv2
dog = cv2.imread('dog.jpg')
cv2.imshow('dog1',dog)
cv2.imshow('dog2',dog)
cv2.waitKey()
cv2.destroyAllWindows
按下任意按键销毁 ‘dog1’ 和 ‘dog2’ 窗口。
四.保存图像
1.相关API
-
retval = cv2.imwrite(filename, img[, params])
- filename:要保存目标文件的完整路径文件名,包含扩展名
- img:要保存的图片名称
- retval :保存成功返回 True,失败返回 False
- params:保存类型参数,可选。默认为None
2.示例
import cv2
dog = cv2.imread('dog.jpg')
cv2.imwrite('res.png',dog)
默认读取图片后,保存图片功能也会将 bgr 转为 rgb 格式进行保存。
关于OpenCV和Python-图片太大而无法显示和opencv图片显示的太大的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Anaconda:即使已安装opencv,也无法导入cv2(如何为python3安装opencv3)、OpenCV imshow 无法显示图片、OpenCV-Python 学习(一) OPENCV 中的GUI 特性之图片、opencv-python学习【1】图片的显示与保存的相关知识,请在本站寻找。
本文标签: