matlab读取黑白图目标位置的坐标,matlab对图像处理——裁剪 获取灰度图 获取坐标点...
matlab截取圖像Ⅱ
歡迎來到!德萊聯盟 應該是CSDN之bruderlung的博客!
你可以仔細閱讀這篇文章,結合實例初步了解MATLAB的一些功能!
程序要求
建立循環函數,通過程序依此讀取十幅原始圖像,然后將原始圖像轉存為灰度圖像
確定數碼管所顯示數字的四角坐標,然后將其依次輸出
依據之前尋找到的四個坐標,將數字部分以外的圖像設置為黑色;
在(3)的基礎上,通過編寫程序將數字部分轉存為一個較小的圖像(該圖像的尺寸由步驟(3)中的四個坐標計算得到)。
建立循環函數
save_path='D:\picture\'; %獲取圖片所在位置
img_path_list = dir(strcat(save_path,'*.jpg')); %依次僅讀取文件夾中的.jpg格式圖片
img_num=length(img_path_list); %判斷圖片個數
for i = 1:img_num
picture_name = img_path_list(i).name; %獲取圖片的名稱
picture_1 = imread(strcat(save_path,picture_name)); %1.建立循環函數依次讀取原始圖像
end
處理后效果:
確定坐標
ginput函數
功能:允許用戶以交互方式使用鼠標選定要裁剪的區域以此獲取坐標點并以矩形方式裁剪
[x,y]=ginput(4); %獲取數碼管所顯示的數字的四角坐標,獲取坐標時要按照左上,右上,左下,右下的順序方式獲取∵后面涂黑時有局限性
灰度圖
picture_2=rgb2gray(picture_1); %將24位原始圖轉為8位灰度圖
處理后效果:
背景設為黑色
picture_1 = imread(strcat(save_path,picture_name)); %1.建立循環函數依次讀取原始圖像
picture_2=rgb2gray(picture_1); %將24位原始圖轉為8位灰度圖
picture_3 = picture_2;
%對除數字外的圖像進行填充顏色
for m = 1:size(picture_3,1)
for n = 1:size(picture_3,2)
if n < x(1) || n > x(4) || m < y(1) || m > y(4) %不在矩形內的點變為黑色
picture_3(m,n,1) = 0;
end
end
end
imwrite(picture_3,[num2str(i+10),'.jpg']);
處理后效果:
裁剪圖片
imcrop函數
功能:用于返回圖像的一個裁剪區域。可把圖像顯示在一個圖像窗口中
picture_4 = imcrop(picture_2,[x(1),y(1),abs(x(1)-x(4)),abs(y(1)-y(4))]); %對圖像進行截取,(x1,y1)為數字左上角坐標,(x4,y4)為右下角的坐標。abs(x(1)-x(4))為x軸截取的長度,abs(y(1)-y(4))為y軸截取的長度。
處理后效果:
完整代碼
在這里插入代碼片
%必讀:獲取坐標時需要用鼠標點擊四次,分別為數字的四角,獲取坐標時要按照左上,右上,左下,右下的順序方式獲取∵后面涂黑時有局限性
save_path='D:\picture\'; %獲取圖片所在位置
img_path_list = dir(strcat(save_path,'*.jpg')); %依次僅讀取文件夾中的.jpg格式圖片
img_num=length(img_path_list); %判斷圖片個數
for i = 1:img_num
picture_name = img_path_list(i).name; %獲取圖片的名稱
picture_1 = imread(strcat(save_path,picture_name)); %1.建立循環函數依次讀取原始圖像
picture_2=rgb2gray(picture_1); %將24位原始圖轉為8位灰度圖
%size(picture_2); %求出我的圖像的大小
%s=1920
imshow(picture_2)
if i==1 %用if只需要確定一次圖像中數字的四角坐標
[x,y]=ginput(4); %獲取數碼管所顯示的數字的四角坐標,
imwrite(picture_2,[num2str(i),'.jpg']) %灰度圖從01開始命名到10結束
picture_3 = picture_2;
%對除數字外的圖像進行填充顏色
for m = 1:size(picture_3,1)
for n = 1:size(picture_3,2)
if n < x(1) || n > x(4) || m < y(1) || m > y(4) %不在矩形區域內的點變為黑色
picture_3(m,n,1) = 0;
end
end
end
imwrite(picture_3,[num2str(i+10),'.jpg']); %將涂黑的圖片保存并從11開始命名到20結束
picture_4 = imcrop(picture_3,[x(1),y(1),abs(x(1)-x(4)),abs(y(1)-y(4))]);
imwrite(picture_4,[num2str(i+20),'.jpg']); %將截取的數字圖像保存并從21開始命名到30結束
else
imwrite(picture_2,[num2str(i),'.jpg']); %灰度圖從01開始命名到10結束
picture_3 = picture_2;
%對除數字外的圖像進行填充顏色
for m = 1:size(picture_3,1)
for n = 1:size(picture_3,2)
if n < x(1) || n > x(4) || m < y(1) || m > y(4) %不在矩形區域內的點變為黑色
picture_3(m,n,1) = 0;
end
end
end
imwrite(picture_3,[num2str(i+10),'.jpg']); %將涂黑的圖片保存并從11開始命名到20結束
picture_4 = imcrop(picture_3,[x(1),y(1),abs(x(1)-x(4)),abs(y(1)-y(4))]); %對圖像進行截取,(x1,y1)為數字左上角坐標,(x4,y4)為右下角的坐標。abs(x(1)-x(4))為x軸截取的長度,abs(y(1)-y(4))為y軸截取的長度。
imwrite(picture_4,[num2str(i+20),'.jpg']); %將截取的數字圖像保存并從21開始命名到30結束
end
end
[x,y] %矩陣中每一行依次為四點坐標
% 備注:1.剛開始if函數里面只寫了[x,y]=ginput(4)但是運行后無法顯示0的圖像了,由于時間原因所以,就將處理的程序全部復制到i==1時里面
% 2.picture_1:24位rgb圖象 3.picture_2: 8位灰度圖 4.picture_3:黑色背景圖
% 5.picture_4:數字提取圖
總結
以上是生活随笔為你收集整理的matlab读取黑白图目标位置的坐标,matlab对图像处理——裁剪 获取灰度图 获取坐标点...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蔚来回应前实习生遭性侵后受不公正对待一事
- 下一篇: matlab算概率,用matlab计算概