Bug 991552

Summary: Please update to OpenCV 2.4.6
Product: [Fedora] Fedora Reporter: Mykola Dvornik <mykola.dvornik>
Component: opencvAssignee: Nicolas Chauvet (kwizart) <kwizart>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: 19CC: hhorak, i, karlthered, kwizart, nomis80
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: opencv-2.4.6.1-1.fc18 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-09-06 16:08:16 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
A simple C code that invokes OpenCV Video API none

Description Mykola Dvornik 2013-08-02 17:38:32 UTC
Description of problem:
 
Cannot use OpenCV C API in full 

Version-Release number of selected component (if applicable):

2.4.5-1.fc19

How reproducible:

Persistent

Steps to Reproduce:
1. create OpenCV "Hello world"
2. Include 'opencv2/video/video.hpp' (there is no C header)
3. Compile

Actual results:

/usr/include/opencv2/video/background_segm.hpp:47:10: fatal error: 'list' file not found

Expected results:

Successful compilation

Additional info:

Fixed in OpenCV 2.4.6

Comment 1 Nicolas Chauvet (kwizart) 2013-08-02 22:04:36 UTC
For the record, which package failed to build from source ?

Comment 2 Mykola Dvornik 2013-08-02 22:48:39 UTC
It is not about compiling OpenCV from sources. It is about the fact that in OpenCV 2.4.5 Video C API is wrapped into C++ headers. So it is not possible to use OpenCV Video API from C program (it fails with aforementioned error). In OpenCV 2.4.6 they splat C and C++ headers, just like it has already been done for Highgui, Image and Core.

Comment 3 Nicolas Chauvet (kwizart) 2013-08-03 12:48:04 UTC
I really need you to anwear my question, not a question that you have invented.

Can you please tell me the exact software in the fedora collection or elsewhere that is actually failing to build with opencv 2.4.5 ? That's required for me to reproduce the problem. Also, would you point me to the upstream fixing commit or bugtracker ?

Comment 4 Mykola Dvornik 2013-08-03 16:08:44 UTC
Created attachment 782331 [details]
A simple C code that invokes OpenCV Video API

Comment 6 Nicolas Chauvet (kwizart) 2013-08-03 16:12:30 UTC
well, I'm out of time, so I cannot check. 
opencv 2.4.6.1 was already prepared and I've just kicked the build.
Please test and report in the ticket.

Comment 7 Fedora Update System 2013-08-03 16:13:58 UTC
opencv-2.4.6.1-1.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/opencv-2.4.6.1-1.fc19

Comment 8 Fedora Update System 2013-08-03 16:24:33 UTC
opencv-2.4.6.1-1.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/opencv-2.4.6.1-1.fc18

Comment 9 Fedora Update System 2013-08-04 00:02:45 UTC
Package opencv-2.4.6.1-1.fc18:
* should fix your issue,
* was pushed to the Fedora 18 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing opencv-2.4.6.1-1.fc18'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2013-14185/opencv-2.4.6.1-1.fc18
then log in and leave karma (feedback).

Comment 10 Mykola Dvornik 2013-08-04 08:31:34 UTC
(In reply to Nicolas Chauvet (kwizart) from comment #6)
> well, I'm out of time, so I cannot check. 
> opencv 2.4.6.1 was already prepared and I've just kicked the build.
> Please test and report in the ticket.

tracking_c.h is still missing from /usr/include/opencv2/video

Please look at the aforementioned commit.

Comment 11 Michael Schwendt 2013-08-04 08:45:05 UTC
There must be another story, because the package includes these two directories completely:

  %files devel
  %{_includedir}/opencv
  %{_includedir}/opencv2
  ...

  http://pkgs.fedoraproject.org/cgit/opencv.git/plain/opencv.spec

If a header file is missing (and it doesn't appear in the build.log either), find out what's wrong. Btw:

  $ tar xfJ opencv-clean-2.4.6.1.tar.xz
  $ cd opencv-2.4.6.1
  $ find|grep tracking_c
  $

Comment 12 Michael Schwendt 2013-08-04 09:05:08 UTC
Oh, and although I don't have anything to do with opencv packaging at Fedora, this raised my interest.

The C example source from comment 4 wouldn't even compile:
ocv-contr.c:109:13: error: ‘refresh’ was not declared in this scope

And:

> /usr/include/opencv2/video/background_segm.hpp:47:16: fatal error: 
> list: No such file or directory
> #include <list>

No way that could work with a C compiler, because <list> is a C++ Standard Library header that gets included here by opencv internally.

Just for kicks, I can compile the example after switching to g++, <cmath> and commenting out the undeclared variable:

  $ g++ ocv-contr.c -o ocv-contr $(pkg-config --cflags --libs opencv) -lX11
  $

Back to the drawing board it seems.

  $ rpm -ql opencv-devel|grep video/
  /usr/include/opencv2/video/background_segm.hpp
  /usr/include/opencv2/video/tracking.hpp
  /usr/include/opencv2/video/video.hpp

Comment 13 Mykola Dvornik 2013-08-04 11:21:21 UTC
Yes indeed tracking_c.h is missing from the sources archive. Reported upstream.

Comment 14 Mykola Dvornik 2013-08-04 16:34:01 UTC
BTW, compiling and installing from git exposes tracking_c.h. Maybe it would be a good idea to clone in the spec file and checkout to the version tag?

Comment 15 Michael Schwendt 2013-08-04 17:03:31 UTC
Could you add a link to the ticket you've opened?

Pristine opencv-2.4.6.1.tar.gz does not contain tracking_c.h and does not include it anywhere either.

Updating to a git snapshot would involve creating a snapshot tarball and shipping that one: https://fedoraproject.org/wiki/Packaging:SourceURL
In the build system there may not be network access, btw, so packages must not try to download anything.

Comment 17 Michael Schwendt 2013-08-05 11:21:46 UTC
According to the response, it would be NOTABUG here at Fedora. Request to update to 2.4.6 and the compile problem are unrelated.

Comment 18 Mykola Dvornik 2013-08-05 11:34:45 UTC
Agree. The only way to use OpenCV Video API in C is to compile OpenCV from git.

Comment 19 Fedora Update System 2013-09-24 22:54:31 UTC
opencv-2.4.6.1-1.fc19 has been pushed to the Fedora 19 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 20 Fedora Update System 2013-10-04 01:52:25 UTC
opencv-2.4.6.1-1.fc18 has been pushed to the Fedora 18 stable repository.  If problems still persist, please make note of it in this bug report.