opencv和python下,运行对图片的读取程序时出现的问题!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv和python下,运行对图片的读取程序时出现的问题!!!相关的知识,希望对你有一定的参考价值。
程序代码:
import cv2
import sys
try:
filename = sys.argv[1]
except:
filename = "abc.jpg"
img = cv2.imread( filename )
cv2.namedWindow("demo1")
cv2.imshow("demo1", img)
cv2.waitKey(0)
错误:OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /home/dml/下载/opencv-2.4.10/modules/highgui/src/window.cpp, line 261
Traceback (most recent call last):
File "/home/dml/下载/SimpleCV-1.3/test/test.py", line 10, in <module>
cv2.imshow("demo1", img)
cv2.error: /home/dml/下载/opencv-2.4.10/modules/highgui/src/window.cpp:261: error: (-215) size.width>0 && size.height>0 in function imshow
1、需要用到其他模块的函数,如:
for i in range(20) #循环次数
image=cv2.imread("D:\\\\picture\\\\%d.jpg"%(i))#路径自己选择。
2、可以先升级你的pip,另外看看你的版本是否匹配,包括py版本和32位64位。
3、关于python下使用opencv读取图像。首先需要导入opencv包,上面说的那个Ipython并没有opencv包,所以想使用的请先正确导入opencv包再说,至于怎么导入,先下载个opencv包,里面有关于python的opencv包。
以下照片是关于Ipython的运行界面:
test.py跟abc.jpg在同一个目录下吗?
把所有的文件和库都安装到没有中文的路径下去。追问
在同一个目录下,都改成英文 目录了,还是有问题
这命令错了。。
应该是在bash里($提示符后面)执行
$ python xx.py
python使用opencv对图像添加(高斯/椒盐/泊松/斑点)噪声
导读
这篇文章主要介绍如何利用opencv来对图像添加各类噪声,原图
高斯噪声
高斯噪声就是给图片添加一个服从高斯分布的噪声
,可以通过调节高斯分布标准差(sigma)
的大小来控制添加噪声程度,sigma
越大添加的噪声越多图片损坏的越厉害
#读取图片
img = cv2.imread("demo.png")
#设置高斯分布的均值和方差
mean = 0
#设置高斯分布的标准差
sigma = 25
#根据均值和标准差生成符合高斯分布的噪声
gauss = np.random.normal(mean,sigma,(img_height,img_width,img_channels))
#给图片添加高斯噪声
noisy_img = image + gauss
#设置图片添加高斯噪声之后的像素值的范围
noisy_img = np.clip(noisy_img,a_min=0,a_max=255)
#保存图片
cv2.imwrite("noisy_img.png",noise_img)
椒盐噪声
椒盐噪声就是给图片添加黑白噪点
,椒指的是黑色的噪点(0,0,0)
盐指的是白色的噪点(255,255,255)
,通过设置amount
来控制添加噪声的比例,值越大添加的噪声越多,图像损坏的更加严重
#读取图片
img = cv2.imread("demo.png")
#设置添加椒盐噪声的数目比例
s_vs_p = 0.5
#设置添加噪声图像像素的数目
amount = 0.04
noisy_img = np.copy(image)
#添加salt噪声
num_salt = np.ceil(amount * image.size * s_vs_p)
#设置添加噪声的坐标位置
coords = [np.random.randint(0,i - 1, int(num_salt)) for i in image.shape]
noisy_img[coords] = 255
#添加pepper噪声
num_pepper = np.ceil(amount * image.size * (1. - s_vs_p))
#设置添加噪声的坐标位置
coords = [np.random.randint(0,i - 1, int(num_pepper)) for i in image.shape]
noisy_img[coords] = 0
#保存图片
cv2.imwrite("noisy_img.png",noise_img)
泊松噪声
#读取图片
img = cv2.imread("demo.png")
#计算图像像素的分布范围
vals = len(np.unique(image))
vals = 2 ** np.ceil(np.log2(vals))
#给图片添加泊松噪声
noisy_img = np.random.poisson(image * vals) / float(vals)
#保存图片
cv2.imwrite("noisy_img.png",noise_img)
speckle噪声
#读取图片
img = cv2.imread("demo.png")
#随机生成一个服从分布的噪声
gauss = np.random.randn(img_height,img_width,img_channels)
#给图片添加speckle噪声
noisy_img = image + image * gauss
#归一化图像的像素值
noisy_img = np.clip(noisy_img,a_min=0,a_max=255)
#保存图片
cv2.imwrite("noisy_img.png",noise_img)
以上是关于opencv和python下,运行对图片的读取程序时出现的问题!!!的主要内容,如果未能解决你的问题,请参考以下文章
Python下的OpenCV学习 02 —— 图像的读取与输出
为啥用Python的openCV读取图片与PIL读取的图片像素值会不一样?
OpenCV读取图片判断读取是否成功显示图片的代码(C++代码和Python代码)