opencv-python统计图像中红色像素点

目录

案列说明 

代码分析及实现

代码自实现


案列说明 

        对于给定的一幅图片,通过读入图片的方式找出图像中的像素点。该方法对于某些工程中获得的图片,检测其中的红色瑕疵线条很有效。

代码分析及实现

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)

你可能感兴趣的:(opencv-python,opencv,计算机视觉,python)