mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 15:23:05 +04:00
Merge pull request #22750 from zihaomu:improve_blobFromImage
DNN: Add New API blobFromImageParam #22750 The purpose of this PR: 1. Add new API `blobFromImageParam` to extend `blobFromImage` API. It can support the different data layout (NCHW or NHWC), and letter_box. 2. ~~`blobFromImage` can output `CV_16F`~~ ### Pull Request Readiness Checklist See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch - [ ] There is a reference to the original bug report and related work - [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [ ] The feature is well documented and sample code can be built with the project CMake
This commit is contained in:
@@ -119,7 +119,7 @@ class dnn_test(NewOpenCVTests):
|
||||
inp = np.random.standard_normal([1, 2, 10, 11]).astype(np.float32)
|
||||
net.setInput(inp)
|
||||
net.forward()
|
||||
except BaseException as e:
|
||||
except BaseException:
|
||||
return False
|
||||
return True
|
||||
|
||||
@@ -153,6 +153,41 @@ class dnn_test(NewOpenCVTests):
|
||||
target = target.transpose(2, 0, 1).reshape(1, 3, height, width) # to NCHW
|
||||
normAssert(self, blob, target)
|
||||
|
||||
def test_blobFromImageWithParams(self):
|
||||
np.random.seed(324)
|
||||
|
||||
width = 6
|
||||
height = 7
|
||||
stddev = np.array([0.2, 0.3, 0.4])
|
||||
scalefactor = 1.0/127.5 * stddev
|
||||
mean = (10, 20, 30)
|
||||
|
||||
# Test arguments names.
|
||||
img = np.random.randint(0, 255, [4, 5, 3]).astype(np.uint8)
|
||||
|
||||
param = cv.dnn.Image2BlobParams()
|
||||
param.scalefactor = scalefactor
|
||||
param.size = (6, 7)
|
||||
param.mean = mean
|
||||
param.swapRB=True
|
||||
param.datalayout = cv.dnn.DNN_LAYOUT_NHWC
|
||||
|
||||
blob = cv.dnn.blobFromImageWithParams(img, param)
|
||||
blob_args = cv.dnn.blobFromImageWithParams(img, cv.dnn.Image2BlobParams(scalefactor=scalefactor, size=(6, 7), mean=mean,
|
||||
swapRB=True, datalayout=cv.dnn.DNN_LAYOUT_NHWC))
|
||||
normAssert(self, blob, blob_args)
|
||||
|
||||
target2 = cv.resize(img, (width, height), interpolation=cv.INTER_LINEAR).astype(np.float32)
|
||||
target2 = target2[:,:,[2, 1, 0]] # BGR2RGB
|
||||
target2[:,:,0] -= mean[0]
|
||||
target2[:,:,1] -= mean[1]
|
||||
target2[:,:,2] -= mean[2]
|
||||
|
||||
target2[:,:,0] *= scalefactor[0]
|
||||
target2[:,:,1] *= scalefactor[1]
|
||||
target2[:,:,2] *= scalefactor[2]
|
||||
target2 = target2.reshape(1, height, width, 3) # to NHWC
|
||||
normAssert(self, blob, target2)
|
||||
|
||||
def test_model(self):
|
||||
img_path = self.find_dnn_file("dnn/street.png")
|
||||
|
||||
Reference in New Issue
Block a user