问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
(840, 1500, 3)
---------------------------------------------------------------------------NameError Traceback (most recent call last)/tmp/ipykernel_100/97020620.py in
6 img = cv2.imread('0.png')
7 print(img.shape)
----> 8 show_cv_img(img)
9 # 显示原始图片
10 img = cv2.resize(img, None, fx=0.3, fy=0.3)
NameError: name 'show_cv_img' is not defined
我的解答思路和尝试过的方法
我想要达到的结果
import numpy as np
import cv2
from matplotlib import pyplot as plt
%matplotlib inline
# 读入图片
img = cv2.imread('0.png')
print(img.shape)
show_cv_img(img)
# 显示原始图片
img = cv2.resize(img, None, fx=0.3, fy=0.3)
rows, cols, channels = img.shape
print(rows, cols, channels)
# 水平方向翻转
Image1 = image[:, ::-1, :]
plt.imshow(image1)
#图片转换为HSV灰度图,转换为hsv灰度图更利于背景的识别
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
plt.imshow(hsv )
#图片二值化处理
lower_blue = np.array([90, 70, 70])
upper_blue = np.array([110, 255, 255])
mask = cv2.inRange(hsv, lower_blue, upper_blue) # 蓝色范围内变白,其余之外全部变黑
#腐蚀膨胀 去除图片中的噪点
erode = cv2.erode(mask, None, iterations=1)
dilate = cv2.dilate(mask, None, iterations=1)
plt.imshow(dilate)
#背景变换,遍历每个像素点,进行颜色的替换
for i in range(rows):
for j in range(cols):
if dilate[i, j] == 255: #像素点为255表示的是白色,此处将白色处的像素点替换为红色
img[i, j] = (0, 0, 255)
show_cv_img(img)