Bug:cv2.imshow颜色只能展示黑白

问题

最近在jupyter notebook中使用opencv时候,发现一个问题,就是在使用cv2.imshow()展示图片的时候,有添加一些颜色操作的地方,显示的时候一直是黑白的颜色,不管如何设置颜色三色素的组合排列[0, 255, 0]等。

原因

原因是图像读入的时候是使用的cv2.imread('xxxx.jpg', 0)
最开始就直接读成了灰度图,再次对其进行颜色操作的时候只能是两个通道,没有三个通道的元素进行组合,所以导致显示的是灰度图

import cv2
img = cv2.imread('approx.png', 0)
rows, cols = img.shape[:2]
ret, thresh = cv2.threshold(img, 127, 250, 0)
cnt, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
[vx,vy,x,y] = cv2.fitLine(cnt[0], cv2.DIST_L2, 0,0.01,0.01)
lefty = int((-x*vy/vx) + y)
righty = int(((cols-x)*vy/vx)+y)
cv2.line(img,(cols-1,righty),(0,lefty),(255,255,0),2)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
 

在这里插入图片描述

解决方法

先完全读入彩色图,之后使用cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)转成灰度图,绘图的时候还是针对原始彩色图进行处理

import cv2
img = cv2.imread('approx.png')
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
rows, cols = img.shape[:2]
ret, thresh = cv2.threshold(img_gray, 127, 250, 0)
cnt, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
[vx,vy,x,y] = cv2.fitLine(cnt[0], cv2.DIST_L2, 0,0.01,0.01)
lefty = int((-x*vy/vx) + y)
righty = int(((cols-x)*vy/vx)+y)
cv2.line(img,(cols-1,righty),(0,lefty),(0,255,0),2)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值