相关文章推荐
想发财的炒粉  ·  conversion from ...·  2 周前    · 
近视的苦瓜  ·  c++ ...·  1 周前    · 
霸气的煎饼  ·  在 Windows ...·  1 年前    · 
打篮球的香烟  ·  在 Ubuntu 中修复 ...·  1 年前    · 
礼貌的小熊猫  ·  c# - How convert a ...·  1 年前    · 
IMAGE_PATHS = [ "green1.jpg" , "green2.jpg" , "green3.jpg" ] lower_green = np . array ( [ 35 , 43 , 46 ] ) upper_green = np . array ( [ 77 , 255 , 255 ] ) # lower_blue = np.array([78, 43, 46]) # upper_blue = np.array([110, 255, 255]) if __name__ == "__main__" : # img_path = "Picture7.jpg" for image_path in IMAGE_PATHS : image = cv2 . imread ( image_path ) cv2 . namedWindow ( "image" , cv2 . WINDOW_NORMAL ) cv2 . imshow ( "image" , image ) hsv = cv2 . cvtColor ( image , cv2 . COLOR_BGR2HSV ) # mask = cv2.inRange(hsv, lower_green,upper_green) mask = cv2 . inRange ( hsv , lower_green , upper_green ) mask = cv2.inRange(hsv, lower_red, upper_red) 第一个参数:hsv指的是原图 第二个参数:lower_red指的是图像中低于这个lower_red的值,图像值变为0 第三个参数:upper_red指的是图像中高于这个upper_red的值,图像值变为0 # cv2.namedWindow("mask", cv2.WINDOW_NORMAL) # cv2.imshow("mask", mask) ret , binary = cv2 . threshold ( mask , 0 , 255 , cv2 . THRESH_BINARY ) res = cv2 . bitwise_and ( image , image , mask = ~ mask ) cv2 . namedWindow ( "result" , cv2 . WINDOW_NORMAL ) cv2 . imshow ( 'result' , res ) cv2 . waitKey ( 0 ) cv2 . destroyAllWindows ( ) import cv2import numpy as npIMAGE_PATHS = ["green1.jpg", "green2.jpg", "green3.jpg"]lower_green = np.array([35, 43, 46])upper_green = np.array([77, 255, 255])# lower_blue = np.array([78, 43, 46])# upper_blue = np.array([110, 255, 255])if __name__
opencv读入JPG 图片 的颜色顺序是BGR(blue, green, red) skimage读入JPG 图片 颜色顺序是 RGB matplotlib在plt的时候是默认 RGB 显示的,所以 img = cv2.imread(path) img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) print(img) plot.imshow(img) plot.show() 此时显示的 图片 依旧是 绿色 的 代码改成: img = cv2.imread(path) # 读取 图片
opencv去除 图片 某一颜色(python实现) 一 打开 图片 ​ 打开 图片 的时候最好使用windows自带的“画图”软件查看(在画图软件下通过句柄精灵获得点的 RGB 值与opencv 获得的是一样的),在“画图”的左下角可以看到图像 某个点的坐标值如(344,123),如果要在opencv 处理该点的话,需要把坐标值反一下即 img[123, 344]才能取得该点 二 使用句柄精灵等软件获得想要改变的颜色的 RGB 值 ​ 需要注意的是opencv 的R与B通道是反着的(后面代码 有相应说明)
实际对 图片 进行处理的时候,经常会碰到单一颜色背景的情况,这时候就可以采用图像处理的方法,将该单一颜色去除,形成一个透明的 图片 。如果需要,还可以加上新的背景图, 图片 就焕然一新了。 删除 图片 某种颜色,Pillow或OpenCV都可以实现。实现的思路都是一致的,就是将 图片 转换为带透明通道的格式,然后设置透明度为0。 Pillow库的实现,采用image.convert(' RGB A'),然后查找相应的颜色,最后设置透明通道为0 OpenCV库的实现,采用cv2.cvtColor(img1, cv2.COLOR
OpenCV 学习笔记(提取图像 特点颜色) 我们经常需要提取图像 某种特殊颜色的区域,比如黄色或者红色区域。如果只是提取特点的颜色,那么很简单,直接做颜色比较就可以了。如果要选取某个颜色范围,这个工作在 RGB 空间 就不是那么方便了。这时我们通常会选取 HSV 或类似的颜色空间。 关于 HSV 空间的介绍网上有很多,这里就不详细写了。但是可以认为 Hue 表示颜色,Saturation 表示颜色的饱和度,Brightness 是亮度。选取颜色范围时我们通常用 Hue 和 Sat 两个维度。下面是在网上
# 将灰度图像进行二值化处理 ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # 对二值化图像进行形态学操作,去除噪点 kernel = np.ones((3,3), np.uint8) opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2) # 找到轮廓 contours, hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 循环遍历每个轮廓 for contour in contours: # 计算轮廓面积 area = cv2.contourArea(contour) if area < 100: continue # 找到轮廓的外接矩形 x, y, w, h = cv2.boundingRect(contour) # 裁剪出数字图像 digit_roi = opening[y:y+h, x:x+w] # 调整数字图像大小 resized_digit_roi = cv2.resize(digit_roi, (28, 28)) # 将数字图像转化为 MNIST 数据集的格式 mnist_digit = resized_digit_roi.reshape(1, 28, 28, 1).astype('float32') / 255.0 # 使用训练好的模型进行数字识别 prediction = model.predict(mnist_digit) digit = np.argmax(prediction) # 在原图像上绘制识别结果 cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) cv2.putText(img, str(digit), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2) # 显示结果图像 plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2 RGB )) plt.show() 该代码使用了OpenCV库对银行卡数字进行了识别。其 ,首先读取了银行卡图像,然后将图像转化为灰度图像,再进行二值化处理,去除噪点,找到数字轮廓,裁剪数字图像,将数字图像转化为MNIST数据集的格式,使用训练好的模型进行数字识别,最后在原图像上绘制识别结果。需要注意的是,该代码 的模型需要自己训练或者使用已经训练好的模型进行识别。