首页 > 其他分享 >Opencv实例练习

Opencv实例练习

时间:2023-12-01 16:01:16浏览次数:34  
标签:plt img imshow 练习 cv2 Opencv 实例 图像 car

  实例所用的函数可在另一篇文章查询:  https://www.cnblogs.com/Zhouce/p/17867164.html

1、图像读取

 1 import cv2            # 引入opencv库
 2 import numpy as np    # 引入numpy库
 3 fn  = "car.png"
 4 
 5 # img_color = cv2.imread(fn,1)                   # 上下两种方式都是读取彩色图像的flag
 6 img_color = cv2.imread(fn,cv2.IMREAD_COLOR)
 7 
 8 # img_gray  = cv2.imread(fn,0)                   # 上下两种方式都是读取灰色图像的flag
 9 img_gray = cv2.imread(fn,cv2.IMREAD_GRAYSCALE)
10 
11 # 获取图像大小
12 sp1 = img_color.shape
13 sp2 = img_gray.shape
14 print("img_color.shape = ",sp1)           # 彩色图像三通道 : 高度(图像行数)、宽度(图像列数)、通道数
15 print("img_gray.shape = ",sp2)            # 灰色图像两通道 : 高度(图像行数)、宽度(图像列数)
16 
17 # # 创建窗口
18 # cv2.namedWindow('img_color')
19 # cv2.namedWindow('img_color')
20 
21 # 显示图像
22 cv2.imshow('img_color',img_color)
23 cv2.imshow('img_gray',img_gray)
24 
25 cv2.waitKey(0)

 

 2、保存图像

 1 import cv2
 2 
 3 fn  = "car.png"
 4 img_gray  = cv2.imread(fn,0)
 5 sp1 = img_gray.shape
 6 
 7 cv2.imshow('image',img_gray)              # 显示灰色图像
 8 cv2.imwrite("car_gray.png",img_gray)      # 在当前文件夹下保存图像
 9 
10 cv2.waitKey(0)
11 cv2.destroyAllWindows()

 3、缩放图像

 # 第一种缩放图像的方法
1 import cv2 2 import numpy as np 3 4 fn = 'car.png' 5 6 img = cv2.imread(fn) 7 8 #指定目标图像的宽高 9 #图像不失真 10 11 # img_down_0 = cv2.resize(img,(150,150)) # 12 img_up_0 = cv2.resize(img,(500,500)) 13 14 # cv2.imshow('carimg',img_down_0) 15 cv2.imshow('carimg',img_up_0) 16 17 # 图像失真 18 img_distortion = cv2.resize(img, (200, 300)) 19 cv2.imshow('img_distortion', img_distortion) 20 cv2.waitKey(0) 21 cv2.destroyAllWindows()

 

 # 第二种缩放图像的方法
1 import cv2 2 import numpy as np 3 4 fn = 'car.png' 5 6 img = cv2.imread(fn) 7 8 # 指定图像的比例因子(需要指出的是dsize必须要传参,None) 9 # 图像不失真 10 img_down_1 = cv2.resize(img,None,fx=0.75,fy=0.75) 11 img_up_1 = cv2.resize(img,None,fx=1.2,fy=1.2) 12 cv2.imshow('img_down-No distortion1', img_down_1) 13 cv2.imshow('img_up-No distortion1', img_up_1) 14 # 图像失真 15 img_distortion1 = cv2.resize(img,None,fx=0.75,fy=1.2) 16 cv2.imshow('img distortion1',img_distortion1) 17 cv2.waitKey(0) 18 cv2.destroyAllWindows()

 

 1 import cv2
 2 import numpy as np
 3 
 4 fn = 'car.png'
 5 
 6 img = cv2.imread(fn)
 7 
 8 # 指定图像缩放方法
 9 img_scale0 = cv2.resize(img, (150, 150), interpolation=cv2.INTER_AREA)
10 img_scale1 = cv2.resize(img, (450, 450), interpolation=cv2.INTER_CUBIC)
11 img_scale2 = cv2.resize(img, (450, 450), interpolation=cv2.INTER_LINEAR)
12 img_scale3 = cv2.resize(img, (150, 150), interpolation=cv2.INTER_NEAREST)
13 
14 cv2.imshow('img_scale0',img_scale0)
15 cv2.imshow('img_scale1',img_scale1)
16 cv2.imshow('img_scale2',img_scale2)
17 cv2.imshow('img_scale3',img_scale3)
18 
19 cv2.waitKey(0)
20 cv2.destroyAllWindows()
21 # 可选值包括cv2.INTER_NEAREST、cv2.INTER_LINEAR双线性插值法(默认)、cv2.INTER_AREA、cv2.INTER_CUBIC、cv2.INTER_LANCZOS4等

 4、图像裁剪

 1 import cv2
 2 
 3 fn  = "car.png"
 4 car = cv2.imread(fn)
 5 print(car.shape)
 6 
 7 # 裁剪图像
 8 cropped_car = car[25:190,50:300]      # image[start_row : end_row , start_rol : end_rol]
 9 cv2.imshow('original',car)
10 cv2.imshow('cropped',cropped_car)
11 cv2.waitKey(0)
12 cv2.destroyAllWindows()

 5、色彩空间转换

 1 # 颜色空间转换 cv2.cvtColor(img,flags)
 2 
 3 import cv2
 4 import matplotlib.pyplot as plt
 5 
 6 img = cv2.imread("car.png")
 7 # 利用plot函数画出图像并放置在一个窗口中显示
 8 plt.subplot(3,3,1)
 9 plt.imshow(img)
10 plt.axis('off')
11 plt.title('BGR')
12 
13 # BGR变换RGB
14 img_RGB = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
15 plt.subplot(3,3,2)
16 plt.imshow(img_RGB)
17 plt.axis('off')
18 plt.title('RGB')
19 
20 # 原图变换灰度图
21 img_GRAY = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
22 plt.subplot(3, 3, 3)
23 plt.imshow(img_GRAY)
24 plt.axis('off')
25 plt.title('GRAY')
26 
27 # 变换HSV空间
28 img_HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
29 plt.subplot(3, 3, 4)
30 plt.imshow(img_HSV)
31 plt.axis('off')
32 plt.title('HSV')
33 
34 # 变换YCrCb空间
35 img_YcrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
36 plt.subplot(3, 3, 5)
37 plt.imshow(img_YcrCb)
38 plt.axis('off')
39 plt.title('YcrCb')
40 
41 # 变换HLS空间
42 img_HLS = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)
43 plt.subplot(3, 3, 6)
44 plt.imshow(img_HLS)
45 plt.axis('off')
46 plt.title('HLS')
47 
48 # 变换XYZ空间
49 img_XYZ = cv2.cvtColor(img, cv2.COLOR_BGR2XYZ)
50 plt.subplot(3, 3, 7)
51 plt.imshow(img_XYZ)
52 plt.axis('off')
53 plt.title('XYZ')
54 
55 # 变换LAB空间
56 img_LAB = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
57 plt.subplot(3, 3, 8)
58 plt.imshow(img_LAB)
59 plt.axis('off')
60 plt.title('LAB')
61 
62 # 变换YUV空间
63 img_YUV = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
64 plt.subplot(3, 3, 9)
65 plt.imshow(img_YUV)
66 plt.axis('off')
67 plt.title('YUV')
68 plt.show()

 (2)

 1 import cv2
 2 
 3 img     = cv2.imread('car.png')
 4 
 5 img_BGR = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
 6 img_HSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
 7 
 8 cv2.imshow('origin_img',img)
 9 cv2.imshow('BGR_img',img_BGR)
10 cv2.imshow('HSV_img',img_HSV)
11 
12 cv2.waitKey(0)
13 cv2.destroyAllWindows()

 

标签:plt,img,imshow,练习,cv2,Opencv,实例,图像,car
From: https://www.cnblogs.com/Zhouce/p/17867794.html

相关文章

  • 通过Span实现高性能数组,实例解析
    Span<T>是C#7.2引入的一个强大的数据结构,用于表示内存中的一块连续数据。它可以用于实现高性能的数组操作,而无需额外的内存分配。在本文中,我将详细介绍如何使用Span<T>来实现高性能数组操作,并提供一些示例代码来说明其用法。什么是Span?Span<T>是System.Memory命名空间......
  • 【Python】【OpenCV】轮廓检测
    Code:1importcv22importnumpyasnp34img=np.zeros((200,200),dtype=np.uint8)5img[50:150,50:150]=25567#ret,thresh=cv2.threshold(img,127,255,0)8contours,hierarchy=cv2.findContours(img,cv2.RETR_TREE,cv2.CHAIN_APPROX......
  • 2023.11.30 练习
    CF1887C首先容易想到区间加需转化为差分,字典序的比较呢就考虑二分哈希。二分第一个不一样的位置,这个位置也一定是差分数组第一个不一样的。把哈希如果放到线段树上,那么在线段树上二分即可。我们依次处理修改的时候,顺便处理当前的最小的字典序。我们这里如果采用主席树,那么会......
  • C++使用OpenSSL实现AES-256-CBC加密解密实例----亲测OK
    //AesUtil.h#ifndef__AES_UTIL_H__#define__AES_UTIL_H__#ifdef__cplusplus//告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的extern"C"{#endifstringUTIL_aes_cbc_encrypt(constunsignedchar*password,unsignedintpassword_byte_len,c......
  • C++使用OpenSSL实现Base64编码、解码实例----亲测OK
    摘自:https://www.dandelioncloud.cn/article/details/1498198300963708930 //Base64Util.h#ifndef__BASE64_UTIL_H__#define__BASE64_UTIL_H__#ifdef__cplusplus//告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的extern"C"{#endifstringUTIL......
  • 找到工程中某模块所有被实例化的地方
    在硬件设计中,系统级环境十分复杂。想要找到某个基本模块被实例化的地方比较简单,全局搜索即可。但是想要将所有的引用路径也一并找到,如果光靠全局搜索,就太复杂了。这种场景下,可以借用仿真工具的搜索功能实现目标。以VCS为例。使用VCS仿真工程,并打开DVE图形界面后。选择Edit/Sea......
  • python计算两个矩形的重叠_python计算两个矩形框重合百分比的实例
    如下所示:defmat_inter(box1,box2):#判断两个矩形是否相交#box=(xA,yA,xB,yB)x01,y01,x02,y02=box1x11,y11,x12,y12=box2lx=abs((x01+x02)/2-(x11+x12)/2)ly=abs((y01+y02)/2-(y11+y12)/2)sax=abs(x01......
  • OpenCV Mat和Bitmap的转换
    最常用的方式是:Cv2.ImRead()可以将位图文件转成Mat数据格式Cv2.ImWrite()可以将Mat数据格式保存到位图文件.不通过读写文件作为转换介质的方法:privatevoidtestMatToPicture(){varmat=Cv2.ImRead("D:\\my_workspace\\opencv\\images\\lena.jpg",ImreadModes.Co......
  • Windows10+Qt+OpenCV出现“ACCESS_MASK”: 不明确的符号
    一、概述背景:Qt+OpenCV一模一样的代码在Mac上运行是正常的,在Windows10上运行就会报一下错误。“ACCESS_MASK”:不明确的符号二、原因及解决方案原因:OpenCV4.5.3的命名空间usingnamespacecv;和windows中的ACCESS_MASK定义冲突,在windows.h头文件中。......
  • Opencv学习笔记(2)
    图像处理是图像识别过程中重要一环,一张图像可能包括海量的不明确的信息,图像处理的目的是消除图像中无关的信息,恢复有用的真实信息,增强有效信息的可检测性,最大限度地简化数据。参考知乎文章链接:https://zhuanlan.zhihu.com/p/547096645主要学习图像处理的一些手段和方法1、图像......