小言_互联网的博客

python CV2库

482人阅读  评论(0)

1.读入一张图片

2.显示图片

3.保存图片

4.灰度图和彩色图片相互转化

5.图像缩放

6.图像翻转

安装的时候是pip install opencv_python

但是在导包的时候是import cv2

注意:使用cv2库的时候,文件路径一定要全英文,不能有中文,一旦有中文就会有各种莫名其妙的错误

1.读入一张图片:cv2.imread(filepath,flags)   

其中filepath表示图片的路径

flags表示要读入的是什么图片:

(1)cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道(或者直接写1)

(2)cv2.IMREAD_GRAYSCALE:读入灰度图片(或者直接写0)

读入一张rgb图像:


  
  1. import cv2
  2. image1=cv2.imread( r"D:\1.jpg")
  3. print(image1.shape)
  4. #(413, 295, 3)

读入一张灰度图:


  
  1. import cv2
  2. image2=cv2.imread( r"D:\2.jpg", 0)
  3. print(image2.shape)
  4. #(783, 457)

2.显示图片:

(1)显示一张rgb图片:


  
  1. import cv2
  2. image1=cv2.imread( r"D:\1.jpg")
  3. cv2.imshow( "image1",image1)
  4. cv2.waitKey( 0)

cv2.imshow("image1",image1)   第一个参数是窗口的名字,第二个参数是要显示的图像

cv2.waitKey(0)不调用这行代码的话,窗口会一闪而过,看不到显示的图片

(2)显示一张灰度图片:


  
  1. import cv2
  2. image2=cv2.imread( r"D:\2.jpg", 0)
  3. cv2.imshow( "image2",image2)
  4. cv2.waitKey( 0)

3.保存图片:


  
  1. import cv2
  2. image2=cv2.imread( r"D:\2.jpg", 0)
  3. cv2.imwrite( r"D:\3.jpg",image2)

cv2.imwrite(r"D:\3.jpg",image2)第一个参数是要保存的路径,第二个参数是要保存哪张图片

4.灰度图和彩色图之间的互相转化


  
  1. img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) #灰度化:彩色图像转为灰度图像
  2. img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB) #彩色化:灰度图像转为彩色图像

(1)rgb图转灰度图


  
  1. import cv2
  2. image2=cv2.imread( r"D:\4.jpg", 1)
  3. print(image2.shape)
  4. #这张图片本来是(1050, 1680, 3)
  5. image3=cv2.cvtColor(image2,cv2.COLOR_RGB2GRAY)
  6. print(image3.shape) #(1050, 1680)
  7. cv2.imshow( "image3",image3)
  8. cv2.waitKey( 0)

转化后变成下面这样:

cv2.COLOR_RGB2GRAY的底层实现:GRAY=0.3*R+0.59*G+0.11*B:


  
  1. #GRAY=0.3*R+0.59*G+0.11*B
  2. img_gray = img_rgb[:,:, 0] * 0.11 + img_rgb[:,:, 1] * 0.59 + img_rgb[:,:, 2] * 0.3
  3. img_gray = img_gray.astype(np.uint8)
  4. #只有当数组类型为uint8时,opencv才会认为这是图片

(2)灰度图转彩色图


  
  1. import cv2
  2. image2=cv2.imread( r"D:\2.jpg", 0)
  3. print(image2.shape)
  4. #这张图片本来是(783, 457)
  5. image3=cv2.cvtColor(image2,cv2.COLOR_GRAY2RGB)
  6. print(image3.shape) #(783, 457,3)
  7. cv2.imshow( "image3",image3)
  8. cv2.waitKey( 0)

转化后变成下面这样:

 可以看到:转化成的彩色图和原图还是一样的看起来像灰度图啊(但是通过打印图片的形状确实已经将单通道的图片转成了三通道的图了),这是因为OpenCV就是把灰度图复制了三遍,分别赋值给了R,G,B三个通道。

5.图像缩放:

cv2.resize(image, image2,dsize) #图像缩放:(输入原始图像,输出新图像,图像的大小)

 (1)彩色图片缩放


  
  1. import cv2
  2. image2=cv2.imread( r"D:\1.jpg", 1)
  3. print(image2.shape)
  4. #这张图片本来是(413, 295, 3)
  5. image3=cv2.resize(image2,( 256, 256))
  6. print(image3.shape) #(256,256,3)
  7. cv2.imshow( "image3",image3)
  8. cv2.waitKey( 0)

(2)灰度图片缩放


  
  1. import cv2
  2. image2=cv2.imread( r"D:\1.jpg", 1)
  3. print(image2.shape)
  4. #这张图片本来是(1050,1680)
  5. image3=cv2.resize(image2,( 256, 256))
  6. print(image3.shape) #(256, 256)
  7. cv2.imshow( "image3",image3)
  8. cv2.waitKey( 0)

6. 图像翻转

cv2.flip(img,flipcode)

flipcode =0:沿x轴翻转;

flipcode > 0:沿y轴翻转;

flipcode < 0:x,y轴同时翻转


  
  1. import cv2
  2. image2=cv2.imread( r"D:\9.png", 1)
  3. image3=cv2.flip(image2, 0)
  4. image4=cv2.flip(image2, 1)
  5. image5=cv2.flip(image2,- 1)
  6. print(image3.shape)
  7. cv2.imshow( "image2",image2)
  8. cv2.imshow( "image3",image3)
  9. cv2.imshow( "image4",image4)
  10. cv2.imshow( "image5",image5)
  11. cv2.waitKey( 0)

  image2是原图,image3 沿x轴翻转就是上下翻转,image4沿y轴翻转就是左右翻转,image5沿x轴y轴翻转就是中心对称

 


转载:https://blog.csdn.net/weixin_47414034/article/details/125443644
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场