目录
案列说明
代码分析及实现
代码自实现
对于给定的一幅图片,通过读入图片的方式找出图像中的像素点。该方法对于某些工程中获得的图片,检测其中的红色瑕疵线条很有效。
OpenCV-Python提供了一个功能强大的库来处理图像。要统计图像中的红色像素点个数,可以使用以下步骤进行实现:
1.导入必要的库和模块:
import numpy as np
import cv2
2.读取图像并转换为HSV色彩空间:
image = cv2.imread("image.jpg")
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
3.定义红色的HSV范围(根据实际需求调整范围):
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
4.创建一个掩码,在HSV图像中提取红色区域:
mask = cv2.inRange(hsv_image, lower_red, upper_red)
5.统计红色像素点的个数:
red_pixels = cv2.countNonZero(mask)
6.打印结果:
print("红色像素点个数:", red_pixels)
完整的代码示例:
import numpy as np
import cv2
image = cv2.imread("image.jpg")
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
mask = cv2.inRange(hsv_image, lower_red, upper_red)
red_pixels = cv2.countNonZero(mask)
print("红色像素点个数:", red_pixels)
以上代码将读取名为"image.jpg"的图像文件,统计其中红色像素点的个数,并将结果打印出来。你可以根据自己的需要修改图像文件的路径和红色的HSV范围。
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 22 10:56:24 2021
@author: Administrator
"""
import cv2
import numpy as np
import matplotlib.pyplot as plt
#img = cv2.imread("test.png")
img = cv2.imread("3.jpg")
img_hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
'''
lower_blue = np.array([100, 30, 100])
upper_blue = np.array([150, 255, 255])
'''
lower_red = np.array([110, 30, 100])
upper_red = np.array([150, 255, 255])
'''
lower_red = np.array([156, 43, 46])
upper_red = np.array([180, 255, 255])
'''
mask = cv2.inRange(img_hsv, lower_red, upper_red)
res = cv2.bitwise_and(img, img, mask=mask)
r, g, b = cv2.split(res)
r_num = 0
for i in r:
for j in i:
if j > 85:
r_num += 1
cv2.imshow('img', img)
cv2.imshow("mask", mask)
cv2.imshow("res", res)
cv2.imwrite('mask.jpg',mask)
cv2.imwrite('res.jpg',mask)
if(r_num>30):
print("该图片已经标记,NG!")
else:
print("该图片未标记,OK")
print(r_num)
cv2.waitKey(0)