Skip to content

Commit 8b34651

Browse files
authored
Merge pull request #52 from k-okada/add_image_beta
AddingImages: enable to set beta param if use_data is true
2 parents 8152008 + 032627d commit 8b34651

File tree

6 files changed

+60
-11
lines changed

6 files changed

+60
-11
lines changed

CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ project(opencv_apps)
44
find_package(catkin REQUIRED COMPONENTS cv_bridge dynamic_reconfigure message_generation image_transport nodelet roscpp)
55

66
find_package(OpenCV REQUIRED)
7+
message(STATUS "OpenCV VERSION: ${OpenCV_VERSION}")
78
message(STATUS "OpenCV Components: ${OpenCV_LIB_COMPONENTS}")
89
if(OpenCV_VERSION VERSION_LESS "3.0" OR TARGET opencv_optflow)
910
set(OPENCV_HAVE_OPTFLOW TRUE)
@@ -14,6 +15,14 @@ endif()
1415
if(cv_bridge_VERSION VERSION_LESS "1.11.9")
1516
add_definitions("-DCV_BRIDGE_COMPRESSED_IMAGE_IS_NOT_SUPPORTED")
1617
endif()
18+
# Supporting CvtColorForDisplay in cv_bridge has been started from 1.11.9 (2015-11-29)
19+
if(cv_bridge_VERSION VERSION_LESS "1.11.9")
20+
add_definitions("-DCV_BRIDGE_CVT_COLOR_FOR_DISPLAY_IS_NOT_SUPPORTED")
21+
endif()
22+
# Supporting CvtColorForDisplayOptions in cv_bridge has been started from 1.11.13 (2016-07-11)
23+
if(cv_bridge_VERSION VERSION_LESS "1.11.13")
24+
add_definitions("-DCV_BRIDGE_CVT_COLOR_FOR_DISPLAY_OPTION_IS_NOT_SUPPORTED")
25+
endif()
1726

1827
# generate the dynamic_reconfigure config file
1928
generate_dynamic_reconfigure_options(

cfg/AddingImages.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ gen = ParameterGenerator()
99
gen.add("use_camera_info", bool_t, 0, "Indicates that the camera_info topic should be subscribed to to get the default input_frame_id. Otherwise the frame from the image message will be used.", True)
1010

1111
gen.add("alpha", double_t, 0, "weight of the first array elements.", 0.5, 0.0, 1.0)
12+
gen.add("auto_beta", bool_t, 0, "True: Automatically set beta weight as 1 - alpha, False: Use user defined beta weight", True)
13+
gen.add("beta", double_t, 0, "weight of the second array elements.", 0.5, 0.0, 1.0)
1214
gen.add("gamma", double_t, 0, "scalar added to each sum.", 0, 0, 255)
1315

1416
exit(gen.generate(PACKAGE, "adding_images", "AddingImages"))

launch/face_detection.launch

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
<launch>
22
<arg name="node_name" default="face_detection" />
33
<arg name="use_opencv3" default="false" />
4+
<arg name="use_opencv3_1" default="false" />
5+
<arg name="use_opencv3_2" default="$(arg use_opencv3)" />
46

57
<arg name="image" default="image" doc="The image topic. Should be remapped to the name of the real image topic." />
68

79
<arg name="use_camera_info" default="false" doc="Indicates that the camera_info topic should be subscribed to to get the default input_frame_id. Otherwise the frame from the image message will be used." />
810
<arg name="debug_view" default="true" doc="Specify whether the node displays a window to show edge image" />
911

10-
<arg if="$(arg use_opencv3)"
12+
<arg if="$(arg use_opencv3_1)"
1113
name="face_cascade_name" default="$(find opencv3)/../OpenCV-3.1.0-dev/haarcascades/haarcascade_frontalface_alt.xml" doc="Face dtection cascade Filename" />
12-
<arg if="$(arg use_opencv3)"
14+
<arg if="$(arg use_opencv3_1)"
1315
name="eyes_cascade_name" default="$(find opencv3)/../OpenCV-3.1.0-dev/haarcascades/haarcascade_eye_tree_eyeglasses.xml" doc="Eye dtection cascade Filename" />
16+
<arg if="$(arg use_opencv3_2)"
17+
name="face_cascade_name" default="$(find opencv3)/../OpenCV-3.2.0-dev/haarcascades/haarcascade_frontalface_alt.xml" doc="Face dtection cascade Filename" />
18+
<arg if="$(arg use_opencv3_2)"
19+
name="eyes_cascade_name" default="$(find opencv3)/../OpenCV-3.2.0-dev/haarcascades/haarcascade_eye_tree_eyeglasses.xml" doc="Eye dtection cascade Filename" />
1420
<arg unless="$(arg use_opencv3)"
1521
name="face_cascade_name" default="/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" doc="Face dtection cascade Filename" />
1622
<arg unless="$(arg use_opencv3)"

src/nodelet/adding_images_nodelet.cpp

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ namespace adding_images {
112112
NODELET_DEBUG("Subscribing to image topic.");
113113
sub_image1_.subscribe(*it_, "image1", 3);
114114
sub_image2_.subscribe(*it_, "image2", 3);
115-
sub_camera_info_.subscribe(*pnh_, "info", 3);
115+
sub_camera_info_.subscribe(*nh_, "camera_info", 3);
116116
if (config_.use_camera_info) {
117117
if (approximate_sync_) {
118118
async_with_info_ = boost::make_shared<
@@ -155,7 +155,12 @@ namespace adding_images {
155155
boost::mutex::scoped_lock lock(mutex_);
156156
config_ = config;
157157
alpha_ = config.alpha;
158-
beta_ = 1.0 - alpha_;
158+
if ( config.auto_beta ) {
159+
beta_ = 1.0 - alpha_;
160+
config.beta = beta_;
161+
} else {
162+
beta_ = config.beta;
163+
}
159164
gamma_ = config.gamma;
160165
}
161166

@@ -166,22 +171,41 @@ namespace adding_images {
166171
// Work on the image.
167172
try {
168173
cv::Mat image1 =
169-
cv_bridge::toCvShare(image_msg1, sensor_msgs::image_encodings::BGR8)->image;
174+
cv_bridge::toCvShare(image_msg1, image_msg1->encoding)->image;
170175
cv::Mat image2 =
171-
cv_bridge::toCvShare(image_msg2, sensor_msgs::image_encodings::BGR8)->image;
176+
cv_bridge::toCvShare(image_msg2, image_msg1->encoding)->image;
177+
if (cv_bridge::getCvType(image_msg1->encoding) != cv_bridge::getCvType(image_msg2->encoding)) {
178+
NODELET_ERROR("Encoding of input images must be same type: %s, %s",
179+
image_msg1->encoding.c_str(), image_msg2->encoding.c_str());
180+
return;
181+
}
172182

173183
cv::Mat result_image;
174184
cv::addWeighted(image1, alpha_, image2, beta_, gamma_, result_image);
175185
//-- Show what you got
186+
sensor_msgs::ImagePtr image_msg3 = cv_bridge::CvImage(image_msg1->header,
187+
image_msg1->encoding,
188+
result_image).toImageMsg();
176189
if (debug_view_) {
177190
cv::namedWindow(window_name_, cv::WINDOW_AUTOSIZE);
191+
#ifdef CV_BRIDGE_CVT_COLOR_FOR_DISPLAY_IS_NOT_SUPPORTED
178192
cv::imshow(window_name_, result_image);
193+
#else
194+
#ifdef CV_BRIDGE_CVT_COLOR_FOR_DISPLAY_OPTION_IS_NOT_SUPPORTED
195+
cv::imshow(window_name_, cv_bridge::cvtColorForDisplay(cv_bridge::toCvShare(image_msg3, image_msg3->encoding))->image);
196+
#else
197+
cv_bridge::CvtColorForDisplayOptions options;
198+
if (sensor_msgs::image_encodings::bitDepth(image_msg1->encoding) == 32 ||
199+
sensor_msgs::image_encodings::bitDepth(image_msg1->encoding) == 64) {
200+
// float or double image
201+
options.do_dynamic_scaling = true;
202+
}
203+
cv::imshow(window_name_, cv_bridge::cvtColorForDisplay(cv_bridge::toCvShare(image_msg3), "", options)->image);
204+
#endif
205+
#endif
179206
int c = cv::waitKey(1);
180207
}
181-
// publish bgr8 image
182-
img_pub_.publish(cv_bridge::CvImage(image_msg1->header,
183-
sensor_msgs::image_encodings::BGR8,
184-
result_image).toImageMsg());
208+
img_pub_.publish(image_msg3);
185209

186210
} catch (cv::Exception& e) {
187211
NODELET_ERROR("Image processing error: %s %s %s %i", e.err.c_str(),

test/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ if(cv_bridge_VERSION VERSION_LESS "1.11.9") # hydro skip face_detection.test
3434
elseif(OpenCV_VERSION VERSION_LESS "3.0")
3535
add_rostest(test-face_detection.test ARGS gui:=false)
3636
else()
37-
add_rostest(test-face_detection.test ARGS gui:=false use_opencv3:=true)
37+
if(OpenCV_VERSION VERSION_LESS "3.2")
38+
add_rostest(test-face_detection.test ARGS gui:=false use_opencv3:=true use_opencv3_1:=true)
39+
else()
40+
add_rostest(test-face_detection.test ARGS gui:=false use_opencv3:=true use_opencv3_2:=true)
41+
endif()
3842
endif()
3943
add_rostest(test-goodfeature_track.test ARGS gui:=false)
4044
add_rostest(test-corner_harris.test ARGS gui:=false)

test/test-face_detection.test

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
<launch>
22
<arg name="gui" default="true" />
33
<arg name="use_opencv3" default="false" />
4+
<arg name="use_opencv3_1" default="false" />
5+
<arg name="use_opencv3_2" default="false" />
46
<node name="play_face_bag" pkg="rosbag" type="play" args="-l $(find opencv_apps)/test/face_detector_withface_test_diamondback.bag" />
57

68
<group ns="wide_stereo/left" >
@@ -12,6 +14,8 @@
1214
<arg name="debug_view" value="$(arg gui)" />
1315
<arg name="image" value="image_rect" />
1416
<arg name="use_opencv3" value="$(arg use_opencv3)" />
17+
<arg name="use_opencv3_1" value="$(arg use_opencv3_1)" />
18+
<arg name="use_opencv3_2" value="$(arg use_opencv3_2)" />
1519
</include>
1620

1721
<node name="face_image_viewer" pkg="image_view" type="image_view">

0 commit comments

Comments
 (0)