Canny Edge Detector Sample.
#include <string>
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/videoio.hpp>
using namespace cv;
using namespace std;
#define ERROR_CHECK_STATUS(status) \
{ \
vx_status status_ = (status); \
if (status_ != VX_SUCCESS) \
{ \
printf("ERROR: failed with status = (%d) at " __FILE__ "#%d\n", status_, __LINE__); \
exit(1); \
} \
}
#define ERROR_CHECK_OBJECT(obj) \
{ \
vx_status status_ = vxGetStatus((vx_reference)(obj)); \
if (status_ != VX_SUCCESS) \
{ \
printf("ERROR: failed with status = (%d) at " __FILE__ "#%d\n", status_, __LINE__); \
exit(1); \
} \
}
{
(void)context;
(void)ref;
(void)status;
size_t len = strlen(string);
if (len > 0)
{
printf("%s", string);
if (string[len - 1] != '\n') printf("\n");
fflush(stdout);
}
}
int main(
int argc,
char **argv)
{
if (argc < 2)
{
printf(
"Usage:\n"
"./cannyDetect --image <imageName>\n"
"./cannyDetect --live \n");
return 0;
}
int width = 480, height = 360;
output_filtered_image)};
for (
vx_size i = 0; i <
sizeof(nodes) /
sizeof(nodes[0]); i++)
{
}
string option = argv[1];
Mat input;
if (option == "--image")
{
string imageLocation = argv[2];
input = imread(imageLocation.c_str());
if (input.empty())
{
printf("Image not found\n");
return 0;
}
resize(input, input, Size(width, height));
imshow("inputWindow", input);
cv_rgb_image_region.
end_x = width;
cv_rgb_image_region.
end_y = height;
cv_rgb_image_layout.dim_x = input.cols;
cv_rgb_image_layout.dim_y = input.rows;
cv_rgb_image_layout.stride_x = input.elemSize();
cv_rgb_image_layout.stride_y = input.step;
vx_uint8 *cv_rgb_image_buffer = input.data;
&cv_rgb_image_layout, cv_rgb_image_buffer,
void *ptr;
Mat mat(height, width, CV_8U, ptr, addr.
stride_y);
imshow("CannyDetect", mat);
waitKey(0);
}
else if (option == "--live")
{
VideoCapture cap(0);
if (!cap.isOpened())
{
printf("Unable to open camera\n");
return 0;
}
for (;;)
{
cap >> input;
resize(input, input, Size(width, height));
imshow("inputWindow", input);
if (waitKey(30) >= 0) break;
cv_rgb_image_region.
end_x = width;
cv_rgb_image_region.
end_y = height;
cv_rgb_image_layout.
stride_y = input.step;
vx_uint8 *cv_rgb_image_buffer = input.data;
&cv_rgb_image_layout, cv_rgb_image_buffer,
void *ptr;
Mat mat(height, width, CV_8U, ptr, addr.
stride_y);
imshow("CannyDetect", mat);
if (waitKey(30) >= 0) break;
}
}
else
{
printf(
"Usage:\n"
"./cannyDetect --image <imageName>\n"
"./cannyDetect --live \n");
return 0;
}
return 0;
}
int main()
Definition blur_pipeline.cpp:15
#define ERROR_CHECK_OBJECT(obj)
Definition bubble_pop.cpp:28
#define ERROR_CHECK_STATUS(status)
Definition bubble_pop.cpp:20
uint32_t vx_uint32
A 32-bit unsigned value.
Definition vx_types.h:85
size_t vx_size
A wrapper of size_t to keep the naming convention uniform.
Definition vx_types.h:186
vx_enum vx_status
A formal status type with known fixed size.
Definition vx_types.h:550
int32_t vx_int32
A 32-bit signed value.
Definition vx_types.h:105
struct _vx_rectangle_t vx_rectangle_t
The rectangle data structure that is shared with the users. The area of the rectangle can be computed...
char vx_char
An 8 bit ASCII character.
Definition vx_types.h:70
uint8_t vx_uint8
An 8-bit unsigned value.
Definition vx_types.h:75
#define VX_CALLBACK
Defines calling convention for user callbacks.
Definition vx_types.h:63
@ VX_DF_IMAGE_IYUV
A 3 plane of 8-bit 4:2:0 sampled Y, U, V planes. This uses the BT709 full range by default.
Definition vx_types.h:841
@ VX_DF_IMAGE_RGB
A single plane of 24-bit pixel as 3 interleaved 8-bit units of R then G then B data....
Definition vx_types.h:816
@ VX_DF_IMAGE_U8
A single plane of unsigned 8-bit data. The range of data is not specified, as it may be extracted fro...
Definition vx_types.h:855
@ vx_false_e
The "false" value.
Definition vx_types.h:404
@ VX_TYPE_UINT8
A vx_uint8.
Definition vx_types.h:437
@ VX_CHANNEL_Y
Use to extract the LUMA channel, no matter the byte or packing order.
Definition vx_types.h:1323
struct Context * vx_context
An opaque reference to the implementation context.
Definition vx_types.h:274
VX_API_ENTRY vx_context VX_API_CALL vxCreateContext(void)
Creates a vx_context.
VX_API_ENTRY vx_status VX_API_CALL vxReleaseContext(vx_context *context)
Releases the OpenVX object context.
@ VX_READ_ONLY
The memory shall be treated by the system as if it were read-only. If the User writes to this memory,...
Definition vx_types.h:1515
@ VX_WRITE_ONLY
The memory shall be treated by the system as if it were write-only. If the User reads from this memor...
Definition vx_types.h:1519
@ VX_MEMORY_TYPE_HOST
The default memory type to import from the Host.
Definition vx_types.h:1338
VX_API_ENTRY vx_status VX_API_CALL vxVerifyGraph(vx_graph graph)
Verifies the state of the graph before it is executed. This is useful to catch programmer errors and ...
VX_API_ENTRY vx_status VX_API_CALL vxReleaseGraph(vx_graph *graph)
Releases a reference to a graph. The object may not be garbage collected until its total reference co...
VX_API_ENTRY vx_graph VX_API_CALL vxCreateGraph(vx_context context)
Creates an empty graph.
struct Graph * vx_graph
An opaque reference to a graph.
Definition vx_types.h:263
VX_API_ENTRY vx_status VX_API_CALL vxProcessGraph(vx_graph graph)
This function causes the synchronous processing of a graph. If the graph has not been verified,...
VX_API_ENTRY vx_image VX_API_CALL vxCreateVirtualImage(vx_graph graph, vx_uint32 width, vx_uint32 height, vx_df_image color)
Creates an opaque reference to an image buffer with no direct user access. This function allows setti...
struct _vx_imagepatch_addressing_t vx_imagepatch_addressing_t
The addressing image patch structure is used by the Host only to address pixels in an image patch....
VX_API_ENTRY vx_status VX_API_CALL vxUnmapImagePatch(vx_image image, vx_map_id map_id)
Unmap and commit potential changes to a image object patch that were previously mapped....
VX_API_ENTRY vx_status VX_API_CALL vxMapImagePatch(vx_image image, const vx_rectangle_t *rect, vx_uint32 plane_index, vx_map_id *map_id, vx_imagepatch_addressing_t *addr, void **ptr, vx_enum usage, vx_enum mem_type, vx_uint32 flags)
Allows the application to get direct access to a rectangular patch of an image object plane.
struct Image * vx_image
An opaque reference to an image.
Definition vx_types.h:219
VX_API_ENTRY vx_status VX_API_CALL vxReleaseImage(vx_image *image)
Releases a reference to an image object. The object may not be garbage collected until its total refe...
uintptr_t vx_map_id
Holds the address of a variable where the map/unmap functions return a map identifier.
Definition vx_types.h:196
VX_API_ENTRY vx_status VX_API_CALL vxCopyImagePatch(vx_image image, const vx_rectangle_t *image_rect, vx_uint32 image_plane_index, const vx_imagepatch_addressing_t *user_addr, void *user_ptr, vx_enum usage, vx_enum user_mem_type)
Allows the application to copy a rectangular patch from/into an image object plane.
VX_API_ENTRY vx_image VX_API_CALL vxCreateImage(vx_context context, vx_uint32 width, vx_uint32 height, vx_df_image color)
Creates an opaque reference to an image buffer.
@ VX_NOGAP_X
No Gap.
Definition vx_types.h:1969
VX_API_ENTRY void VX_API_CALL vxRegisterLogCallback(vx_context context, vx_log_callback_f callback, vx_bool reentrant)
Registers a callback facility to the OpenVX implementation to receive error logs.
struct Node * vx_node
An opaque reference to a kernel node.
Definition vx_types.h:253
VX_API_ENTRY vx_status VX_API_CALL vxReleaseNode(vx_node *node)
Releases a reference to a Node object. The object may not be garbage collected until its total refere...
VX_API_ENTRY vx_status VX_API_CALL vxSetThresholdAttribute(vx_threshold thresh, vx_enum attribute, const void *ptr, vx_size size)
Sets attributes on the threshold object.
struct Threshold * vx_threshold
The Threshold Object. A thresholding object contains the types and limit values of the thresholding r...
Definition vx_types.h:338
@ VX_THRESHOLD_TYPE_RANGE
A threshold with 2 values (upper/lower). Use with Canny Edge Detection.
Definition vx_types.h:1167
VX_API_ENTRY vx_node VX_API_CALL vxCannyEdgeDetectorNode(vx_graph graph, vx_image input, vx_threshold hyst, vx_int32 gradient_size, vx_enum norm_type, vx_image output)
[Graph] Creates a Canny Edge Detection Node.
@ VX_NORM_L1
The L1 normalization.
Definition vx_types.h:1490
VX_API_ENTRY vx_node VX_API_CALL vxColorConvertNode(vx_graph graph, vx_image input, vx_image output)
[Graph] Creates a color conversion node.
vx_int32 stride_y
Stride in Y dimension in bytes.
Definition vx_types.h:1644
vx_int32 stride_x
Stride in X dimension in bytes.
Definition vx_types.h:1643
vx_uint32 start_x
The Start X coordinate.
Definition vx_types.h:1771
vx_uint32 start_y
The Start Y coordinate.
Definition vx_types.h:1772
vx_uint32 end_y
The End Y coordinate.
Definition vx_types.h:1774
vx_uint32 end_x
The End X coordinate.
Definition vx_types.h:1773
The top level OpenVX Header.
#define VX_THRESHOLD_ATTRIBUTE_THRESHOLD_LOWER
Definition vx_compatibility.h:98
#define VX_THRESHOLD_ATTRIBUTE_THRESHOLD_UPPER
Definition vx_compatibility.h:99
VX_API_ENTRY vx_threshold VX_API_CALL vxCreateThreshold(vx_context c, vx_enum thresh_type, vx_enum data_type)
struct Reference * vx_reference
Definition vx_types.h:173