解决方法:我正在检测护照的MRZ。我有一个策略,但由于缺少文档,我无法转换以下代码行。我的项目使用OpenCvSharp和NumSharp,这是一个numpy到c的端口。任何帮助都将不胜感激。在
Python代码:
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# smooth the image using a 3x3 Gaussian, then apply the blackhat
# morphological operator to find dark regions on a light background
gray = cv2.GaussianBlur(gray, (3, 3), 0)
blackhat = cv2.morphologyEx(gray, cv2.MORPH_BLACKHAT, rectKernel)
# compute the Scharr gradient of the blackhat image and scale the
# result into the range [0, 255]
gradX = cv2.Sobel(blackhat, ddepth=cv2.CV_32F, dx=1, dy=0, ksize=-1)
gradX = np.absolute(gradX)
(minVal, maxVal) = (np.min(gradX), np.max(gradX))
gradX = (255 * ((gradX - minVal) / (maxVal - minVal))).astype("uint8")
代码:
^{pr2}$//计算blackhat图像的Scharr梯度并缩放 //结果在[0,255]范围内 Cv2.索贝尔(黑帽,格拉德克斯,MatType.CV_32F型,1,0,-1,1,0)
//(minVal, maxVal) = (np.min(gradX), np.max(gradX))
double minVal, maxVal;
gradX.MinMaxLoc(out minVal, out maxVal);
//gradX = (255 * ((gradX - minVal) / (maxVal - minVal))).astype("uint8")
gradX.ConvertTo(gradX, MatType.CV_8U, 255.0 / (maxVal - minVal), -255.0 / minVal);
特别是我在Python代码的最后一行有问题。我不知道如何在c中执行那个计算。我也不确定是否正确地获取了minVal
和{
以下是我最初问题的解决方案:
8位无符号整数是C中的
byte
。您可以这样做:min和max做不了什么,我肯定帮不上忙。在
相关问题 更多 >
编程相关推荐