跳至主要內容
Image processing

基于opencv课程设计,分两个部分,一个是根据要求将图像素材进行基础的函数处理,第二部分开发综合图像处理软件

第一部分 图像基础操作

1.1 返回图中的饮料瓶个数,选出容量少的那一瓶饮料,用绿色填充液体部分

(1)思路

操作一:返回饮料瓶个数

  • 加载灰度图像,并图像二值化处理,将非黑色像素设置成白色,能够很好的排除瓶子液体部分的干扰
  • 使用cv2.filter2D 和一个锐化核对图像进行锐化处理
  • 提取边缘:使用 cv2.Canny 提取图像的边缘
  • 寻找轮廓:使用 cv2.findContours 寻找边缘图像中的轮廓
  • 轮廓数组的长度就是拼字的个数

LPrincess大约 18 分钟image
Image processing(非线性对比度增强算法)

题目:

查阅资料,完成1-2种图像灰度变换或图像增强的算法,完成一份实验PPT 。
PPT主要内容包括:

(1)理论方法介绍;
(2)实验代码(截图+源码,其中源码可以放在截图页的备注框)
(3)实验结果;
(4)其他你想说明的内容。

LPrincess大约 9 分钟image
Image processing(放大缩小)

放大缩小

OpenCV: cv2.resize() 可以通过指定目标图像的大小来进行图像的放大和缩小。

上课方法:

img1 = cv2.imread("ch.jpg",-1)

# 获取行跟列,长跟宽
h,w = img1.shape[:2]  
print(h*3,w*2.8)
# 1:1 
out = cv2.resize(img1,(w,h))  

# resize()
# 指定宽高像素  
out = cv2.resize(img1,(24,50))  

# 按比例(整数)  
out = cv2.resize(img1,(2*w,2*h))  
print(out.shape[:2])  

# 按比例(小数)强制类型转换  
out = cv2.resize(img1,(int(2.5*w),2*h))  
print(out.shape[:2])  

# 按倍数放大,倍数是小数  
out = cv2.resize(img1,None,fx=2.8,fy=3)  
print(out.shape[:2])  
  
cv2.imwrite("out.jpg",out)

LPrincess大约 5 分钟image
Image processing(平移)

上课方法:OpenCV: cv2.warpAffine() 函数实现图像的平移操作。使用仿射变换矩阵来指定平移量。

img1 = cv2.imread("lenna.bmp",-1)  
h,w = img1.shape[:2]  
# 水平50 垂直150  
m = np.float32([[1,0,50],[0,1,150]])  
# 不扩大画布平移  
# out = cv2.warpAffine(img1,m,(w,h))  
# 扩大画布平移  
out = cv2.warpAffine(img1,m,(w+50,h+150))  

cv2.imwrite("out.jpg",out)

LPrincess大约 3 分钟image