将符合规定阈值范围内的全部变为1,不符合规定的全部变为0

cb = newimge[1, :]
cr = newimge[2, :]
binary = np.logical_and(np.logical_and(np.logical_and(cb < 127,cb > 100), cr < 170),cr > 138).astype(np.uint8)*255
binary = binary.reshape(H,W)
img_ycrcb = cv2.cvtColor(image,cv2.COLOR_BGR2YCrCb)
Cr=img_ycrcb[:,:,1]
Cb=img_ycrcb[:,:,2]
binary1 = np.logical_and(np.logical_and(np.logical_and(Cb < 127,Cb > 100), Cr < 170),Cr > 138).astype(np.uint8)*255

在计算机视觉(CV)中,如果你想将一张只有黑白两色的图像转换成黑红二值图像,通常我们会先进行二值化处理,而不是简单的阈值处理。二值化是将图像分成两个离散部分,通常是前景(白色)和背景(黑色)。如果你想要区分的是红色区域,你需要使用特定的颜色空间,如HSV(色度、饱和度、亮度)或HLS(色调、亮度、饱和度),因为它们更有利于颜色的识别。 以下是一个基本步骤: 1. **读取和转换图像**:使用OpenCV库加载图像,并将其从BGR色彩空间转换到HSV或LUV等更适合颜色检测的空间。 ```python import cv2 import numpy as np img = cv2.imread('input_bw_image.jpg', cv2.IMREAD_GRAYSCALE) ``` 2. **设阈值**:在HSV或LUV空间中,你可以设定一个范围来识别红色。比如对于HSV,红色大约在(0, 50, 50)到(10, 255, 255)之间。使用`inRange()`函数来创建一个新的二值图像,其中包含在这个范围内的像素。 ```python lower_red = np.array([0, 50, 50]) upper_red = np.array([10, 255, 255]) mask = cv2.inRange(img, lower_red, upper_red) ``` 3. **合并原图和二值掩码**:将结果应用到原始图像上,只保留红色区域。 ```python output = cv2.bitwise_and(img, img, mask=mask) ``` 4. **显示结果** 或保存处理后的图像。 ```python cv2.imshow("Output", output) cv2.waitKey(0) cv2.destroyAllWindows() ``` 请注意,这种方法依赖于输入图像中的红色是否足够鲜明且对比明显。如果红色不够突出或者有干扰色,效果可能会受到影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>