cv2.calcBackProject fails for 3D histograms (Bug #1616)


Added by Sergiu Dotenco about 13 years ago. Updated almost 13 years ago.


Status:Done Start date:2012-02-21
Priority:High Due date:
Assignee:Alexander Shishkov % Done:

0%

Category:python bindings
Target version:2.4.0
Affected version: Operating System:
Difficulty: HW Platform:
Pull request:

Description

When applied to 3D histograms, cv2.calcBackProject fails with the error message

OpenCV Error: Assertion failed (rsz == dims*2 || (rsz == 2 && _1d) || (rsz == 0 && images.depth(0) == CV_8U)) in unknown function, file C:\slave\WinInstallerMegaPack\src\opencv\modules\imgproc\src\histogram.cpp, line 1358
Traceback (most recent call last):
  File "backproject.py", line 17, in <module>
    ranges=ranges, scale=1)
cv2.error: C:\slave\WinInstallerMegaPack\src\opencv\modules\imgproc\src\histogram.cpp:1358: error: (-215) rsz == dims*2 || (rsz == 2 && _1d) || (rsz == 0 && images.depth(0) == CV_8U)

The following example allows to reproduce the problem using the Windows version of OpenCV 2.3.1, Python 2.7 and numpy 1.6.1.
 1import cv, cv2
 2import numpy as np
 3
 4image = cv2.cvtColor(np.zeros((480, 640), dtype=np.uint8), cv.CV_GRAY2BGR)
 5roi = cv2.cvtColor(np.empty((100, 100), dtype=np.uint8), cv.CV_GRAY2BGR)
 6
 7roi[:] = 255
 8
 9dims = 3 # cv2.calcBackProject works if dims is set to a value less than 3
10channels = list(xrange(dims))
11size = [4] * dims
12ranges = [0, 255] * dims
13
14hist = cv2.calcHist([roi], channels=channels, mask=None, histSize=size, ranges=ranges)
15projection = cv2.calcBackProject([image], channels=channels, hist=hist, ranges=ranges, scale=1)


Associated revisions

Revision c9efcf8d
Added by Alexander Shishkov almost 13 years ago

fixed #1616

Revision 0870d3d7
Added by Roman Donchenko over 11 years ago

Merge pull request #1616 from ilya-lavrenov:ocl_cvtColor

Revision e8451848
Added by Alexander Alekhin over 11 years ago

Merge remote-tracking branch 'upstream/2.4' into merge-2.4

  • #1538 from StevenPuttemans:bugfix_3283
  • #1545 from alalek:ocl_test_fix_rng
  • #1551 from alalek:cmake_install_win
  • #1570 from ilya-lavrenov:ipp_warn_fix
  • #1573 from alalek:perf_simple_strategy
  • #1574 from alalek:svm_workaround
  • #1576 from alalek:ocl_fix_cl_double
  • #1577 from ilya-lavrenov:ocl_setto_opencl12
  • #1578 from asmorkalov:android_fd_cp_fix
  • #1579 from ilya-lavrenov:ocl_norm
  • #1582 from sperrholz:ocl-arithm-additions
  • #1586 from ilya-lavrenov:ocl_setto_win_fix
  • #1589 from ilya-lavrenov:pr1582_fix
  • #1591 from alalek:ocl_remove_cl_hpp_h
  • #1592 from alalek:ocl_program_cache_update
  • #1593 from ilya-lavrenov:ocl_war_on_double
  • #1594 from ilya-lavrenov:ocl_perf
  • #1595 from alalek:cl_code_cleanup
  • #1596 from alalek:test_fix_run_py
  • #1597 from alalek:ocl_fix_cleanup
  • #1598 from alalek:ocl_fix_build_mac
  • #1599 from ilya-lavrenov:ocl_mac_kernel_warnings
  • #1601 from ilya-lavrenov:ocl_fix_tvl1_and_sparse
  • #1602 from alalek:ocl_test_dump_info
  • #1603 from ilya-lavrenov:ocl_disable_svm_noblas
  • #1605 from alalek:ocl_fixes
  • #1606 from ilya-lavrenov:ocl_imgproc
  • #1607 from ilya-lavrenov:ocl_fft_cleanup
  • #1608 from alalek:fix_warn_upd_haar
  • #1609 from ilya-lavrenov:ocl_some_optimization
  • #1610 from alalek:ocl_fix_perf_kalman
  • #1612 from alalek:ocl_fix_string_info
  • #1614 from ilya-lavrenov:ocl_svm_misprint
  • #1616 from ilya-lavrenov:ocl_cvtColor
  • #1617 from ilya-lavrenov:ocl_info
  • #1622 from a0byte:2.4
  • #1625 from ilya-lavrenov:to_string

Conflicts:
cmake/OpenCVConfig.cmake
cmake/OpenCVDetectPython.cmake
cmake/OpenCVGenConfig.cmake
modules/core/CMakeLists.txt
modules/nonfree/src/surf.ocl.cpp
modules/ocl/include/opencv2/ocl/ocl.hpp
modules/ocl/include/opencv2/ocl/private/util.hpp
modules/ocl/perf/main.cpp
modules/ocl/src/arithm.cpp
modules/ocl/src/cl_operations.cpp
modules/ocl/src/cl_programcache.cpp
modules/ocl/src/color.cpp
modules/ocl/src/fft.cpp
modules/ocl/src/filtering.cpp
modules/ocl/src/gemm.cpp
modules/ocl/src/haar.cpp
modules/ocl/src/imgproc.cpp
modules/ocl/src/matrix_operations.cpp
modules/ocl/src/pyrlk.cpp
modules/ocl/src/split_merge.cpp
modules/ocl/src/svm.cpp
modules/ocl/test/main.cpp
modules/ocl/test/test_fft.cpp
modules/ocl/test/test_moments.cpp
modules/ocl/test/test_objdetect.cpp
modules/ocl/test/test_optflow.cpp
modules/ocl/test/utility.hpp
modules/python/CMakeLists.txt
modules/ts/include/opencv2/ts.hpp
modules/ts/src/ts_perf.cpp
samples/android/face-detection/jni/DetectionBasedTracker_jni.cpp

History

Updated by Andrey Kamaev about 13 years ago

  • Description changed from When applied to 3D histograms, @cv2.calcBackProject@ fails with the error mes... to When applied to 3D histograms, @cv2.calcBackProject@ fails with the error mes... More

Updated by Alexander Shishkov almost 13 years ago

  • Target version deleted ()

Updated by Alexander Shishkov almost 13 years ago

  • Priority changed from Normal to High

Updated by Alexander Shishkov almost 13 years ago

  • Assignee set to Alexander Shishkov

Updated by Alexander Shishkov almost 13 years ago

Thanks for the report. Fixed in r7701.

  • Status changed from Open to Done

Updated by Alexander Shishkov almost 13 years ago

In my opinion you should use

1ranges = [0, 256] * dims

in your sample.

Updated by Alexander Shishkov almost 13 years ago

  • Target version set to 2.4.0

Updated by Sergiu Dotenco almost 13 years ago

You're right. Thanks for pointing that out.

Also available in: Atom PDF