Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0638
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---
- 上次我们研究了滚动条
- 可以控制画面不同的
- 还可以有什么样具体的应用吗?
import cv2
image = cv2.imread("/home/shiyanlou/gourd.png")
cv2.imshow("image",image)
hsv_image = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
cv2.imshow("hsv_image",hsv_image)
print(hsv_image)
cv2.waitKey()
cv2.destroyAllWindows()

import cv2
image = cv2.imread("/home/shiyanlou/gourd.png")
cv2.imshow("image",image)
hsv_image = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv_image)
cv2.imshow("hue",h)
cv2.imshow("saturation",s)
cv2.imshow("velocity",v)
cv2.waitKey()
cv2.destroyAllWindows()

| 简写 |
名称 |
含义 |
| H |
Hue |
色相 |
| S |
Saturation |
饱和度 |
| V |
Value |
亮度 |
import cv2
image = cv2.imread("/home/shiyanlou/gourd.png")
cv2.imshow("image",image)
hsv_image = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv_image)
h[:,:] = 180
hsv = cv2.merge([h,s,v])
new_image = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("new_image",new_image)
cv2.waitKey()
cv2.destroyAllWindows()

import cv2
image = cv2.imread("/home/shiyanlou/gourd.png")
cv2.imshow("image",image)
hsv_image = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv_image)
print(h)
h[:,:] = (h[:,:] + 90) % 180
hsv = cv2.merge([h,s,v])
new_image = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("new_image",new_image)
cv2.waitKey()
cv2.destroyAllWindows()

import cv2
image = cv2.imread("/home/shiyanlou/gourd.png")
cv2.imshow("image",image)
hsv_image = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv_image)
s[:,:] = 100
hsv = cv2.merge([h,s,v])
new_image = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("s = 100,new_image)
h,s,v = cv2.split(hsv_image)
s[:,:] = 0
hsv = cv2.merge([h,s,v])
new_image = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("s = 0",new_image)
cv2.waitKey()
cv2.destroyAllWindows()

import cv2
image = cv2.imread("/home/shiyanlou/gourd.png")
cv2.imshow("image",image)
hsv_image = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv_image)
v[:,:] = 255
hsv = cv2.merge([h,s,v])
new_image = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow("new_image",new_image)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
import numpy as np
#trackbar callback fucntion to update HSV value
def callback(x):
S = cv2.getTrackbarPos('S','controls')
print("S========",type(S),S)
#read source image
img = cv2.imread("/home/shiyanlou/gourd.png")
#convert sourece image to HSC color mode
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h,s,v = cv2.split(hsv)
s[:,:] = S
cv2.imshow('img',img)
hsv = cv2.merge([h,s,v])
new_image = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow('controls',new_image)
#create a seperate window named 'controls' for trackbar
cv2.namedWindow('controls',2)
cv2.resizeWindow("controls", 550,200);
#create trackbars for high,low H,S,V
cv2.createTrackbar('S','controls',0,255,callback)
while(True):
#waitfor the user to press escape and break the while loop
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
#destroys all window
cv2.destroyAllWindows()

import cv2
import numpy as np
#trackbar callback fucntion to update HSV value
def callback(x):
global H_low,H_high,S_low,S_high,V_low,V_high
H_low = cv2.getTrackbarPos('low H','controls')
H_high = cv2.getTrackbarPos('high H','controls')
S_low = cv2.getTrackbarPos('low S','controls')
S_high = cv2.getTrackbarPos('high S','controls')
V_low = cv2.getTrackbarPos('low V','controls')
V_high = cv2.getTrackbarPos('high V','controls')
#create a seperate window named 'controls' for trackbar
cv2.namedWindow('controls',2)
cv2.resizeWindow("controls", 550,200);
#global variable
H_low = 0
H_high = 179
S_low= 0
S_high = 255
V_low= 0
V_high = 255
#create trackbars for high,low H,S,V
cv2.createTrackbar('low H','controls',0,179,callback)
cv2.createTrackbar('high H','controls',179,179,callback)
cv2.createTrackbar('low S','controls',0,255,callback)
cv2.createTrackbar('high S','controls',255,255,callback)
cv2.createTrackbar('low V','controls',0,255,callback)
cv2.createTrackbar('high V','controls',255,255,callback)
while(1):
#read source image
img = cv2.imread("/home/shiyanlou/gourd.png")
#convert sourece image to HSC color mode
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
#
hsv_low = np.array([H_low, S_low, V_low], np.uint8)
hsv_high = np.array([H_high, S_high, V_high], np.uint8)
#making mask for hsv range
mask = cv2.inRange(hsv, hsv_low, hsv_high)
print (mask)
#masking HSV value selected color becomes black
res = cv2.bitwise_and(img, img, mask=mask)
#show image
cv2.imshow('mask',mask)
cv2.imshow('res',res)
#waitfor the user to press escape and break the while loop
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
#destroys all window
cv2.destroyAllWindows()

| 简写 |
名称 |
含义 |
| H |
Hue |
色相 |
| S |
Saturation |
饱和度 |
| V |
Value |
亮度 |
- 可以通过滑块对于HSV的图像进行控制
- 还有什么可以玩的东西吗?🤔
- 我们下次再说 👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。