Image processing commands give black screen display on Raspberry PI (with live camera)

6 views (last 30 days)
Hi,
I work with "Image processing toolbox" and I use a Raspberry Pi as the target device. I would like to deploy an edge detection algorithm to Raspberry and display the result images in each cycle but it gives only a black screen. (I use a camera for the image input.) When I run the algorithm on the host computer and the Raspberry only for I/O ports, the code works well, the camera screen is good and the edge detection part works well, too.
My experiences with the error:
  • When I only use the "rgb2grey" command and I comment out the "edge" command, the algorithm works fine, there is no black screen. The greyscale images are shown on the Raspbian.
  • When I add the "edge" command and deploy it to Raspberry, I can run the ".elf" file and the program starts, but the camera screen only shows a black screen.
  • There is no error message when I deploy the code to the Raspberry, it writes "Succesfully deployment".
  • (I tried the algorithm with few more command from "Image processing toolbox", for example, I used the "imfill" command instead of "edge" command, the result were the same, the camera screen were black on the Raspberry.)
What's wrong with these commands, that cause a black screen display?
The code is:
function edgeDetection()%#codegen
% Create a connection to the Raspberry Pi hardware (I only changed the IP address and password in the forum)
r = raspi('172.%%.%%.%%%','pi','%%%%');
%Define the webcam
w = webcam(r, 'UVC Camera (046d:0825) (usb-0000:01:00.0-1.3):');
% Run the edge detection algorithm on the images captured from the Raspberry Pi camera module.
for k = 1:300
img = snapshot(w);
gray_img = rgb2gray(img);
edges = edge(gray_img);
displayImage(r,edges,'Title','Edge Detection'); %Display the images on the target hardware in each cycle
end
end
I hope that my descrption is clear about the problem.
Thanks for any answer,
Roland
  1 Comment
Prasanth Sunkara
Prasanth Sunkara on 26 Nov 2020
Hi Ronald,
displayImage expects a matrix of data type double in deployment workflow. "edge" function would return a logical matrix. Could you please try converting your "edges" variable to double data types and then pass it to displayImage?
Eg: >> edges = 255 * double(edges);
Hope this helps!
Thanks,
Prasanth

Sign in to comment.

Answers (0)

Categories

Find more on Embedded Coder in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!