import cv2
img = cv2.imread('filename',0);
cv2.imshow('name',img);
k=cv2.waitKey(0);
if k==27:
cv2.destroyAllWindows();
elif k==ord('s'):
cv2.imwrite('filename',img);
cv2.destroyAllWindows();
cv2.error: /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/highgui/src/window.cpp:269: error: (-215) size.width>0 && size.height>0 in function imshow
import cv2
img = cv2.imread('filename',1)
print img.size
#1557504
print img.shape
#(832, 624, 3)
print img.dtype
#uint8
img=cv2.imread('wyg.jpg')
res=cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
#将图片扩展成原来的2倍
#or
height,width=img.shape[:2]
res=cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
若知道图片的移动方向(x,y),移动的距离为(tx,ty),则可以创建矩阵:M = [ [1 0 tx] [0 1 ty] ],存为np.float32类型放入numpy的数组中。
import cv2
import numpy as np
img = cv2.imread('wyg.jpg',0)
rows,cols = img.shape
M = np.float32([[1,0,100],[0,1,50]])
dst = cv2.warpAffine(img,M,(col,rows))
cv2.imshow('opencv',dst)
cv2.waitKey(0)
cv2.destoryAllwindows()
import cv2
import numpy as np
img=cv2.imread('wyg.jpg',0)
rows,cols=img.shape
# 这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
# 可以通过设置旋转中心,缩放因子,以及窗口大小来防止旋转后超出边界的问题
M=cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)
# 第三个参数是输出图像的尺寸中心
dst=cv2.warpAffine(img,M,(2*cols,2*rows))
cv2.imshow('img',dst)
cv2.destroyAllWindows()
在仿射变换中,原图中所有的平行线在结果图像中同样平行。为了创建这个矩阵我们需要从原图像中找到三个点以及他们在输出图像中的位置。然后cv2.getAffineTransform 会创建一个 2x3 的矩阵,最后这个矩阵会被传给函数 cv2.warpAffine。
import cv2
import numpy as np
img=cv2.imread('wyg.jpg')
rows,cols,ch=img.shape
pts1=np.float32([[50,50],[200,50],[50,200]])
pts2=np.float32([[10,100],[200,50],[100,250]])
M=cv2.getAffineTransform(pts1,pts2)
dst=cv2.warpAffine(img,M,(cols,rows))
cv2.imshow('opencv',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()