图片处理代码(针对识别前的图片进行处理)

编程入门 行业动态 更新时间:2024-10-26 20:24:39

<a href=https://www.elefans.com/category/jswz/34/1762922.html style=图片处理代码(针对识别前的图片进行处理)"/>

图片处理代码(针对识别前的图片进行处理)

要点:

  • 图片处理汇总


1 代码实现ps魔棒工具,取图片中颜色数值相近的区域

详细代码实现: 可以使用python中的pillow和opencv库去实现图像的读取和处理。 需要把图片转化为像素点的矩阵,然后分析颜色值。 可以使用聚类算法去把像素点分成几个颜色簇,然后分析它们的颜色值相似度,决定哪些簇应该被合并。 在合并像素点之后,再把它们转化为图片,输出结果。

import cv2
from sklearn.cluster import KMeans
from PIL import Image
# 读取图片
img = cv2.imread('image.jpg')# 转化为RGB模式
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# 将图片转化为像素点的矩阵
pixels = img.reshape((-1, 3))# 聚类算法
kmeans = KMeans(n_clusters=10)
kmeans.fit(pixels)# 获取聚类的中心
colors = kmeans.cluster_centers_# 计算相似度,合并颜色簇
tolerance = 50
merged = []
for i, color in enumerate(colors):similar = Falsefor j, merged_color in enumerate(merged):if abs(color[0] - merged_color[0]) < tolerance \and abs(color[1] - merged_color[1]) < tolerance \and abs(color[2] - merged_color[2]) < tolerance:merged[j] = ((color[0] + merged_color[0]) / 2,(color[1] + merged_color[1]) / 2,(color[2] + merged_color[2]) / 2,)similar = Truebreakif not similar:merged.append(color)# 将像素点转化为聚类后的颜色
for i, pixel in enumerate(pixels):for j, color in enumerate(colors):if abs(pixel[0] - color[0]) < tolerance \and abs(pixel[1] - color[1]) < tolerance \and abs(pixel[2] - color[2]) < tolerance:pixels[i] = merged[j]break
# 将像素点转化为图片
new_img = Image.fromarray(pixels.reshape(img.shape))# 显示结果
new_img.show()# 保存结果
new_img.save('output.jpg')

  

2 使用cv2详细代码实现: 根据图片黄色像素值的大小将图片高于平均值的像素点设置为白色,低于平均值的像素点设置为黑色

import cv2
import numpy as np
# 读取图片,并将像素值转换为HSV颜色空间
img = cv2.imread('image.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# 将HSV图像拆分成三个通道
h, s, v = cv2.split(hsv)# 计算黄色像素点的掩膜
yellow_lower = np.array([20, 100, 100], dtype=np.uint8)
yellow_upper = np.array([30, 255, 255], dtype=np.uint8)
yellow_mask = cv2.inRange(hsv, yellow_lower, yellow_upper)# 计算图像平均亮度,并将高于平均值的像素点设置为白色,低于平均值的像素点设置为黑色
mean_value = np.mean(v)
white_value = 255
black_value = 0
result = np.zeros_like(v)
result[v > mean_value] = white_value
result[v <= mean_value] = black_value
# 将黄色像素点的掩膜与平均亮度的结果合并
result = cv2.bitwise_and(result, yellow_mask)# 显示结果
cv2.imshow('Original', img)
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果 还可以

更多推荐

图片处理代码(针对识别前的图片进行处理)

本文发布于:2024-03-23 17:12:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1740735.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图片处理   代码   图片

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!