似乎Adobe Photoshop通过根据指定的级别数量分别量化每个颜色通道来进行分色.因此,例如,如果指定2个级别,则它将采用R值,如果R值小于128则将其设置为0或者如果值> = 128则将其设置为255.对于G和B,它将执行相同的操作.
有没有一种有效的方法在使用OpenCV的python中执行此操作,除了迭代每个像素并进行比较并单独设置值?由于OpenCV 2.4中的图像是NumPy ndarray,有没有一种有效的方法可以通过NumPy严格执行此计算?
我有一个图像,我需要将除了绿色和里面的颜色之外的所有颜色都变成黑色。如何使除了绿色以外的所有颜色都变成黑色以及绿色里面是什么颜色?
我已将彩色图像从 RGB 转换为 BGR,并将 BGR 转换为 HSV。我已经根据边界创建了绿色的下部和上部蒙版图像,但是当我显示图像时,除了绿色之外,其他所有内容都是黑色的。绿色矩形内的颜色不显示。
[
]
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower = np.array([69,206,177], dtype = "uint8")
upper = np.array([69,206,177], dtype = "uint8")
green_mask = cv2.inRange(hsv,lower,upper)
green= cv2.bitwise_and(hsv,hsv,mask=green_mask )
cv2.imshow("Show colors in green ",green)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud) 1)我有一个Matrix类
Mat src = imread("/pic.png", 0)
Run Code Online (Sandbox Code Playgroud)
http://i1265.photobucket.com/albums/jj502/anizilla/demo_result.png
我想将上面给出的图像中的所有白色像素替换为黑色.
有没有办法用特定的RGB值替换所有像素?
2)当我使用 -
src.col(0).row(0)
Run Code Online (Sandbox Code Playgroud)
我得到了正确的价值观.有没有办法提取每个RGB通道的值?
3)当我使用 -
src.at<Vec2b>(0,0)[0];
Run Code Online (Sandbox Code Playgroud)
我得到垃圾值(比如.和!).如果我使用,我会得到垃圾值<Vec2d>
但.我用的时候
src.at<Vec2s>(0,0)[0];
Run Code Online (Sandbox Code Playgroud)
我为频道0获得了适当的值,并且,
src.at<Vec2s>(0,0)[1];
src.at<Vec2s>(0,0)[2];
Run Code Online (Sandbox Code Playgroud)
返回垃圾数量