本文共 2289 字,大约阅读时间需要 7 分钟。
直接上图和视频和图吧,UE4里面我是没找到类似这种可以看直方图的,可以看RGB还有照度图,具体作用就是做场景时候有个参考,HDR之前哪里过亮了或者暗了。
使用opencv,还可以再图中绘制出来过亮过暗的区域(我没做,但是思路是检测颜色,默认转HSV然后对超出的RGB进行绘制为否就不绘制,这个判断和思路youtube一抄一大把我就不贴代码了)。
上面括号里说的内容,类似unity的这个,过亮区域会涂一个颜色,这个思路下面补充一下:
补充下思路,首先这个rgb是在0-255里的,有一个最低rgb,一个最高rgb,比如红色最低是160-180,用判断,如果高于或者低于就这个颜色x一个数值标记这个mask区域,在opencv很多例子里有。
2020.4.17更新,举例最亮最暗识别区代码,GIF图可能看的不是很清晰:
#亮度的识别区间 light_low = np.array([222,222,222]) light_high = np.array([255,255,255]) lightMask = cv2.inRange(SourceImage,light_low,light_high) lightOut = cv2.bitwise_and(SourceImage,SourceImage,mask=lightMask) res = cv2.addWeighted(src1=SourceImage,alpha=1,src2=lightOut,beta=2,gamma=0.22)
最开始的RGB 灰度histogram直接给代码:
import numpy as npfrom PIL import ImageGrabimport cv2import matplotlib.pyplot as plt#1.2参数用来调整从屏幕左上角的xy偏移值CaptureSize=(345,75,1495,755)#绘制RGBdef calcAndDrawHist(image, color): hist= cv2.calcHist([image], [0], None, [256], [0.0,255.0]) minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(hist) histImg = np.zeros([256,256,3], np.uint8) hpt = int(0.9* 256); for h in range(256): intensity = int(hist[h]*hpt/maxVal) cv2.line(histImg,(h,256), (h,256-intensity), color) return histImgwhile True: #捕获原始图像 screen=np.asarray(ImageGrab.grab(bbox=CaptureSize)) #对原始图像颜色空间转换 screen = cv2.cvtColor(screen,cv2.COLOR_BGR2RGB) #写入文件与显示图像 cv2.imwrite("ImageCache.jpg",screen,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) cv2.imshow("ImageHistogram",screen) #复制原始图像 original_img = cv2.imread("ImageCache.jpg") #设置图像的尺寸与cv插值 img = cv2.resize(original_img,None,fx=0.6,fy=0.6,interpolation = cv2.INTER_CUBIC) #分离通道,进行绘制 b, g, r = cv2.split(img) #灰度图 gray = cv2.imread("ImageCache.jpg",cv2.IMREAD_GRAYSCALE) histImgB = calcAndDrawHist(b, [255, 0, 0]) histImgG = calcAndDrawHist(g, [0, 255, 0]) histImgR = calcAndDrawHist(r, [0, 0, 255]) histImgLM = calcAndDrawHist(gray, [128, 128, 128]) #绘制直方图 cv2.imshow("R Channel", histImgR) cv2.imshow("G Channel", histImgG) cv2.imshow("B Channel", histImgB) cv2.imshow("Gray Channel", histImgLM) if cv2.waitKey(25)==ord("q"): cv2.destroyAllWindows() break
5月3号更新:
反正就看评论吧。。。。 这个就当瞎折腾玩好了。。。
转载地址:http://rzima.baihongyu.com/